AWS Lambda和SES-向多个用户发送个人电子邮件[30秒Lambda限制问题]



我正在使用AWS lambda构建我的web应用程序(next.js(,并使用AWS SES成功发送电子邮件
我设置了一个每天运行的CloudWatch事件,它运行一个lambda函数,向一些用户发送个人电子邮件
问题是lambda的运行时间限制为最长30秒,所以我不能用它向很多用户发送电子邮件。

我能做些什么来解决这个问题
在查看CloudWatch日志后,我发现一个用户需要大约5秒才能完成此lambda
所以,我猜它不会处理100个或更多的用户。

起初,发送一封电子邮件需要5秒是很奇怪的,除非需要大量的数据准备来格式化每封电子邮件。

至于lambda超时,为了有一个可伸缩的设计,我建议您将lambda a->SQS->λB.

Lambda A只是将消息写入sqs(收件人的电子邮件、模板名称、格式化电子邮件所需的任何信息(。请注意,您可以向SQS写入一批消息(10条消息(。。基于我以前的一个实现,在30秒内编写5000+sqs消息很容易。如果lambda不在API后面,则可以将更长的时间设置为15分钟。

lambda B将由SQS触发以格式化电子邮件并将其发送给SES。您可以设置最适合您的设计和配额的批量大小和sqs配置。这样,只要AWS帐户的配额允许,无论数量如何,您都可以发送电子邮件。请注意,您还可以为写入SQS的每条消息引入随机延迟,以确保不违反SES的限制(14/sec<==可以很容易地提高(。

你也可以根据你的应用架构考虑一个更好的设计:(

最新更新