如何调试 Amazon SQS 订阅 SNS 的问题

How to debug issues with Amazon SQS subscription to SNS

我想在托管在 Amazon Web Services 上的服务中构建一个 pub/sub 消息传递系统,创建订阅 SNS 主题的 SQS 队列似乎是显而易见的方向,但我做不到让它正常工作。

到目前为止,我的代码会在启动时查找主题和队列,并创建任何缺失的内容。这似乎可行,我可以在 AWS 管理控制台中看到 SNS 主题和 SQS 队列,我可以看到该队列订阅了该主题,但是当我向该主题发布消息时,队列中没有任何内容。

即使我使用管理控制台中的 'Publish' 按钮手动发布消息,队列仍然是空的。

我将主题和队列的权限都更改为 'everyone can do everything' 只是为了消除这种可能性。我的代码收到一个响应发布的消息 ID,并且没有错误,每次 API 调用 returns 200(OK)状态。

从这里我可以从哪里弄清楚为什么它不起作用?

几个选项 -

  1. 启用 CloudTrail 并监控日志
  2. 查看 CloudWatch 日志以确定任何权限问题
  3. 使用 AWS 支持开具票证。

理想情况下,您不会在应用程序中创建资源,而是将它们分离到 CloudFormation 或至少 CLI 脚本中。如果您需要动态创建这些资源的能力,使用 AWS IoT Message Broker 可能是更好的选择,因为它支持临时消息资源 - http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html

SNS --> SQS link 有一些陷阱:

如果所有这些信息都合并到一个页面中,肯定会更容易理解。对我来说杀手是#3 - 也许其中之一将是您问题的解决方案。

我在 SQS 订阅方面遇到了类似的问题。事实证明,如果我从 SQS 编辑器创建订阅,它会起作用,但如果我从 SNS 创建屏幕创建它,它会接受消息但从不将其转发到队列。

要获取有关特定故障的更多详细信息,您可以打开 SNS "Delivery status logging".