如何为AWS SES账户设置单域名每日100封发信限制?
AWS SES 单域名/邮箱每日100封发送限制实现方案
由于AWS SES原生未提供单域名/邮箱维度的每日发送配额功能,可通过以下两种方案实现需求:
方案一:基于CloudWatch监控+Lambda自动管控
- 绑定配置集追踪发送行为
创建SES配置集,将所有需要限制的域名/邮箱地址关联到该配置集。这样每一封从这些身份发送的邮件都会被CloudWatch捕获发送指标。 - 配置CloudWatch指标与告警
基于SES的Send指标,按ConfigurationSet和SourceIdentity(发件域名/邮箱)维度拆分,创建每日发送量统计的指标数学表达式。设置阈值为100,当指标达到阈值时触发CloudWatch告警。 - 编写Lambda执行管控逻辑
将告警触发目标设为Lambda函数,函数逻辑为:接收告警中的身份信息,调用SES的UpdateEmailIdentityAPI,将该域名/邮箱的发送状态设为禁用。同时添加每日凌晨自动恢复发送权限的定时Lambda任务,确保次日可正常发送。
方案二:发送前置校验(实时拦截)
如果需要在发送时实时校验并拦截超量请求,可通过以下步骤实现:
- 封装SES发送接口
所有发送请求统一通过自定义API网关或Lambda函数转发,避免直接调用SES API。 - 添加发送量校验逻辑
在转发函数中,用DynamoDB存储每个域名/邮箱的当日发送计数:- 每次发送前,查询对应身份的当日计数,若小于100则允许发送并递增计数;
- 若计数达到100则直接返回错误,拒绝发送请求。
- 自动重置计数
配置CloudWatch Events每日凌晨触发Lambda,清空DynamoDB中当日的计数数据。
注意事项
- 方案一属于事后管控,可能存在少量超量发送(比如告警触发前的几秒);方案二可实现精准拦截,但需要改造现有发送流程。
- 确保Lambda函数拥有足够的IAM权限:SES的修改身份权限、CloudWatch指标读取权限、DynamoDB读写权限(方案二)。
内容的提问来源于stack exchange,提问作者naveen
相关产品推荐
相关产品推荐

