【问题标题】:boto.sqs connect to non-aws endpointboto.sqs 连接到非 aws 端点
【发布时间】:2015-01-16 03:26:35
【问题描述】:

我目前需要连接到 fake_sqs 服务器以用于开发目的,但我找不到一种简单的方法来指定 boto.sqs 连接的端点。目前在 java 和 node.js 中,有一些方法可以指定队列端点,通过传递类似“localhst:someport”的东西,我可以连接到我自己的类似 sqs 的实例。我用 boto 尝试了以下操作:

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')

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

【问题讨论】:

  • 您遇到什么错误?你为endpoint 提供了什么价值?不要在该值中包含端口。该端口应作为单独的port 参数包含在内。另外,您是否尝试通过 HTTP 或 HTTPS 连接?如果是 HTTP,请指定 is_secure=False
  • 是的,在 fake_region.connect 调用中指定。返回的队列为无

标签: amazon-web-services boto amazon-sqs


【解决方案1】:

以下是创建连接到 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 请求,这就是 boto 发出许多请求的方式。您可以在此处安装已修补此功能的分支:https://github.com/adammck/fake_sqs

【讨论】:

  • 非常感谢,伙计!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
相关资源
最近更新 更多