gpt4 book ai didi

python - 如何让 Boto 返回 EC2 实例 - S3 工作正常

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:24 25 4
gpt4 key购买 nike

我在使用 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()

此外,我的凭据都很好(完全管理员权限)- 我使用 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)

关于python - 如何让 Boto 返回 EC2 实例 - S3 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15411070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com