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

如何将AWS SNS部署通知转为Slack纯文本及WEBHOOK_USERNAME配置疑问

问题解决:Lambda发送Slack简洁部署通知及WEBHOOK_USERNAME说明

核心问题分析

当前Slack收到完整JSON是因为代码直接将SNS传递的JSON格式消息作为Slack文本发送,而自动触发时SNS的Message字段本身就是嵌套的JSON字符串。手动测试时你传入的是纯文本消息,所以显示正常。

解决方案代码

修改Lambda代码,直接指定固定文本,并修正注释语法,同时明确WEBHOOK_USERNAME的作用:

#!/usr/bin/python3.7
import urllib3
import json

http = urllib3.PoolManager()

def lambda_handler(event, context):
    print(event)
    url = "https://hooks.slack.com/services/web___hook__url"
    msg = {
        "channel": "#deploy-notifications",  # 你的Slack频道
        "username": "Deployment Bot",  # 自定义发送者名称,会在Slack显示为消息发送方
        "text": "Code deployment success.",  # 固定显示简洁文本
        "icon_emoji": ":white_check_mark:"  # 可选:添加图标让消息更直观
    }
    
    encoded_msg = json.dumps(msg).encode('utf-8')
    resp = http.request('POST', url, body=encoded_msg)
    print({
        "status_code": resp.status, 
        "response": resp.data
    })

关键说明

  • WEBHOOK_USERNAME修改问题:这个字段是Slack消息的发送者显示名称,你可以改成任意有意义的名称(比如"Deployment Notifier"、"AWS CICD Bot"),不修改的话会默认显示"WEBHOOK_USERNAME",建议修改为更清晰的名称便于识别消息来源。
  • 自动触发显示JSON的原因:自动触发时,SNS传递的event['Records'][0]['Sns']['Message']是序列化后的JSON字符串(包含部署详情),直接作为Slack文本就会显示成JSON格式。改成固定文本后就会只显示你想要的简洁消息。
  • 代码修正点:原代码用了//注释,Python只支持#注释,已修正;同时移除了对event中Message的依赖,直接设置固定文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:09:29