如何调试 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)状态。
从这里我可以从哪里弄清楚为什么它不起作用?
几个选项 -
- 启用 CloudTrail 并监控日志
- 查看 CloudWatch 日志以确定任何权限问题
- 使用 AWS 支持开具票证。
理想情况下,您不会在应用程序中创建资源,而是将它们分离到 CloudFormation 或至少 CLI 脚本中。如果您需要动态创建这些资源的能力,使用 AWS IoT Message Broker 可能是更好的选择,因为它支持临时消息资源 - http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html
SNS --> SQS link 有一些陷阱:
- "Amazon SNS isn't currently compatible with FIFO queues." 根据他们 Subscribing an Amazon SQS Queue to an Amazon SNS Topic Tutorial
上的说明
- 您必须 fiddle 具有 IAM 权限(请参阅 Sending Amazon SNS Messages to Amazon SQS Queues 上的页面)
- 您无法将消息发送到加密队列(请参阅他们的 Server-Side Encryption 页面)
如果所有这些信息都合并到一个页面中,肯定会更容易理解。对我来说杀手是#3 - 也许其中之一将是您问题的解决方案。
我在 SQS 订阅方面遇到了类似的问题。事实证明,如果我从 SQS 编辑器创建订阅,它会起作用,但如果我从 SNS 创建屏幕创建它,它会接受消息但从不将其转发到队列。
要获取有关特定故障的更多详细信息,您可以打开
SNS "Delivery status logging".
我想在托管在 Amazon Web Services 上的服务中构建一个 pub/sub 消息传递系统,创建订阅 SNS 主题的 SQS 队列似乎是显而易见的方向,但我做不到让它正常工作。
到目前为止,我的代码会在启动时查找主题和队列,并创建任何缺失的内容。这似乎可行,我可以在 AWS 管理控制台中看到 SNS 主题和 SQS 队列,我可以看到该队列订阅了该主题,但是当我向该主题发布消息时,队列中没有任何内容。
即使我使用管理控制台中的 'Publish' 按钮手动发布消息,队列仍然是空的。
我将主题和队列的权限都更改为 'everyone can do everything' 只是为了消除这种可能性。我的代码收到一个响应发布的消息 ID,并且没有错误,每次 API 调用 returns 200(OK)状态。
从这里我可以从哪里弄清楚为什么它不起作用?
几个选项 -
- 启用 CloudTrail 并监控日志
- 查看 CloudWatch 日志以确定任何权限问题
- 使用 AWS 支持开具票证。
理想情况下,您不会在应用程序中创建资源,而是将它们分离到 CloudFormation 或至少 CLI 脚本中。如果您需要动态创建这些资源的能力,使用 AWS IoT Message Broker 可能是更好的选择,因为它支持临时消息资源 - http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html
SNS --> SQS link 有一些陷阱:
- "Amazon SNS isn't currently compatible with FIFO queues." 根据他们 Subscribing an Amazon SQS Queue to an Amazon SNS Topic Tutorial 上的说明
- 您必须 fiddle 具有 IAM 权限(请参阅 Sending Amazon SNS Messages to Amazon SQS Queues 上的页面)
- 您无法将消息发送到加密队列(请参阅他们的 Server-Side Encryption 页面)
如果所有这些信息都合并到一个页面中,肯定会更容易理解。对我来说杀手是#3 - 也许其中之一将是您问题的解决方案。
我在 SQS 订阅方面遇到了类似的问题。事实证明,如果我从 SQS 编辑器创建订阅,它会起作用,但如果我从 SNS 创建屏幕创建它,它会接受消息但从不将其转发到队列。
要获取有关特定故障的更多详细信息,您可以打开 SNS "Delivery status logging".