首页
学习
活动
专区
圈层
工具
发布

boto误差
EN

Stack Overflow用户
提问于 2013-12-13 14:17:13
回答 1查看 463关注 0票数 1

我的问题最好用以下脚本来描述:

代码语言:javascript
复制
import boto
boto.__version__
# OUT: '2.19.0'
from boto.ec2.connection import EC2Connection
ec2 = EC2Connection(**creds)
regions = ec2.get_all_regions()
from boto.sqs.connection import SQSConnection
regions[0]
# OUT: RegionInfo:eu-west-1
sqs = SQSConnection(region=regions[0], **creds)
sqs.get_all_queues()
# OUT: Traceback (most recent call last):
# OUT:   File "<input>", line 1, in <module>
# OUT:   File "/opt/zenoss/lib/python2.7/site-packages/boto/sqs/connection.py", line 338, in get_all_queues
# OUT:     return self.get_list('ListQueues', params, [('QueueUrl', Queue)])
# OUT:   File "/opt/zenoss/lib/python2.7/site-packages/boto/connection.py", line 1119, in get_list
# OUT:     raise self.ResponseError(response.status, response.reason, body)
# OUT: SQSError: SQSError: 400 Bad Request
# OUT: <?xml version="1.0" encoding="UTF-8"?>
# OUT: <Response><Errors><Error><Code>NoSuchVersion</Code><Message>The requested version (2012-11-05) of service AmazonEC2 does not exist</Message></Error></Errors><RequestID>1600907e-6780-46f5-b5e6-e647a660abf8</RequestID></Response>

我无法为AWS或boto找到有关此错误的含义以及如何修复它的文档。那是boto的臭虫吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 16:07:53

上述代码的问题是,来自get_all_regions()模块的EC2调用返回由区域名称和区域端点组成的RegionInfo对象列表。但是端点是用于EC2服务,而不是SQS。因此,如果将该RegionInfo传递给SQSConnection构造函数,它最终将尝试对EC2端点发出NoSuchVersion请求,这将导致NoSuchVersion错误。

我会这样做:

代码语言:javascript
复制
import boto.sqs

sqs = boto.sqs.connect_to_region('eu-west-1')
sqs.get_all_queues()

类似地,如果您需要一个EC2连接:

代码语言:javascript
复制
import boto.ec2

ec2 = boto.ec2.connect_to_region('eu-west-1')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20568679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档