首页 > 解决方案 > 从传入的 SES 电子邮件触发事件的最佳方式

问题描述

我想根据传入电子邮件的正文触发一些事件。我看到至少有两种使用 SES 和 Lambda 的方法,我想知道利弊。

  1. SES 触发 Lambda 函数。由于 SES 仅在少数区域中可用,这意味着 Lambda 函数也必须在这些区域之一中。这会将 JSON 对象传递给包含标头但不包含电子邮件内容的 Lambda。

  2. SES 发布到 SNS,Lambda 函数订阅 SNS 主题。SNS 主题必须与 SES 位于同一区域,但 Lambda 函数可以在任何地方。通过这种方式,Lambda 函数接收完整的电子邮件内容,最大大小为 150KB。

  3. SES 将消息放入 S3 存储桶,然后 S3 触发 Lambda。存储桶必须在同一区域。这似乎过于复杂并且可能需要更长时间,因为有一个额外的调用来获取 S3 对象。如果另一个用户将对象放入同一个存储桶中,则可能会出错。这样您就可以使用最大 10MB 的电子邮件。

还有其他选择还是我做错了什么?

标签: amazon-web-servicesaws-lambdaamazon-snsamazon-ses

解决方案


我已经走了 SES -> S3 存储桶路线。我有一个在创建时触发 lambda 的 S3 事件。然后 lambda 读取电子邮件并将其移动到另一个以 ${emailAddress}/${emailSubject} 格式作为键的存储桶,然后删除原始邮件。这使我可以在我的一些自动化测试中基于电子邮件地址和主题组合(已知)以编程方式提取正文。通常,这会在一秒钟内发生。(今天它似乎运行得很慢......寻找找出导致我来到这里的原因)


推荐阅读