如何在AWS SES中一次发送大量邮件(超过发送速率限制)

问题描述 投票:0回答:1

我有一个 AWS SES 服务,发送速率为每秒 100 封邮件。我们的应用程序向教育机构内的所有学生发送电子邮件。需要分发大量电子邮件(例如一次 1000 封)来通知所有学生。但是,我们在尝试一次发送所有电子邮件时遇到了问题,导致无法送达。要发送的邮件数量可能会有所不同。

  1. 我正在寻求有关如何利用其他 AWS 服务在有限的时间内高效发送大量电子邮件而不遇到拒绝或退回邮件的指导。

  2. 我想在我们的应用程序中获得列出被拒绝邮件的反馈,那么如何找到退回或被拒绝的邮件

  3. 有没有其他方法可以使用 lambda/sqs 来实现这一点

aws-lambda amazon-sqs amazon-sns amazon-ses amazon-cloudwatchlogs
1个回答
0
投票

假设总吞吐量配额足以最终发送所有电子邮件,并且您只需要一种平滑负载曲线的方法,您应该考虑一个对电子邮件进行排队并以固定速率发送它们的系统。

以下是如何实现速率限制的电子邮件队列的示例:

  1. 将您的电子邮件添加到 SQS 队列
  2. 以固定的时间间隔轮询队列,拉取一批大小不超过服务限制的消息
  3. 立即使用 SES 发送电子邮件
  4. 配置 SES 将电子邮件传送状态发布到 Kinesis 流
  5. 消息到达时使用来自 Lambda 触发器的 Kinesis 流,并将退回/拒绝信息存储在系统中

以固定的时间间隔轮询队列可能很棘手。最简单的解决方案可能是 EventBridge 计划,每分钟触发一次 Lambda; Lambda 可以 (2) 根据您的 SES 配额从队列中提取电子邮件。但是,EventBridge 计划不支持短于 1 分钟的间隔。

如果您需要更短的间隔(例如,对于希望快速传递的登录代码),您可以添加一个中间函数,例如步骤函数,这将多次触发 Lambda。在这种情况下,您的 EventBridge 计划可能每分钟触发一次步骤函数,这将导致每分钟触发多个 Lambda。

如果您正确计算时间和批量大小,这应该会导致系统不能超过 SES 速率限制。

© www.soinside.com 2019 - 2024. All rights reserved.