2015-05-19 68 views
4

我想我的Python脚本(连接到AWS)使用AWS的档案,从中〜/ .aws /凭证使用AWS型材在python2博托

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

[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 

我错过了什么?

谢谢。

===== UPDATE =====

我有一个〜/ .aws/config文件看起来太像

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

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

===== UPDATE ==== =

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

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() 

我可以得到一个实例列表。

所以,问题是如何从AWS config/credentials中获取默认的'region'。

+0

我注意到了同样的问题。如果有解决方案,我很好奇。 –

回答

1

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

[default] 
region = eu-west-1 

[test] 
region = eu-west-1 
+0

谢谢。我已经有配置文件,它定义了区域。用它更新了问题。 – cyrillk