web-dev-qa-db-ja.com

Boto3:資格情報を動的に取得しますか?

コードからaws_access_key_idとaws_secret_access_keyを動的に取得する方法を見つけるのに苦労しています。

Boto2では次のことができました。boto.config.get_value('Credentials', 'aws_secret_access_key')ですが、boto3で同様のメソッドを見つけることができないようです。 boto3.Session()._session._credentialsを見るとキーを見つけることができましたが、それはすべてのハックの母のように思え、私はその道をたどりたくありません。

24
Mo.

通常は、 一時的な認証情報を使用 のみがベストプラクティスです。 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が必要とするものに正確にスコープされた一時的な資格情報を使用することをお勧めします。

33
Jordon Phillips

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