如何监控是否所有aws lambda函数的执行都正确完成



有一个以csv格式从Aurora复制到S3存储桶的表列表。

对于每个S3 PUT事件,都会触发一个lambda函数,该函数处理相应的csv文件。

如果我有50个csv文件,我如何跟踪所有文件都已成功处理?

概念性解决方案是有一个50个csv文件的列表,每个文件都与lambda执行id关联,当每个函数完成时,它会更新该文件中的相应条目。

当所有文件都得到正确处理时,会触发并发送一条SNS消息。

但我真的不知道哪种工具或什么是实现这样一个解决方案的最佳方式。

谢谢你抽出时间。

有几种方法可以做到这一点。一种方法是使用第二个lambda(称为L2(和SQS

在这个解决方案中,您的第一个lambda(L1(将由S3事件触发并处理csv文件。当csv处理与流程文件的元数据复杂化时,L1还将向SQS队列发布消息

SQS队列将触发L2。L2的唯一工作是检查是否所有文件都已处理,如果是,则向您发送SNS通知。

";检查是否所有文件都已被处理";是特定于应用程序的,取决于如何将每个csv文件标记为进程。您可以将csv复杂元数据存储在DynamoDB中,也可以像现在这样存储在S3中。

为了消除L2的并发问题,您可以将其并发性限制为1,因此SQS消息只能由一个函数处理(而不是由多个L2函数并行处理(。

您可以通过第二个SQS扩展上述解决方案,即所谓的死信队列(DLQ(,它将保存有关失败csv进程的信息。这样,您的L2也可以根据DLQ来确定是否有故障。

额外链接:

  • 使用AWS Lambda和Amazon SQS
  • Amazon SQS死信队列

您可以为Lambda功能创建一个云监视警报,该警报可以使用SNS主题在slack/email/SMS上向您发送警报。

最新更新