如何将通过AWS SES发送的邮件存储到S3等存储服务中
AWS SES 发送邮件全量存储实现方案
AWS SES本身未内置邮件持久化存储功能,但可通过官方原生的配置集事件链路实现全量邮件存储,支持写入S3或其他自定义存储介质,以下是两种常用落地方案:
方案1:直推S3存储(无额外服务,接入成本最低)
这是绝大多数场景的首选方案,全程通过控制台配置即可完成,不需要额外开发代码:
- 先在SES控制台创建配置集(Configuration Set),后续所有调用SES发送邮件的请求都指定绑定该配置集
- 进入配置集的「事件目标」页,新增目标,事件类型按需选择:仅需存储所有发起发送的邮件选
Send即可,需要包含投递结果的邮件可以全选所有事件类型 - 目标类型选择S3,指定提前创建好的S3存储桶,可按需配置存储路径前缀、KMS服务端加密等参数
- 勾选包含原始邮件选项,否则仅会存储邮件事件元数据,不会留存正文、附件等完整内容
- 给目标S3桶配置SES写入权限,参考策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "ses.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<替换为你的S3桶名>/*", "Condition": { "StringEquals": {"AWS:SourceAccount": "<替换为你的AWS账号ID>"} } } ] }
方案2:事件中转存储(适合需要自定义处理的场景)
如果需要对邮件内容做脱敏、格式转换、附件拆分、检索标签标记等二次处理,可以选择该方案:
- 配置集的事件目标选择SNS主题,所有发送事件触发SNS消息推送
- 为SNS主题绑定Lambda触发器,在Lambda代码中实现自定义处理逻辑
- 处理完成后可根据需求将数据写入任意存储介质:除S3外还支持写入DynamoDB做元数据检索、EFS做共享存储、OpenSearch做全文检索等
两种方案的成本都极低,S3存储100万封普通大小的邮件月成本仅在1美元以内,不会产生过多额外开销。
内容的提问来源于stack exchange,提问作者Viplove
相关产品推荐
相关产品推荐

