【发布时间】:2018-03-31 21:12:57
【问题描述】:
我需要每周发送大约 200-300k 封电子邮件,用于我们的每周通讯。这个数字预计会随着时间的推移而增加,这就是为什么我想让 lambda 为我们处理缩放。
将有一个用户界面供员工触发这些电子邮件的发送。我最初的想法是将电子邮件地址列表添加到 SNS 主题并让 lambda 函数订阅它以触发电子邮件的实际发送。我读到这可能会导致一些意外行为,并且不是追踪错误的最佳选择。
我们目前的限制是每秒 90 封电子邮件。这与执行 lambda 函数的最长时间为 5 分钟相结合,让我想知道如何将其拆分。我是否需要将这些批量发送到 SNS,以便可以均匀地启动多个 lambda 容器来完成工作?我知道 lambda 可以针对诸如将文件添加到 S3 之类的事件进行扩展,但我如何明确告诉 lambda 启动多个以处理所有需要发送的电子邮件?有没有更好的设计模式?
我的另一个想法是将电子邮件添加到 SQS 队列中,以便在出现错误时可以保留电子邮件,但需要采取一些变通方法以使其与 lambda 很好地配合。
更新
我晚了几年,但 Lambda 的工作就像一个魅力。这是详细介绍架构的博客文章:https://read.iopipe.com/how-to-use-aws-lambda-to-send-high-volume-emails-at-scale-10efe65b2f32
还有关于更多细节和经验教训的后续帖子:https://read.iopipe.com/6-lessons-learned-sending-mass-emails-with-aws-lambda-3c5e56e19571
【问题讨论】:
-
我认为你让这件事变得太难了。我刚刚查看了sendgrid.com,每月 120 万封电子邮件甚至不是他们的最高级别。它并不便宜 - 每月大约 650 美元,但您不必构建在其他地方已经存在的确切东西。他们有工具可以让您自定义和处理垃圾邮件/取消订阅/打开计数等等。我对它们没有经济利益(还有其他提供商),但过去曾成功使用过它们。
-
@Austin 我愿意打赌你可以用第三方来做这件事。我使用过 Mailgun,他们有一个用于发送电子邮件和支持 webhook 的 API。我严重怀疑 Sendgrid 或 Mailgun 无法做到这一点。
-
如果 Mailgun 或 Sendgrid 不行,为什么 SNS 还可以?
-
SES 不是第三方电子邮件服务,Sendgrid 是吗?
-
SES 在您的 VPC 中不存在。这是一个外部服务。
标签: amazon-web-services aws-lambda amazon-ses