use*_*694 3 python amazon-ec2 boto amazon-web-services
我在使用Boto的EC2位时遇到了一些问题(Boto v2.8.0,Python v2.6.7).
第一个命令返回S3存储桶列表 - 一切都很好!获取EC2实例列表的第二个命令会突然显示403,"查询字符串身份验证需要签名,过期和AWSAccessKeyId参数"
s3_conn = S3Connection(AWSAccessKeyId, AWSSecretKey)
print s3_conn.get_all_buckets()
ec2_conn = EC2Connection(AWSAccessKeyId, AWSSecretKey)
print ec2_conn.get_all_instances()
Run Code Online (Sandbox Code Playgroud)
此外,我的凭据都很好(完全管理员) - 我使用Ruby aws-sdk测试它们,EC2和S3都可以正常工作.
我还注意到ec2_conn对象中的host属性是s3-eu-west-1.amazonaws.com,"s3"......?那肯定是错的?我已经尝试将它复制到正确的终点,但没有运气.
任何帮助将非常感谢谢谢
这是我用来列出可能多个区域的所有实例的一些工作代码.它做的比你需要的多得多,但也许你可以把它削减到你想要的.
#!/usr/bin/python
import boto
import boto.ec2
import sys
class ansi_color:
red = '\033[31m'
green = '\033[32m'
reset = '\033[0m'
grey = '\033[1;30m'
def name(i):
if 'Name' in i.tags:
n = i.tags['Name']
else:
n = '???'
n = n.ljust(16)[:16]
if i.state == 'running':
n = ansi_color.green + n + ansi_color.reset
else:
n = ansi_color.red + n + ansi_color.reset
return n
def pub_dns( i ):
return i.public_dns_name.rjust(43)
def pri_dns( i ):
return i.private_dns_name.rjust(43)
def print_instance( i ):
print ' ' + name(i) + '| ' + pub_dns(i) + ' ' + pri_dns(i)
regions = sys.argv[1:]
if len(regions)==0:
regions=['us-east-1']
if len(regions)==1 and regions[0]=="all":
rr = boto.ec2.regions()
else:
rr = [ boto.ec2.get_region(x) for x in regions ]
for reg in rr:
print "========"
print reg.name
print "========"
conn = reg.connect()
reservations = conn.get_all_instances()
for r in reservations:
# print ansi_color.grey + str(r) + ansi_color.reset
for i in r.instances:
print_instance(i)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8813 次 |
| 最近记录: |