确认AWS SNS主题订阅Slack Webhook

31

我正在集成SNS和Slack。我已经创建了一个启用了传入Webhook的Slack应用程序。 我得到了Webhook URL。我使用HTTPS协议为SNS主题创建了订阅,并设置了终端节点为Webhook URL。现在,订阅处于待确认状态。 我没有收到任何确认消息,也没有在指定的频道中看到消息。

我如何确认这个订阅?

5个回答

53

您不需要创建lambda函数或在Slack上创建HTTPS订阅。

在您的Slack频道中,添加“电子邮件集成”应用程序。完成后,Slack将为您提供一个带有slack.com域的电子邮件地址。

发送到此地址的电子邮件将被导入您的Slack频道。

然后,在SNS上创建电子邮件订阅并提供上述Slack电子邮件地址。


1
谢谢!这正是我在寻找的。 - Pushpinder Singh
2
@PushpinderSingh,如果您直接从SNS发送消息到Slack,您如何解析JSON消息? - Tula
1
这个解决方案对我来说只起到了一半的作用。我能够在 Slack 频道中确认 SNS 订阅。但是当我发布消息到 SNS 时,消息并没有发送到 Slack。所以我使用了这个解决方案:如何使用 Webhooks 将 Amazon SNS 消息发布到 Amazon Chime、Slack 或 Microsoft Teams?。这对我来说完美地解决了问题。 - Lei Shi

14
你可以不用使用Lambda确认订阅。这很容易。 我发现一种将AWS SNS与Slack集成无需AWS LambdaAWS chatbot的方法。
按照视频中清晰显示的所有步骤操作。 https://www.youtube.com/watch?v=CszzQcPAqNM 操作步骤如下:
- 创建Slack频道或使用现有频道 - 创建选择Webhook的工作流 - 将变量名称设置为“SubscribeURL”。变量名非常重要 - 在工作流程的消息正文中添加上述变量 - 发布工作流并获取URL - 将上述URL作为SNS的订阅添加 - 您会在Slack频道中看到订阅URL - 跟随URl完成订阅 - 返回到工作流,将变量更改为“Message” - 在SNS中发布消息。您将在Slack频道中看到消息。

9
你在Slack上没有看到它的原因是因为默认的SNS消息JSON格式不符合Slack所需的格式要求:

您有两个选项可以将数据发送到上面的Webhook URL:

  • 将JSON字符串作为POST请求中的payload参数发送
  • 将JSON字符串作为POST请求的正文发送

对于简单的消息,您的JSON负载最少应包含一个text属性。这是将发布到频道的文本。

正如其他用户建议的那样,您可以使用AWS Lambda函数来方便地实现此功能。已经有免费的公共解决方案可用,例如这个(我没有编写,也没有使用...只是作为参考点)。

3

3
这个解决方案已经过时,请改用此链接提供的内容:如何使用 Webhooks 将 Amazon SNS 消息发布到 Amazon Chime、Slack 或 Microsoft Teams?(我已经成功地使用过了。) - Lei Shi

3

可能我有些晚了,但是你可以配置AWS Chatbot(slack应用程序)将所有通知发送到你的slack。

更多信息请参见:https://aws.amazon.com/chatbot/


这个可以工作,但是Chatbot只接受来自特定AWS服务的消息,并且您无法自定义发送到Slack的消息。 - Christian Bangert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接