You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Chatbot仅推送测试消息至Slack,正常SNS消息无法送达问题咨询

问题

我配置了一个SNS主题,包含两个订阅者:

  • AWS Chatbot
  • 邮箱地址

通过AWS控制台的AWS Chatbot UI点击「发送测试消息」按钮时,两个订阅者都能收到消息:Slack频道能看到消息,邮箱也能收到邮件。但如果用AWS CLI或SNS主题UI的「发布消息」按钮发送消息,只有邮箱订阅者能收到,Slack始终收不到AWS Chatbot推送的消息。

我发现AWS Chatbot发送的测试消息是如下JSON格式(已格式化便于阅读):

{
   "source":"chatbot",
   "notificationType":"ChatbotSystemTest",
   "notificationSource":"sns",
   "configurationName":"awschat-bot-slack-engineering",
   "workspaceId":"1231231231231"
}

如果我在AWS控制台或AWS CLI中发送完全相同的这条消息,就能推送到Slack。以下是推送至Slack的示例CLI命令:

aws sns publish \
   --topic-arn arn:aws:sns:xxxxx:xxxxxxx:topicName \
   --message '{"source":"solr","notificationType":"ChatbotSystemTest","notificationSource":"sns","configurationName":"awschat-bot-slack-engineering","workspaceId":"xxxxxxx"}'

但只要修改消息里的source或notificationType字段,消息就无法显示在Slack中,而邮箱订阅者始终能收到消息。

请问为何AWS Chatbot会有如此严格的限制?


原因解析

AWS Chatbot针对SNS订阅设置这类限制,核心是为了过滤非预期消息、维持Slack频道的消息有效性,具体原因如下:

  1. 测试功能的专属逻辑
    ChatbotSystemTest是AWS Chatbot测试流程的专属标识,只有携带该notificationType且匹配对应source字段的消息,才会被识别为测试验证消息并转发到Slack——这是测试连通性的专用规则,仅用于确认Chatbot与Slack的链路正常。

  2. 默认的消息过滤机制
    AWS Chatbot对SNS订阅的消息有默认过滤规则:仅转发来自AWS官方服务(如CloudWatch告警、CodePipeline通知等)的标准化消息,或是符合Chatbot预定义格式的消息。自定义普通文本、不符合格式的JSON消息会被自动拦截,不会推送到Slack;而邮箱订阅者不受此限制,因为SNS会直接将所有消息转发到邮箱端点。

  3. 防止消息滥用与干扰
    这类限制能避免误操作或第三方程序随意向Slack频道推送无关消息,确保Slack频道仅接收经过授权的、与AWS资源相关的通知,维持频道的专业性和可读性。

如果需要推送自定义消息到Slack,需配置AWS Chatbot的自定义消息格式规则,或是通过Chatbot支持的AWS服务(如CloudWatch Events)触发消息推送,而非直接通过SNS发布任意格式的消息。

内容的提问来源于stack exchange,提问作者chubbsondubs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:16:05