【问题标题】:AWS Appflow | Trigger lambdaAWS 应用流 |触发 lambda
【发布时间】:2020-08-04 10:51:09
【问题描述】:

我正在使用 AWS Appflow 从 Salesforce 提取数据,并将数据转储到 S3。它在 S3 中创建了许多文件。如何在每次 Appflow 运行时只运行一次 lambda。在我的场景中,lambda 触发了 n 次,其中 n 是每次运行在 S3 中创建的文件数。

注意:1. 我不能每次运行创建 1 个文件。 2. 我愿意接受任何其他方法

【问题讨论】:

  • 你使用的 lambda 函数的触发器是什么?
  • S3 放置事件。

标签: amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

您已经明确表示您使用 S3 事件作为触发器。 这解决了为什么每次在 S3 上发生 PUT 事件时都会触发 lambda 函数的问题。

很遗憾,在这个用例中没有这样的触发器可以帮助您。

如果您仍想使用 Lambda,您可以将云观察事件作为 lambda 函数的触发器,例如玉米作业。 您可以将其安排在您认为适合该功能的任何时间间隔内。 希望这有帮助

【讨论】:

  • 很抱歉,我无法使用 Cloud Watch 触发器,因为 appflow 在 cloudtrail 中创建日志。
  • @PratikGarg cloudtrail 将日志转储到 s3 中,每个 PUT 操作都会触发一个 Lambda 函数。正如我在答案中提到的那样,使用 lambda 触发器处理起来很棘手,因为 appflow 没有触发器。希望 SNS 能做到这一点:如果你能在每个 appflow 之后弄清楚,你就可以收到一个会触发 lambda 的通知
【解决方案2】:

Appflow 可以选择在将文件加载到 S3 之前将其聚合为单个文件。您可以在计划之前的其他设置中看到该选项。

【讨论】:

    【解决方案3】:

    我不介意我的 Lambda 函数被多次调用,只要它是幂等的。

    通常,如果 Lambda 函数可以在超时内完成执行并且不返回错误,则 S3 存储桶中的一个 AppFlow 输出文件应该只触发一次您的 Lambda 函数。否则可能会触发重试机制。

    正如@krr7931 建议的那样,您可以在设置 AppFlow 流时尝试聚合选项。 AppFlow 还支持过滤器,这有助于减少您需要处理的数据量。

    PS:这是我对在 Salesforce https://www.capturedlabs.com/amazon-app-flow-with-salesforce-in-action987654321@ 中使用 AppFlow 的反思

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 2019-01-11
      • 1970-01-01
      • 2021-06-19
      • 2016-09-14
      • 2020-05-17
      • 2018-02-26
      • 1970-01-01
      • 2019-06-12
      相关资源
      最近更新 更多