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