在python2 boto中使用aws配置文件

时间:2015-05-19 15:47:31

标签: python amazon-web-services amazon-ec2 boto aws-ec2

我喜欢我的python脚本(连接到aws)来使用〜/ .aws / credentials中的aws配置文件

所以,我有〜/ .aws / credentials文件:

[default]
aws_access_key_id = XXX
aws_secret_access_key = AAA
region = eu-west-1

[test]
aws_access_key_id = WWW
aws_secret_access_key = ZZZ
region = eu-west-1

我的python代码

import boto.ec2

conn = boto.ec2.EC2Connection(profile_name='test')
print conn
print conn.get_all_instances()

输出

EC2Connection:ec2.us-east-1.amazonaws.com
[]

所以,它似乎没有从配置中获取配置文件。该地区是错误的。

env | grep -i aws <- returns nothing

我错过了什么?

谢谢。

=====更新=====

我也有〜/ .aws / config文件,看起来像

⟩ cat config
[default]
output = text
region = eu-west-1

[profile test]
output = text
region = eu-west-1

=====更新=====

显然,它需要连接细节..但不是区域。所以,如果我这样做

reg = next(x for x in boto.ec2.regions() if x.name=='eu-west-1')

conn = boto.ec2.EC2Connection(profile_name='test', region=reg)
print conn
print conn.get_all_instances()

我可以获得实例列表。

所以,问题是如何获得默认的&#39;区域&#39;来自AWS config / credentials。

1 个答案:

答案 0 :(得分:2)

credentials文件应该仅用于凭据。如果要为配置文件提供其他属性,则应在~/.aws/config文件中执行此操作。因此,在您的情况下,您将创建一个包含以下内容的配置文件:

[default]
region = eu-west-1

[test]
region = eu-west-1