如何设置 lambda 函数以同时使用两个触发器

How setup a lambda function for working with two triggers together

我需要在两个不同的 S3 前缀上上传某些文件时才启动一个 lambda。

示例:

我有文件 A 和文件 B,每个文件都有两个不同的前缀。

我需要对文件 A 和文件 B 进行一些聚合。

为此,我将使用 Lambda,它会在上传此文件时在 SNS 上发送一条消息。

我想配置此 lambda 以在此 lambda 收到这两个事件通知时启动。

所以当这两个文件在 S3 上可供处理时,我的 lambda 就可以启动。

设置此触发器以协同工作的最佳方法是什么?

TLDR; 与其在“发布 lambda”中手动引发“文件已创建”通知,不如让 S3 event notifications 在目标文件时自动调用您的“处理 lambda”被建造。当两个文件都存在时,lambda 运行s 完成。

docs: Amazon S3 can send an event to a Lambda function when an object is created or deleted.

(1) 创建 S3 事件通知: 将两个事件通知添加到您的存储桶。在 S3 上创建 FileA 时调用处理 lambda。另一个在创建 FileB 时调用它。 您可以 set filters 让您的 lambda 仅在某些 S3 操作和文件模式上收到通知。

(2) 处理 lambda 检查另一个文件是否存在。传递给 lambda 的 S3 事件包含有关触发事件(例如 ObjectCreated)和对象(例如密钥名称、版本、存储桶等)的信息。使用 AWS SDK 检查 S3 上是否存在其他文件。

如果两个文件都存在则调用粘合程序,否则退出。

50% 处理 lambda 的时间提前退出(因为只存在 1 个文件)。其他时候,lambda 将 运行 一直到胶水例程。

(注意:只有当您可以从一个文件名派生出另一个文件名时,这才有效,这在 OP 或评论中并不清楚。)