Aws lambda 如何防止dynamoDB中的覆盖/重复触发lambda

Aws lambda 如何防止dynamoDB中的覆盖/重复触发lambda,aws-lambda,amazon-dynamodb,Aws Lambda,Amazon Dynamodb,我有一个DynamoDB,它可以从java应用程序中获取写入的数据 mapper.save(row, DynamoDBMapperConfig.builder().withSaveBehavior(SaveBehavior.CLOBBER).build()); 我想在DDB中有一个新项目的lambda触发器,这样他们的密钥就可以放在SNS上。但是,如果DynamoDB中的某个项被覆盖(即我们收到了重复的数据),我们不想对其进行任何处理 怎么处理?我控制lambda和写入DDB的代码,但不控制数

我有一个DynamoDB,它可以从java应用程序中获取写入的数据

mapper.save(row, DynamoDBMapperConfig.builder().withSaveBehavior(SaveBehavior.CLOBBER).build());
我想在DDB中有一个新项目的lambda触发器,这样他们的密钥就可以放在SNS上。但是,如果DynamoDB中的某个项被覆盖(即我们收到了重复的数据),我们不想对其进行任何处理


怎么处理?我控制lambda和写入DDB的代码,但不控制数据源。

我认为我们无法防止在DynamoDB中覆盖项时触发lambda。但一旦Lambda被触发,我们就可以确定它是新记录还是现有记录

Lambda函数的输入将是一个
DynamoDBStreamEvent
,它包含一个
OldImage
属性。如果存在,则表明它是已修改的现有记录。在这种情况下,我们可以直接从Lambda返回,而不进行任何处理


此外,事件在
OldImage
NewImage
属性中包含插入前后的整个快照。因此,我们还可以检查其他属性值是否已更改,以确定是否为覆盖。

我认为我们无法防止在DynamoDB中覆盖项时触发Lambda。但一旦Lambda被触发,我们就可以确定它是新记录还是现有记录

Lambda函数的输入将是一个
DynamoDBStreamEvent
,它包含一个
OldImage
属性。如果存在,则表明它是已修改的现有记录。在这种情况下,我们可以直接从Lambda返回,而不进行任何处理


此外,事件在
OldImage
NewImage
属性中包含插入前后的整个快照。因此,我们还可以检查某些其他属性值是否已更改,以确定它是否为覆盖。

您需要有一个IF、CASE或其他内容来查看流记录的eventName,如果它是INSERT,这意味着如果我正确调用,它将运行您的代码。如果它类似于MODIFY,那么它不会。在.

中有一个例子,您需要有一个IF、CASE或其他内容来查看流记录的eventName,如果它是INSERT,这意味着如果我调用正确,它将运行您的代码。如果它类似于MODIFY,那么它不会。这本书中有一个例子