在我的python代码中,我需要提取AWS凭证AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID它们存储在纯文本文件中,如下所述:https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html
我知道文件的名称:AWS_SHARED_CREDENTIALS_FILE配置文件的名称:AWS_PROFILE.
我目前的方法是自己在python中读取和解析该文件,以获得AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID。
但我希望已经有标准的方法来获得它使用boto3或其他一些库。请建议。
像这样的东西对你有用吗,还是我误解了这个问题?基本上是为适当的配置文件(我猜是默认的)启动一个会话,然后从凭据对象中查询这些值:
session = boto3.Session(profile_name=<...your-profile...>)
credentials = session.get_credentials()
print("AWS_ACCESS_KEY_ID = {}".format(credentials.access_key))
print("AWS_SECRET_ACCESS_KEY = {}".format(credentials.secret_key))
print("AWS_SESSION_TOKEN = {}".format(credentials.token))
据我所知,AWS凭证文件使用标准的INI文件格式。您可以使用configparser
轻松解析文件。请参考:https://docs.python.org/3/library/configparser.html.
对于boto3,如果你把它放在标准区域,它会自动加载。
Boto3在搜索凭据时将查找多个位置。Boto3查找凭证的机制是搜索通过一个可能的位置列表,并停止一旦它找到凭证。Boto3搜索凭据的顺序是:
- 将凭据作为参数传递给bottom .client()方法
- 凭据作为创建会话对象时的参数
<- 环境变量/gh>
- 共享凭证文件(~/.aws/credentials)
- AWS配置文件(~/.aws/config)
- 假设角色提供者
- Boto2配置文件(/etc/boto.cfg和~/.boto)
- 配置了IAM角色的Amazon EC2实例上的实例元数据服务
参考:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html