aws-lambda - 如何防止 dynamoDB 中的覆盖/重复触发 lambda
问题描述
我有一个 DynamoDB,它正在从 java 应用程序中获取写入数据
mapper.save(row, DynamoDBMapperConfig.builder().withSaveBehavior(SaveBehavior.CLOBBER).build());
我想对 DDB 中的新项目进行 lambda 触发器,以便可以将它们的密钥放到 SNS 上。但是,如果 DynamoDB 中的某个项目被覆盖(即我们收到重复数据),我们不想对它做任何事情。
如何处理?我控制 lambda 和写入 DDB 的代码,但不控制数据源。
解决方案
我认为我们无法阻止 DynamoDB 中的项目被覆盖时触发 Lambda。但是一旦触发了 Lambda,我们就可以识别它是新记录还是现有记录。
Lambda 函数的输入将是DynamoDBStreamEvent
包含OldImage
属性的 a。如果存在,则表明它是已修改的现有记录。在这种情况下,我们可以直接从 Lambda 返回而不做任何处理。
OldImage
此外,该事件包含在和NewImage
属性中插入之前和之后的整个快照。所以我们也可以通过检查其他一些属性值是否发生变化来判断是否覆盖。
推荐阅读
- python -
(cx_Oracle.DatabaseError) ORA-01843: 不是一个有效的月份 - jquery - 动态追加 Json 数据无法正常工作
- c# - 无法转换类型错误,但两种类型都一样?
- react-native - 如何在不使用本机反应创建文件的情况下从数组缓冲区播放音频
- mysql - 如何在不使用字段名称的情况下从 Groovy 中的 MySQL 表行中获取所有字段值?
- nuget - 无法解决安装 Nuget 包的依赖关系
- javascript - 索引页面不在页面顶部打开,它直接在页面表单上打开
- java - java代码风格:当通用合同不足时返回特定的Map实现
- php - Laravel Eloquent,使用 whereIn 获取 ids 数组中的所有数据?
- error-handling - 当我的键是骡子中的动态时,如何从属性文件中获取值?