在
AWS
上,我正在尝试创建一个 cloudwatch
警报,向 sns
主题发送通知,进而触发订阅该主题的 lambda
函数,但遇到了一些问题我的 lambda
永远不会被触发。我已经遵循了几个关于如何执行此操作的教程,我已经手动测试了 sns -lambda
连接,这就像将通知触发器附加到 cloudwatch
上一样有效。
我已经完成了这一切
cloudformation
。
我还尝试从
cloudwatch
控制台手动配置它,然后注意到一些奇怪的事情。在 Send a notification to
选择框下方,如下图所示,有一条消息显示 Only email lists for this account are available
。所以我猜测,在这个帐户的某个地方,有一个奇怪的设置需要更改?
如果这仍然与 OP 或其他人相关,我认为问题是 CloudWatch 需要发布到 SNS 主题的权限。
有关设置的更多信息可以在此处找到:通知用户警报更改
更新答案:
CloudWatch 警报实际上处于“警报”状态吗?您可以再添加 2 个分别由“正常”和“数据不足”状态触发的通知吗?
通过阅读原帖,SNS 应该拥有调用 Lambda 函数的正确权限。
之前的回答:
这是一条一般消息,与您的 SNS 主题设置无关。我认为这意味着只有选择加入该 SNS 主题的电子邮件才会收到电子邮件。
问:Amazon SNS 如何验证订阅请求以确保通知不会作为垃圾邮件发送给用户?
作为订阅注册的一部分,Amazon SNS 将确保通知仅发送到有效的注册订阅者/终端。为了防止垃圾邮件并确保订阅者终端确实有兴趣接收来自特定主题的通知,Amazon SNS 要求订阅者使用两部分握手明确选择加入:
我。当用户首次调用 Subscribe API 并订阅终端节点时,Amazon SNS 将向指定终端发送一条确认消息。
ii.在端点接收到确认消息后,订阅者应通过发送有效响应来确认订阅请求。只有这样,Amazon SNS 才会认为订阅请求有效。如果没有对质询做出响应,Amazon SNS 将不会向该终端节点发送任何通知。确认订阅的确切机制因所选的传输协议而异:
对于 HTTP/HTTPS 通知,Amazon SNS 首先将确认消息(包含令牌)发布到指定的 URL。监视 URL 的应用程序必须使用包含令牌的令牌调用ConfirmSubscription API。 对于电子邮件和电子邮件-JSON 通知,Amazon SNS 会将包含嵌入链接的电子邮件发送到指定地址。用户需要单击嵌入的链接来确认订阅请求。 对于 SQS 通知,Amazon SNS 会将包含令牌的质询消息排入指定队列。监控队列的应用程序必须使用令牌调用ConfirmSubscription API。 注意:对于您将 Amazon SQS 队列订阅到 Amazon SNS 主题的特定情况,不需要上述明确的“选择加入”步骤 – 并且两者均由同一 AWS 账户“拥有”。