Как правило, безопасность ставить учетные данные в код вашей программы плохо.Лучше хранить их в файле конфигурации.Это можно сделать с помощью команды Интерфейс командной строки AWS (CLI) aws configure
.
После сохранения учетных данных таким образом любой AWS SDK (например, boto3) автоматически получитучетные данные без необходимости ссылаться на них в коде.
См .: Настройка интерфейса командной строки AWS CLI - AWS
В файле конфигурации имеется дополнительная возможность, которая заключается в том, что позволяет вам сохранить роль, которую вы хотите занять .Это можно сделать, указав профиль с Роль ARN:
# In ~/.aws/credentials:
[development]
aws_access_key_id=foo
aws_access_key_id=bar
# In ~/.aws/config
[profile crossaccount]
role_arn=arn:aws:iam:...
source_profile=development
source_profile
указывает на профиль, который содержит учетные данные, которые будут использоваться для вызова AssumeRole()
, а role_arn
указываетпредполагаемая роль.
См .: Предположим, поставщик роли
Наконец, вы можете указать boto3 использовать этот конкретный профиль для учетных данных:
session = boto3.Session(profile_name='crossaccount')
# Any clients created from this session will use credentials
# from the [crossaccount] section of ~/.aws/credentials.
dev_s3_client = session.client('s3')
Альтернативой всему вышесказанному (что boto3 делает для вас) является вызов assume_role()
в вашем коде, а затем использование временных учетных данных, которые возвращаются, чтобы определить новый session
, который вы можете использовать дляподключиться к услуге.Однако описанный выше метод с использованием профилей намного проще.