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

确认AWS SNS主题订阅:Slack Webhook订阅待确认问题求助

解决AWS SNS订阅Slack Webhook处于PendingConfirmation的问题

这个问题很常见,核心原因是Slack的Incoming Webhook并不兼容AWS SNS默认的HTTP订阅确认机制——SNS会向你的Webhook URL发送一个带确认Token的POST请求,但Slack只会处理符合自身消息格式的请求,完全不会响应这个确认请求,所以订阅会一直卡在PendingConfirmation状态。

下面给你两种可行的解决方法:

方法一:手动确认订阅(适合快速测试)

如果只是想先搞定订阅确认,后续再处理消息格式,可以用AWS CLI手动完成:

  1. 获取订阅的ARN和确认Token

    • 登录AWS控制台,进入SNS服务,找到目标主题,切换到「订阅」标签页,复制那条状态为PendingConfirmation的订阅ARN。
    • 打开终端,运行以下命令列出该主题下的所有订阅,从返回结果里提取对应订阅的Token字段:
      aws sns list-subscriptions-by-topic --topic-arn <你的主题ARN>
      
  2. 执行确认命令

    • 把刚才拿到的主题ARN和Token代入下面的命令,运行后订阅状态就会变成Confirmed:
      aws sns confirm-subscription --topic-arn <你的主题ARN> --token <提取到的Token>
      
    • 注意:这种方法只是解决了订阅确认问题,后续SNS发送的原始消息格式Slack还是无法识别,你依然看不到消息,所以更推荐下面的生产级方案。

方法二:用Lambda作为中间层(推荐)

这是生产环境的标准做法,既能自动完成订阅确认,还能把SNS消息转换成Slack能识别的格式:

  1. 创建Lambda函数

    • 进入AWS Lambda控制台,新建一个函数,选择你熟悉的运行时(比如Python 3.11)。
    • 编写处理代码,示例Python代码如下:
      import json
      import requests
      
      SLACK_WEBHOOK_URL = "你的Slack Webhook URL"
      
      def lambda_handler(event, context):
          # 解析SNS消息内容
          sns_message = event['Records'][0]['Sns']['Message']
          # 构造Slack接受的消息格式
          slack_payload = {
              "text": f"来自AWS SNS的通知:\n{sns_message}"
          }
          # 发送到Slack Webhook
          response = requests.post(
              SLACK_WEBHOOK_URL,
              data=json.dumps(slack_payload),
              headers={"Content-Type": "application/json"}
          )
          response.raise_for_status()
          return {
              'statusCode': 200,
              'body': json.dumps('消息已转发到Slack')
          }
      
    • 补充:如果Lambda部署在私有子网,需要配置NAT网关让它能访问公网的Slack Webhook;用Python的话,要确保requests库能被Lambda加载(可以通过Lambda层或者打包部署)。
  2. 添加SNS触发器

    • 在Lambda函数的「配置」->「触发器」里,点击「添加触发器」,选择「SNS」。
    • 选中你的目标SNS主题,勾选「启用触发器」后点击「添加」。
    • 这时候AWS会自动创建SNS订阅,Lambda会自动响应SNS的确认请求,订阅状态直接变成Confirmed,无需手动操作。
  3. 测试验证

    • 在SNS控制台给主题发送一条测试消息,稍等片刻就能在Slack频道看到格式化后的通知了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:27:01