【问题标题】:How to monitor if all aws lambda functions executions finish correctly如何监控所有 aws lambda 函数执行是否正确完成
【发布时间】:2020-11-10 02:44:10
【问题描述】:

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

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

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

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

当所有文件都被正确处理后,触发触发器并发送 SNS 消息。

但我真的不知道哪些工具或什么是实施此类解决方案的最佳方式。

感谢您的宝贵时间。

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    有几种方法可以做到这一点。一种方法是使用第二个 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 确定是否有故障。

    额外链接:

    【讨论】:

    • 感谢您的帮助。似乎是一个有趣的方法。如果你有的话,你能分享任何显示这方面例子的文档或文章吗?
    • @Aleix 嗨,我添加了链接。该解决方案是自定义的,因此没有可以详细解释所有内容的链接。不过,如果您有任何具体问题,请随时提出新的 SO 问题或在此处提问。另外,如果我的回答有帮助,我们将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多