Boto3:动态获取凭据?

新手上路,请多包涵

我正在努力找出如何从我的代码中动态获取我的 aws_access_key_id 和 aws_secret_access_key 。

在 boto2 中,我可以执行以下操作: boto.config.get_value('Credentials', 'aws_secret_access_key') 但我似乎无法在 boto3 中找到类似的方法。如果我查看 boto3.Session()._session._credentials ,我就能找到钥匙,但这对我来说似乎是所有黑客之母,我宁愿不走那条路。

原文由 Mo. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 557
2 个回答

使用临时凭证 通常是最佳做法。您可以使用 STS.get_session_token 获取临时凭证。

编辑:从 这个 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 需要的临时凭证。

原文由 Jordon Phillips 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 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'

原文由 helloV 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进