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

Amazon SES:如何避免重复发件并配置重复发送触发告警

实现Amazon SES重复发送告警与自动暂停方案

完全可行,你可以通过SES的事件追踪能力结合Lambda、CloudWatch/DynamoDB来实现这个需求,具体步骤如下:

1. 开启邮件发送事件追踪

  • 配置SES的配置集(Configuration Sets),启用Send事件捕获,确保每条邮件发送记录包含收件邮箱、邮件唯一标识(Message ID),建议发送邮件时添加自定义头(如X-Request-ID)来标记同一业务请求的邮件,避免误判正常多发场景。
  • 将事件导出到CloudWatch Logs或DynamoDB:
    • 选CloudWatch的话,创建日志组并将配置集的事件目的地指向该组;
    • 选DynamoDB的话,直接在配置集里设置事件目的地为DynamoDB表,存储邮箱、发送时间、自定义业务ID等核心字段。

2. 编写重复检测Lambda函数

  • 若用CloudWatch Logs触发:Lambda订阅日志组的过滤规则,解析日志中的邮箱和自定义业务ID,统计同一邮箱+业务ID在指定时间窗口内的发送次数,超过2次时触发后续操作。
  • 若用DynamoDB触发:通过DynamoDB流触发Lambda,每次新增发送记录时,查询该邮箱+业务ID的最近发送次数,判断是否触发阈值。

3. 执行暂停发送与告警

  • 触发阈值后,Lambda调用SES的PutEmailIdentitySuppressionAttributes接口,将该邮箱临时加入全局抑制列表,或针对特定配置集设置抑制规则,直接暂停向该邮箱发送邮件。
  • 同时,Lambda调用SNS发布告警通知,告知运维人员排查服务故障(如发送逻辑重试bug、SES服务异常导致的重复投递)。

4. 故障修复后的恢复

  • 故障排查完成后,可手动调用SES API将邮箱从抑制列表移除;
  • 也可编写辅助Lambda,结合CloudWatch Events定时任务,自动检测发送服务健康状态,恢复正常后自动解除对该邮箱的发送限制。

注意事项

  • 给Lambda配置足够IAM权限:需允许读取CloudWatch Logs/DynamoDB、调用SES抑制列表API、发布SNS消息;
  • 时间窗口设置要贴合业务场景(如1小时),避免误判正常批量发送;
  • 保留发送记录历史数据,方便排查重复发送的根本原因。

内容的提问来源于stack exchange,提问作者D.T Fadel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:35:30