web-dev-qa-db-fra.com

Boto3: obtenir des informations d'identification de manière dynamique?

J'ai du mal à découvrir comment obtenir dynamiquement mon aws_access_key_id et aws_secret_access_key à partir de mon code.

Dans boto2, je pouvais faire ce qui suit: boto.config.get_value('Credentials', 'aws_secret_access_key') mais je n'arrive pas à trouver une méthode similaire dans boto3. J'ai pu trouver les clés si je regarde dans boto3.Session()._session._credentials mais cela me semble être la mère de tous les hacks et je préférerais ne pas aller dans cette voie.

24
Mo.

Il est généralement recommandé de ne --- tiliser des informations d'identification temporaires . Vous pouvez obtenir des informations d'identification temporaires avec STS.get_session_token .

EDIT: À partir de ce PR , vous pouvez accéder aux informations d'identification de session en cours comme suit:

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')
...

Je recommanderais toujours d'utiliser des informations d'identification temporaires limitées à ce dont a besoin redshift.

33
Jordon Phillips

Utilisez 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'
14
helloV