【问题标题】:How setup a lambda function for working with two triggers together如何设置 lambda 函数以一起使用两个触发器
【发布时间】:2021-12-29 09:13:28
【问题描述】:

当某些文件以两个不同的 S3 前缀上传时,我需要一个 lambda。

例子:

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

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

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

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

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

为这项工作设置此触发器的最佳方法是什么?

【问题讨论】:

  • 您能否提供两种文件类型的 S3 密钥示例?聚合如何工作(例如,a1.txt 应与 b1.txt 聚合,a2.txtb2.txt 聚合)?
  • 聚合将发生在 Glue 工作流中,
  • 我在询问 filename(= S3 对象键)模式。文件对是如何命名的?具体来说,如果我知道 File A 的 S3 密钥,我能猜出它的 File B 对的 S3 密钥吗?
  • 我有文件库存和文件交易,这两个文件需要尽可能一起处理。每个文件都将上传到不同文件夹中的 S3 存储桶中。每个文件都会生成我们的事件通知,但我想结合这两个不同的事件来启动一个你一起处理这些文件的 lambda。

标签: amazon-web-services amazon-s3 aws-lambda amazon-sns


【解决方案1】:

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

docs:Amazon S3 可以在创建或删除对象时向 Lambda 函数发送事件。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-04-07
    • 2015-10-13
    • 2020-03-03
    • 1970-01-01
    • 2020-06-30
    • 2018-01-13
    • 2019-10-14
    • 2020-05-09
    • 1970-01-01
    相关资源
    最近更新 更多