#python #amazon-web-services #boto3 #boto
#python #amazon-веб-сервисы #boto3 #boto
Вопрос:
У меня есть следующий метод, который работает на Python:
def connect_s3_boto3():
try:
os.environ['AWS_PROFILE'] = "a9e"
s3 = boto3.resource('s3')
return s3
except:
raise
Проблема в том, что работает с использованием ~/.aws/config
:
[profile home]
aws_access_key_id=ID
aws_secret_access_key=SECRET
[profile a9e]
region=eu-west-1
role_arn=DAROLE
source_profile=home
Итак, у меня есть ряд сомнений. В производственной среде, где я хочу использовать этот метод, мне нужно установить AWS Vault? Другой альтернативы нет? Например, используя IAM_ROLE
as in boto2
.
Комментарии:
1. Я уже использовал boto3 в своем коде на Python, и он работает. При условии, что ваш ресурс, использующий этот код (например, лямбда-выражение), имеет правильную роль. Итак, для вашего примера выше, если бы вы должны были запустить это в лямбде, это завершилось бы неудачей — если только вы не дали лямбде роль для использования S3.
2. @Joe В этом случае я имею в виду инфраструктуру с Дженкинсом, которая каждый раз запускает скрипт, а не лямбда-функцию. Итак, как вы назначаете эту роль?
3. Если вы запускаете скрипты на экземпляре EC2 (скажем, например, Jenkins был установлен на EC2 и запускал скрипты), тогда этому экземпляру EC2 должна быть назначена роль, которая имеет правильные разрешения на чтение / запись в S3. Вы можете создать роль и разрешения в консоли AWS в разделе IAM. Затем вы можете назначить роль экземпляру EC2 на панели мониторинга EC2 из консоли.
Ответ №1:
Для кода, работающего на экземпляре Amazon EC2:
- Создайте роль IAM и назначьте соответствующие разрешения
- Свяжите роль с экземпляром Amazon EC2
- Любой код, запущенный на экземпляре, который вызывает AWS SDK, автоматически получит учетные данные, связанные с ролью
- Нет необходимости указывать ключ доступа, секретный ключ или роль в файлах конфигурации / учетных данных
См.: Роли IAM для Amazon EC2 — Amazon Elastic Compute Cloud
Если вы запускаете код на компьютере, отличном от EC2, вам понадобятся записи в файлах конфигурации / учетных данных. Для этого потребуется как минимум ключ доступа и секретный ключ, связанный с пользователем IAM. Если вы затем захотите использовать роль IAM, код должен будет AssumeRole()
использовать эти учетные данные.
Комментарии:
1. Спасибо за ваш ответ @JohnRotenstein