让资源仅触发一次lambda

时间:2019-07-11 17:20:46

标签: amazon-web-services aws-lambda

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

在管道的下游,我有一个lambda来创建Athena数据库和表。一旦将对象转储到我的s3存储桶的相应键下,就会触发该lambda。只需调用一次仅创建一次Athena数据库和表的lambda即可。

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

1 个答案:

答案 0 :(得分:1)

这是您现有的流程:

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

您的第3步甚至没有执行,您正在执行一个事件。

我建议您执行以下流程:

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

仅两个步骤,处理文件的Lambda应该使用Athena SDK,并检查所需的表是否已经存在,只有在不存在的情况下,才调用创建Athena表的Lambda。交付S3不应触发雅典娜的lambda。