【问题标题】:Prevent DynamoDB stream from triggering lambda function防止 DynamoDB 流触发 lambda 函数
【发布时间】:2020-02-27 20:27:12
【问题描述】:

是否有办法阻止 DynamoDB 流在每次 DynamoDB 更改时触发 lambda?

已设置 DynamoDB 流以触发 lambda 函数。 lambda 位于阶跃函数的末尾,并且 DynamoDB 表在整个阶跃函数的几个地方进行了更新。但这些不是 lambda 从流中需要的更新。因此,它在 lambda 需要调用之前过早地触发了 lambda,并导致 lambda 在 step 函数的整个持续时间内触发多次。这会导致各种问题。

对 DynamoDB 表的一个非常具体的更改是触发 lambda 所需的内容。这种变化不是来自 step 函数,而是来自通过 GraphQL 的 UI。 lambda 需要能够在 step 函数结束时以及 UI 上发生更改时运行。

基本上,应该在两种情况下运行 lambda:1) 在 step 函数结束时,以及 2) 在 UI 中更新 DynamoDB 表时,绕过 step 函数。

如果不是所需的 DynamoDB 更改,我正在编写停止 lambda 执行的代码,但这似乎不正确......如果不需要它,不希望它不断调用。在 step 函数的生命周期中,DynamoDB 表在达到 lambda 之前可能会发生多次变化。

这些数字并不准确,但假设 step 函数将连续运行 10 次,然后它将更新 DynamoDB 3 次。这是 lambda 将被调用的 30 次,在 step 函数按预期触发 lambda 之前。有没有办法阻止这些 lambda 调用?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb amazon-dynamodb-streams


    【解决方案1】:

    不,如果您将 Lambda 函数附加到 DDB 触发器,它将始终在 DDB 更新时执行。你需要改变你的架构。如果您不希望它运行(您现在要做的),您可以立即停止,但您需要为调用请求付费。

    或者,您可以更改更新 DDB 代码(方案 2)。将其替换为更新 DDB 代码的 Lambda 函数,然后调用所需的 Lambda 函数。然后,您可以安全地删除流,因为您不再依赖它。

    【讨论】:

    • 谢谢!我认为你是对的,架构不正确。我将尝试通过 graphql 查询调用,而不是让 graphql 更新 dynamodb 表然后调用函数
    猜你喜欢
    • 2018-08-29
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 2018-10-05
    • 2018-12-18
    • 2019-11-08
    相关资源
    最近更新 更多