使用 lambda 递增 dynamoDB table 的属性的正确幂等设置?

Proper idempotent setup for incrementing a dynamoDB table's attribute with lambda?

我想安排一个 lambda 函数定期递增 dynamo 中的一些属性 table,但是 lambda 的并发性多次 运行 导致递增。

尝试将并发数限制为 1 似乎也不起作用,因为它通常会导致函数在完成之前变得速率受限。

是否有正确的方法来设置 aws-lambda 函数,使其 a) 仅运行一次或 b) 幂等递增,以便该函数即使同时运行也只能递增一次值?

谢谢。

从您的问题中不清楚是什么触发了您的 lambda 函数。如果您使用 CloudWatch 规则按计划触发函数,则每个“滴答声”只会发生一次调用,定义为您配置的速率。

关于您关于幂等性的问题:

如果您的触发器是同步的,则只有在由于失败而重试的情况下,才会使用相同的输入调用 lambda 多次,并且调用不会 运行 同时发生。 如果它是异步的,它可能会被触发多次,你应该编写你的代码来正确处理这种情况(尽管它只发生在非常小的一部分调用中)。

看来您的 lambda 触发次数超出预期,这可能是问题所在,而不是幂等性。 在任何情况下,您都可以使用 lambda 的输入和上下文的请求 id 来使代码幂等。