防止DynamoDB流触发lambda函数

时间:2019-11-01 14:30:11

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

是否有阻止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中绕过step函数更新DynamoDB表时。

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

这些数字不准确,但是说step函数将连续运行10次,然后它将DynamoDB更新3次。这是lambda会被调用的30倍,而step函数却已经按预期触发了lambda。无论如何,有什么方法可以阻止这些lambda调用?

1 个答案:

答案 0 :(得分:3)

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

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