首页 > 解决方案 > 如何防止 dynamoDB 中的覆盖/重复触发 lambda

问题描述

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

mapper.save(row, DynamoDBMapperConfig.builder().withSaveBehavior(SaveBehavior.CLOBBER).build());

我想对 DDB 中的新项目进行 lambda 触发器,以便可以将它们的密钥放到 SNS 上。但是,如果 DynamoDB 中的某个项目被覆盖(即我们收到重复数据),我们不想对它做任何事情。

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

标签: aws-lambdaamazon-dynamodb

解决方案


我认为我们无法阻止 DynamoDB 中的项目被覆盖时触发 Lambda。但是一旦触发了 Lambda,我们就可以识别它是新记录还是现有记录。

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

OldImage此外,该事件包含在和NewImage属性中插入之前和之后的整个快照。所以我们也可以通过检查其他一些属性值是否发生变化来判断是否覆盖。


推荐阅读