Как использовать boto3 без AWS Vault? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть следующий метод, который работает в 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 как в boto2.

1 Ответ

1 голос
/ 17 апреля 2019

Для кода, работающего на экземпляре Amazon EC2:

  • Создание роли IAM и назначение соответствующих разрешений
  • Свяжите роль с экземпляром Amazon EC2
  • Любой код, выполняющийся на экземпляре, который вызывает AWS SDK, автоматически получает учетные данные, связанные с ролью
  • Нет необходимости указывать ключ доступа, секретный ключ или роль в файлах конфигурации / учетных данных

См .: Роли IAM для Amazon EC2 - Amazon Elastic Compute Cloud

Если вы выполняете код на компьютере, отличном от EC2, вам потребуются записи в файлах config / credentials. Это будет включать как минимум ключ доступа и секретный ключ, связанный с пользователем IAM. Если затем вы захотите использовать роль IAM, код должен будет AssumeRole() использовать эти учетные данные.

...