SNS未告警SES模板邮件变量缺失问题求助
排查AWS SES模板渲染失败未触发SNS告警的问题
核心问题:缺失渲染失败的通知类型配置
你当前仅配置了SES的Bounce、Complaint、Delivery三种通知类型,但模板渲染失败属于独立的RenderingFailure通知类型,未被包含在你的SNS配置中,因此SES不会将渲染错误事件推送到SNS主题。
具体排查与修复步骤
修正Terraform配置,添加RenderingFailure通知类型
你的var.sns_notification_type数组需要新增"RenderingFailure"值,修改后示例如下:# 对应你的变量定义文件 variable "sns_notification_type" { type = list(string) default = ["Bounce", "Complaint", "Delivery", "RenderingFailure"] }原有的
aws_ses_identity_notification_topic资源会通过count自动为新增类型创建关联配置,无需修改其他资源块。理解SDK返回200的合理性
SES的SendTemplatedEmail接口返回200仅代表请求格式合法(如模板存在、参数结构正确),模板渲染是后台异步执行的操作,同步返回成功不意味着渲染或投递成功,这是SES的正常设计逻辑。验证配置生效
- 部署修正后的Terraform配置,等待资源更新完成
- 登录AWS控制台,进入SES服务→对应身份(Identity)→「通知」标签页,确认
Rendering Failure已关联到你的SNS主题 - 再次发送带有错误模板变量的测试邮件,检查Lambda的CloudWatch日志是否收到渲染失败的SNS消息
额外检查点
- 确认你的Lambda函数权限(
aws_lambda_permission)已正确允许SNS主题调用,当前配置已包含source_arn限制,无需调整 - 检查SNS主题的订阅状态是否为「已确认」,Terraform创建的Lambda订阅会自动确认,无需手动操作
- 确认你的Lambda函数权限(
内容的提问来源于stack exchange,提问作者Clarence the Bard
相关产品推荐
相关产品推荐

