Доступ к S3 изнутри EKS с помощью boto3

У меня есть приложение Python, развернутое на EKS (Elastic Kubernetes Service). Это приложение сохраняет большие файлы в корзине S3 с помощью AWS SDK для Python (boto3). И кластер EKS, и корзина S3 находятся в одном регионе.

Мой вопрос: как по умолчанию осуществляется связь между двумя службами (EKS и S3)? Общаются ли обе службы напрямую и внутри через сеть Amazon, или они взаимодействуют извне через Интернет?

Если они общаются через Интернет, есть ли пошаговое руководство по установлению прямого внутреннего соединения между обеими службами?

Это похоже на вопрос, на который техническая поддержка aws должна ответить вам как клиенту.

Pepe N O 05.04.2022 17:25

AWS не будет поддерживать базовый пакет.

Franxi Hidro 05.04.2022 18:44

Если вы не видите ссылки в комментариях ниже, соответствующие ссылки: docs.aws.amazon.com/eks/latest/userguide/… и aws.github.io/aws-eks-best-practices/security/docs/iam.

jordanm 05.04.2022 19:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
40
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете добавить доступ S3 к своей роли IAM узла EKS, эта ссылка показывает, как добавить доступ к реестру ECR к роли IAM узла EKS, но это то же самое для S3.

Другой способ — сделать переменные среды доступными в вашем контейнере, см. эта ссылка, хотя я бы рекомендовал первый способ.

Вы даете разрешение узлам, а не модулям, я не уверен, что это сработает. Я рекомендую использовать IRSA: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-f‌​or-service-accounts.‌​html и ему потребуется конечная точка s3 vpc для внутренней связи.

Franxi Hidro 05.04.2022 18:41

это то, что я сказал, цитируя: «Вы можете добавить доступ S3 к своей роли IAM узла EKS»

Antoine Baqain 05.04.2022 18:45

Вы проверили это? Создайте модуль busybox или awscli и получите объект из S3.

Franxi Hidro 05.04.2022 18:47

Я этого не делаю. Вы предоставляете такое разрешение, и если оно работает, все модули могут получить доступ к этому S3. Где безопасность?

Franxi Hidro 05.04.2022 18:52

Это ваше решение, и я предоставил лучшее.

Franxi Hidro 05.04.2022 18:58

Предоставление вашим модулям доступа к роли IAM вашего узла является серьезной проблемой безопасности. Если вы выберете этот подход, все модули и службы в вашем кластере будут иметь одинаковые разрешения IAM. aws.github.io/aws-eks-best-practices/security/docs/iam

jordanm 05.04.2022 19:15

Мой первый ответ был на точный вопрос. Мой второй - альтернативный.

Antoine Baqain 05.04.2022 19:21

Вы не совсем ясно выразились в своем ответе. Даже при повторном чтении кажется, что вы рекомендуете изменить роль узла, чтобы разрешить поду доступ к S3 (что даже не сработает, если вы будете следовать руководству по передовым методам). Рекомендации для статических ключей доступа не намного лучше.

jordanm 05.04.2022 19:24

пришлите мне "руководство по лучшим практикам", которому вы следуете, пожалуйста.

Antoine Baqain 05.04.2022 19:27

Ах, теперь я знаю, вы были от парней; вы запускаете все свои развертывания в одном пуле узлов?

Antoine Baqain 05.04.2022 19:36
aws.github.io/aws-eks-best-practices/security/docs/iam — официальное руководство по рекомендациям, опубликованное AWS.
jordanm 06.04.2022 16:58
Ответ принят как подходящий

how is communication between the two services (EKS and S3) handled by default?

По умолчанию топология сети вашего EKS предлагает маршрут к общедоступному AWS S3 конечные точки.

Do both services communicate directly and internally through the Amazon network, or do they communicate externally via the Internet?

Ваш кластер должен иметь сетевой доступ к указанным общедоступным конечным точкам AWS S3. Например, рабочие узлы, работающие в общедоступной подсети, или использование шлюза NAT в частной подсети.

...is there a step by step guide on how to establish a direct internal connection between both services?

Вы создаете конечные точки VPC для S3 в VPC, в котором работает ваш EKS, чтобы гарантировать, что сетевое взаимодействие с S3 останется в сети AWS. Конечные точки VPC для S3 поддерживают оба типа интерфейс и шлюз. Попробуйте этот статья, чтобы узнать об основных конечных точках S3, вы можете использовать тот же метод для создания конечных точек в VPC, где работает ваш EKS. Затем запрос к S3 от ваших модулей будет использовать конечную точку для обращения к S3 в сети AWS.

Другие вопросы по теме