防止 DynamoDB 流触发 lambda 函数

Prevent DynamoDB stream from triggering lambda function

有没有办法防止 DynamoDB 流在每次 DynamoDB 更改时触发 lambda?

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

DynamoDB 的一个非常具体的更改 table 是触发 lambda 所需要的。该更改不是来自 step 函数,而是来自 UI 通过 GraphQL。 lambda 需要能够 运行 在 step 函数的末尾以及每当 UI 发生变化时。

基本上,当 lambda 应该 运行 时有两种情况:1) 在 step 函数结束时,以及 2) 当 DynamoDB table 在 UI,绕过步进函数。

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

这些数字并不准确,但假设步进函数将连续 运行 10 次,然后它将更新 DynamoDB 3 次。这是 lambda 将被调用的 30 次,在 step 函数曾经像它应该的那样触发 lambda 之前。有什么办法可以防止这些 lambda 调用吗?

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

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