Boto3: получать учетные данные динамически?
Я изо всех сил пытаюсь выяснить, как я могу получить свои aws_access_key_id и aws_secret_access_key динамически из моего кода.
В boto2 я мог бы сделать следующее: boto.config.get_value('Credentials', 'aws_secret_access_key')
, но я не могу найти аналогичный метод в boto3. Мне удалось найти ключи, если я смотрю в boto3.Session()._session._credentials
, но это кажется матерью всех хаков для меня, и я бы предпочел не идти по этой дороге.
Ответы
Ответ 1
Как правило, рекомендуется использовать временные учетные данные. Вы можете получить временные учетные данные с помощью STS.get_session_token
.
EDIT: с этот PR вы можете получить доступ к текущим учетным данным сеанса следующим образом:
import boto3
session = boto3.Session()
credentials = session.get_credentials()
# Credentials are refreshable, so accessing your access key / secret key
# separately can lead to a race condition. Use this to get an actual matched
# set.
credentials = credentials.get_frozen_credentials()
access_key = credentials.access_key
secret_key = credentials.secret_key
redshift = session.client('redshift')
...
Я бы порекомендовал использовать временные учетные данные в соответствии с тем, что нужно красному значению.
Ответ 2
Используйте botocore
>>> import botocore.session
>>> session = botocore.session.get_session()
>>> session.get_credentials().access_key
'AKIAABCDEF6RWSGI234Q'
>>> session.get_credentials().secret_key
'abcdefghijkl+123456789+qbcd'
>>> session.get_config_variable('region')
'us-east-1'