amazon-web-services - 让一个资源只触发一次 lambda
问题描述
我在 AWS 上有一个事件驱动的数据管道,可以处理数百万个文件。我的 s3 存储桶中的每个文件都会触发一个 lambda。lambda 处理文件中的数据并将处理后的数据转储到 s3 存储桶,这反过来又触发另一个 lambda 等。
在我的管道的下游,我有一个创建 Athena 数据库和表的 lambda。只要将对象转储到我的 s3 存储桶的适当键下,就会触发此 lambda。只调用一次创建我的 Athena 数据库和表的 lambda 就足够了。
如何避免让我的 labda 被多次触发?
解决方案
这是您现有的流程:
- 新文件到达后 S3 触发 Lambda(事件驱动)
- “Lambda 处理文件”然后交付到另一个 S3
- 另一个 S3 也触发另一个 lambda
您的第 3 步甚至没有被驱动,您正在执行一个事件。
我建议您使用以下流程:
- 新文件到达后 S3 触发 Lambda(事件驱动)
- “Lambda 处理文件”然后交付到另一个 S3
只有两个步骤,处理文件的 lambda 应该使用 Athena SDK 并检查所需的表是否已经存在,如果不存在,则调用创建 Athena 表的 Lambda。交付 S3 不应触发 Athena 的 lambda。
推荐阅读
- windows - Windows 10 讲述人。键盘快捷键。从当前光标处读取文档
- javascript - Highcharts - 不显示数据
- makefile - Makefile 不处理所有命令
- c - 如何将二维数组作为双指针传递给c中的函数?
- awk - awk 忽略特定列中引号内的字段分隔符,然后将其移动
- eclipse - 在 Eclipse 中添加 mysql-java 依赖项时出现 maven 问题
- android - Mockito doReturn 无法按预期工作
- c# - 尝试在 iMobileDevice 中查找设备的 STORAGE SIZE 时,lockdownd_get_value() 的 KEY 是什么?
- python - 以特定格式将元组转储到 YAML 文件中
- android - 调用 notifyDataSetChanged() 时 RecyclerView 跳转到顶部