更新于 2015-02-06,修正于 2015-03-19通过以下顶部部分
boto 和 AWSCLI 凭证的新标准化共享 (boto>==2.29.0)
自 boto 2.29 以来,出现了一种新的简单方法来共享 BOTO 和 AWS CLI 凭证,如 Mike 所描述
加纳特在在 AWS 中管理凭证的全新标准化方法
软件开发工具包 http://blogs.aws.amazon.com/security/post/Tx3D6U6WSFGOK2H/A-New-and-Standardized-Way-to-Manage-Credentials-in-the-AWS-SDKs
目标是:
- 允许通过 boto、AWSCLI 和可能的其他 SDK 共享凭证
- 将所有配置保存在单个文件中,位于用户配置文件目录中
- 允许使用命名配置文件
- 保持尽可能简单(例如防止与其他方法发生冲突)
创建凭证文件
创建文件~/.aws/credentials
(Mac/Linux)或%USERPROFILE%\.aws\credentials
(Windows)作为
如下:
[default]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
region = eu-west-1
[jekyl]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
region = eu-west-1
[hyde]
aws_access_key_id = AxxxZ
aws_secret_access_key = CxxxZ
region = eu-west-1
从现在开始,您可以使用如下代码:
使用默认配置文件
import boto
con = boto.connect_s3()
使用由以下设置的显式配置文件AWS_PROFILE
环境。变量
(这是我最喜欢的选项,将配置文件名称保留在代码之外,并且仍然让我的应用程序的部署者有机会选择特定的配置文件)
$ export AWS_PROFILE=jekyl
并使您的代码像以前一样简单:
import boto
con = boto.connect_s3()
在代码中指定显式配置文件
import boto
con = boto.connect_s3(profile_name="jekyl")
这就是您通常需要做的全部
选择正确凭证的逻辑在博托问题#2292 https://github.com/boto/boto/pull/2292如下:
加载顺序从最高优先级到最低优先级:
1.直接从代码中传递
密钥/秘密的环境变量
配置文件的环境变量
共享凭证文件显式配置文件
共享凭证文件默认配置文件
配置文件显式配置文件
配置文件凭据部分
从代码传递的配置文件会覆盖环境变量中的任何设置。
为了保持事情干净和简单,最好摆脱旧的方法,所以删除任何旧的样式文件(例如~/.aws/config
or ~/.boto
), 取消设置环境变量BOTO_CONFIG
如果设置并且
也可能是该变量指向的文件。
这就是 boto >=2.29.0 的全部内容
注意:不要尝试通过 env.variable 控制配置文件的位置(例如AWS_CONFIG_FILE
),它没有按预期工作。
使用 boto 配置文件 (boto>=2.24.0)
以下描述仅供那些无法升级到 boto 2.29.0 或更高版本的人使用
从 boto 2.24.0 开始,有一个功能称为profile_name
In your ~/.boto
文件中您已经有 [Credentials] 部分,这将作为后备选项,然后 [profile ] 部分用于不同的配置文件:
[Credentials]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile jekyl]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile hyde]
aws_access_key_id = AxxxZ
aws_secret_access_key = CxxxZ
然后,在创建连接时,您可以使用以下方式:
import boto
con = boto.connect_s3(profile_name="jekyl")
请注意,此功能自 boto 2.24.0 起可用。
教程在这里http://docs.pythonboto.org/en/latest/boto_config_tut.html?highlight=profile http://docs.pythonboto.org/en/latest/boto_config_tut.html?highlight=profile
甚至还有一些关于使用钥匙圈的注释,但我将首先习惯这个配置文件的东西,这是我多年来梦想的。
与 AWSCLI 共享配置文件
AWSCLI 成为了非常出色的工具。由于配置文件的格式几乎相同,我按以下方式使用它:
- keep
~/.aws/config
由 AWSCLI 创建的文件(这是默认位置)
- 复制部分
[default]
并将其重命名为[Credentials]
(在里面保留相同的值)。
- 添加我使用的任何配置文件
- set
BOTO_CONFIG
变量指向这个~/.aws/config
file.
The ~/.boto
然后将成为包含以下内容的`~/.aws/config:
[default]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[Credentials]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile jekyl]
aws_access_key_id = AxxxA
aws_secret_access_key = Zxxxr
[profile hyde]
aws_access_key_id = AxxxZ
aws_secret_access_key = CxxxZ
这样,它就可以为 AWSCLI 和 boto 共享,包括配置文件。