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

使用Serverless Framework配置现有SNS Topic实现CloudWatch邮件告警无通知排查

解决Serverless使用现有SNS Topic无法接收Lambda告警邮件的问题

针对你遇到的问题,按以下步骤排查修复:

1. 确认SNS Topic的邮箱订阅状态

手动创建SNS Topic后,Serverless不会自动添加邮箱订阅,需自行完成:

  • 登录AWS SNS控制台,找到你创建的myp-${sls:stage}-alerts Topic
  • 进入「订阅」标签页,点击「创建订阅」
  • 协议选择「电子邮件」,输入目标邮箱地址后完成创建
  • 检查该邮箱,点击AWS发送的订阅确认链接完成验证

2. 给SNS Topic添加CloudWatch访问权限

手动创建的Topic默认没有允许CloudWatch Alarms发送消息的权限,需补充访问策略:

  • 在SNS Topic详情页,进入「访问策略」标签页,点击「编辑」
  • 替换为以下策略(将Resource值替换为你实际的Topic ARN):
{
  "Version": "2008-10-17",
  "Id": "CloudWatchAlarmSNSPolicy",
  "Statement": [
    {
      "Sid": "AllowCloudWatchAlarmsToPublish",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudwatch.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:${aws:region}:${aws:accountId}:myp-${sls:stage}-alerts"
    }
  ]
}
  • 保存策略

3. 验证CloudWatch Alarm与SNS Topic的关联

部署完成后,确认告警已正确绑定到目标Topic:

  • 登录AWS CloudWatch控制台,进入「告警」页面
  • 找到对应Lambda的告警(如functionErrors),点击进入详情
  • 查看「通知」部分,确认已选择你手动创建的SNS Topic

4. 确认告警触发条件已满足

确保Lambda确实产生了符合告警规则的错误:

  • 手动调用Lambda函数并故意抛出异常
  • 等待几分钟后,查看CloudWatch告警是否切换为「ALARM」状态,若触发则会发送邮件

5. 检查Serverless配置的准确性

  • 确认custom.alerts.topics.alarm.topic中的ARN拼写正确,包括区域、账号ID和Topic名称
  • 可暂时将ARN写死(如arn:aws:sns:us-east-1:123456789012:myp-dev-alerts),避免变量替换错误后重新部署测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:25:32