【问题标题】:Let a resource trigger lambda only once让一个资源只触发一次 lambda
【发布时间】:2019-11-21 11:30:43
【问题描述】:

我在 AWS 上有一个事件驱动的数据管道,可以处理数百万个文件。我的 s3 存储桶中的每个文件都会触发一个 lambda。 lambda 处理文件中的数据并将处理后的数据转储到 s3 存储桶,这反过来又触发另一个 lambda 等。

在我的管道的下游,我有一个 lambda,它创建了一个 Athena 数据库和表。只要将对象转储到我的 s3 存储桶的适当键下,就会触发此 lambda。只调用一次创建我的 Athena 数据库和表的 lambda 就足够了。

如何避免让我的 labda 被多次触发?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    这是您现有的流程:

    1. 新文件到达后 S3 触发 Lambda(事件驱动)
    2. “Lambda 处理文件”然后交付到另一个 S3
    3. 另一个 S3 也触发另一个 lambda

    你的第 3 步甚至没有被驱动,你正在执行一个事件。

    我建议你以下流程:

    1. 新文件到达后 S3 触发 Lambda(事件驱动)
    2. “Lambda 处理文件”然后交付到另一个 S3

    只有两个步骤,处理文件的 lambda 应该使用 Athena SDK 并检查所需的表是否已经存在,如果不存在,那么您调用创建 Athena 表的 Lambda。交付 S3 不应触发 Athena 的 lambda。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 2020-07-23
      • 2021-03-22
      • 2015-09-07
      相关资源
      最近更新 更多