我尝试使用代码列出帐户中的所有实例:
for region in boto.ec2.regions(**creds):
print region.name
ec2_conn = boto.ec2.connect_to_region(region.name, **creds)
for instance in ec2_conn.get_only_instances():
print instance
但是在检查区域“us-gov-west-1”时出现错误:
boto.exception.EC2ResponseError:EC2ResponseError:401未经授权
AuthFailure
AWS无法验证提供的访问凭据c873c473-c3b1-4be3-b562-b2e73b21e9c2
据我所知,该地区是一些特殊的政府区域,不允许我使用。但是如何忽视呢?我可以将我的循环包装在try ... except
中,但可能有一些方法可以获得只有可访问区域的列表吗?
UPD:使用以下代码迭代整个区域时:
ec2_conn = boto.ec2.connection.EC2Connection(**creds)
for region in ec2_conn.get_all_regions():
没有给出“us-gov-west-1”地区。但为什么这种方法会产生不同的结果,何时应该使用?
答案 0 :(得分:5)
发现它!
boto.ec2.regions()
为我们提供了所有现有区域的列表,这些区域在库中是硬编码的,并且
boto.ec2.connection.EC2Connection::get_all_regions()
会确实致电DescribeRegions
,以获取当前可用的区域列表。
有人说:读源卢克!