Amazon web services 让资源只触发lambda一次

Amazon web services 让资源只触发lambda一次,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我在AWS上有一个事件驱动的数据管道,可以处理数百万个文件。s3存储桶中的每个文件都会触发一个lambda。lambda处理文件中的数据,并将处理后的数据转储到s3存储桶,s3存储桶反过来触发另一个lambda等 在我的管道下游,我有一个lambda,它创建了一个Athena数据库和表。当一个对象被转储到我的s3 bucket的相应键下时,就会触发这个lambda。只要调用这个lambda就足够了,它只创建一次我的Athena数据库和表 如何避免我的labda被多次触发?这是您现有的流程: 新文

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

在我的管道下游,我有一个lambda,它创建了一个Athena数据库和表。当一个对象被转储到我的s3 bucket的相应键下时,就会触发这个lambda。只要调用这个lambda就足够了,它只创建一次我的Athena数据库和表


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

这是您现有的流程:

  • 新文件到达时S3触发Lambda(事件驱动)
  • “Lambda处理该文件”,然后交付给另一个S3
  • 另一个S3也会触发另一个lambda
  • 您的步骤3甚至没有被驱动,您正在强制执行一个事件

    我建议您采用以下流程:

  • 新文件到达时S3触发Lambda(事件驱动)
  • “Lambda处理该文件”,然后交付给另一个S3
  • 只有两个步骤,处理文件的lambda应该使用Athena SDK并检查所需的表是否已经存在,如果不存在,则调用创建Athena表的lambda。交付S3不应触发雅典娜的lambda