首页 > 解决方案 > 查找值是否已在 Dynamodb 中更新或插入?

问题描述

我正在使用 updatedItem() 函数,该函数在 Dynamodb 中插入或更新值。如果值正在更新,我想获取这些项目并调用一个新的 lambda 函数。我怎样才能做到这一点?

标签: python-2.7amazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


最直接的方法是添加ReturnValues: 'UPDATED_NEW'到您用于updateItem()调用的参数中。

然后,您可以判断您是否插入了一个新项目,因为返回的Attributes将包括您的分区(以及排序,如果您使用了复合)键。

这是因为您无法更改项目的密钥,因此如果您所做的只是更新项目,那么您将不会更新其密钥。但是,如果您创建了一个新项目,那么您将“更新”其密钥。

但是,如果您想对 dynamo 表中更新的项目做出反应,您也可以使用 DynamoDB Streams (docs)

这些流允许您在 dynamo 表上的事务上触发 lambda。然后,这个 lambda 可以过滤事件以进行更新并做出相应的反应。这种架构方法的优点是它意味着如果有任何更新表,您的“onUpdate”功能将触发 - 而不仅仅是特定的 lambda。


推荐阅读