Как использовать boto3 без AWS Vault?

#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