2014-12-30 32 views
2

我目前需要连接到一个fake_sqs服务器用于开发目的,但我找不到一个简单的方法指定端点到boto.sqs连接。目前在java和node.js中有许多方法可以指定队列端点,并通过传递类似'localhst:someport'的东西来连接我自己的sqs-like实例。我试着博托如下:boto.sqs连接到非aws端点

fake_region = regioninfo.SQSRegionInfo(name=name, endpoint=endpoint) 
conn = fake_region.connect(aws_access_key_id="TEST", aws_secret_access_key="TEST", port=9324, is_secure=False); 

然后:

queue = connAmazon.get_queue('some_queue') 

,但它无法检索队列对象,返回None。有没有人获得连接到自己的sqs实例?

+0

您收到什么错误?你为“端点”提供了什么价值?请勿将该端口包含在该值中。该端口应该作为一个单独的''port''参数来包含。另外,你是否试图通过HTTP或HTTPS连接?如果HTTP,指定''is_secure = False''。 – garnaat

+0

是的,正如在fake_region.connect调用中指定的那样。返回的队列是None – dnul

回答

2

这里是如何创建连接到fake_sqs的SQS连接:

region = boto.sqs.regioninfo.SQSRegionInfo(
    connection=None, 
    name='fake_sqs', 
    endpoint='localhost', # or wherever fake_sqs is running 
    connection_cls=boto.sqs.connection.SQSConnection, 
) 

conn = boto.sqs.connection.SQSConnection(
    aws_access_key_id='fake_key', 
    aws_secret_access_key='fake_secret', 
    is_secure=False, 
    port=4568, # or wherever fake_sqs is running 
    region=region, 
) 

region.connection = conn 

# you can now work with conn 
# conn.create_queue('test_queue') 

注意的是,在写这篇文章的时候,fake_sqs库不能正确响应GET请求,该是多么博托品牌许多要求。您可以在此处安装已修补此功能的叉:https://github.com/adammck/fake_sqs