amazon-web-services - 从传入的 SES 电子邮件触发事件的最佳方式
问题描述
我想根据传入电子邮件的正文触发一些事件。我看到至少有两种使用 SES 和 Lambda 的方法,我想知道利弊。
SES 触发 Lambda 函数。由于 SES 仅在少数区域中可用,这意味着 Lambda 函数也必须在这些区域之一中。这会将 JSON 对象传递给包含标头但不包含电子邮件内容的 Lambda。
SES 发布到 SNS,Lambda 函数订阅 SNS 主题。SNS 主题必须与 SES 位于同一区域,但 Lambda 函数可以在任何地方。通过这种方式,Lambda 函数接收完整的电子邮件内容,最大大小为 150KB。
SES 将消息放入 S3 存储桶,然后 S3 触发 Lambda。存储桶必须在同一区域。这似乎过于复杂并且可能需要更长时间,因为有一个额外的调用来获取 S3 对象。如果另一个用户将对象放入同一个存储桶中,则可能会出错。这样您就可以使用最大 10MB 的电子邮件。
还有其他选择还是我做错了什么?
解决方案
我已经走了 SES -> S3 存储桶路线。我有一个在创建时触发 lambda 的 S3 事件。然后 lambda 读取电子邮件并将其移动到另一个以 ${emailAddress}/${emailSubject} 格式作为键的存储桶,然后删除原始邮件。这使我可以在我的一些自动化测试中基于电子邮件地址和主题组合(已知)以编程方式提取正文。通常,这会在一秒钟内发生。(今天它似乎运行得很慢......寻找找出导致我来到这里的原因)
推荐阅读
- c# - 创建一个 Windows 服务来杀死从 IE 11 等 Web 浏览器登录的程序,该程序在 30 分钟后处于空闲或未使用状态
- python - 创建将通过指定的 python 虚拟环境运行的 .py 文件,同时通过指定的路径导入其他文件
- javascript - 必须单击元素两次才能使 Jquery 事件起作用
- powershell - 如何修复工作脚本以便能够在多个目录中使用它?
- javascript - 如果变量具有反应组件作为值,我如何使用 mocha/chai/sinon 进行单元测试?
- azure - 如何使用 powershell Az 模块授予 Azure AD 应用程序访问所需权限
- java - 在 SDK 版本 28 中找不到 AppCompatActivity 库
- html - 选择框选项中的白色文本 - Google App 脚本中的 HTML 对话框
- python - Airflow:如何通过 smbclient 将文件从 Linux 下载到 Windows
- stackdriver - Stackdriver 仪表板上自定义图表上的 Apache 响应时间