Amazon dynamodb 如何实现幂等lambda函数?

Amazon dynamodb 如何实现幂等lambda函数?,amazon-dynamodb,aws-lambda,idempotent,amazon-dynamodb-streams,Amazon Dynamodb,Aws Lambda,Idempotent,Amazon Dynamodb Streams,我有这样一条管道- 表1(发电机db)->aws lambda->表2(发电机db) 因此,每当表1中有任何更新hapeen时,就会触发lambda。所以lambda基本上是从表1中批量读取(1000条记录),然后执行批量计算,得到表2中需要更新的记录列表。表2基本上保留了表1中发生的某些事件的计数 所以问题是,如果我们两次发送同一批记录,那么表2中的计数将增加两次 为什么我认为这是因为在其中一个lambda函数的中断期间(运行的lambda数与dynamo db中的分区数成1:1的关系),当它

我有这样一条管道-
表1(发电机db)->aws lambda->表2(发电机db)

因此,每当表1中有任何更新hapeen时,就会触发lambda。所以lambda基本上是从表1中批量读取(1000条记录),然后执行批量计算,得到表2中需要更新的记录列表。表2基本上保留了表1中发生的某些事件的计数

所以问题是,如果我们两次发送同一批记录,那么表2中的计数将增加两次

为什么我认为这是因为在其中一个lambda函数的中断期间(运行的lambda数与dynamo db中的分区数成1:1的关系),当它执行了一些写入操作时,它将重新发送最后一批读取

为了避免这种情况,一种方法是存储我们已经计算过的记录序列号,并将其存储在表2中。所以当我们更新时,我们可以检查它是否已经计算过了。但是我们需要保持这个列表的大小,否则我们会遇到性能问题。但它应该有多大是一个问题


处理此类问题的写入方法应该是什么?

是否使用dynamodb stream将数据流传输到Lambda函数?dynamodb流只发送更改的值。当数据未更改时,它不会发送任何数据。是的,我正在使用dynamodb stream-to-stream-data-to-lambda函数。我所说的场景是lambda函数收到了一批记录,但在处理(例如,其中n条记录已被处理并更新了表2)该批记录时,lambda将停止运行,当它恢复运行时,它将重试处理相同的记录,这些n条记录将被再次处理,并导致表2中的计数错误。根据我的口味,您在这里使用了错误的技术堆栈。您正试图在非事务性数据库中实现事务性行为。考虑切换到规则的RDBMS。@ RCIVE222:我也处于类似的情况。你能弄明白吗?