コードからaws_access_key_idとaws_secret_access_keyを動的に取得する方法を見つけるのに苦労しています。
Boto2では次のことができました。boto.config.get_value('Credentials', 'aws_secret_access_key')
ですが、boto3で同様のメソッドを見つけることができないようです。 boto3.Session()._session._credentials
を見るとキーを見つけることができましたが、それはすべてのハックの母のように思え、私はその道をたどりたくありません。
通常は、 一時的な認証情報を使用 のみがベストプラクティスです。 STS.get_session_token
で一時的な認証情報を取得できます。
編集: this 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')
...
私はまだ、redshiftが必要とするものに正確にスコープされた一時的な資格情報を使用することをお勧めします。
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'