我想从DynamoDb发送已更改数据触发的lambda函数。然后ı想要保存这个改变的数据不同的DynamoDb表。
编程语言:NodeJs
的 DynomaDb
启用流:是
查看类型:新旧图片
Lambda函数
'use strict';
console.log('Loading function');
exports.handler = (event, context, callback) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
event.Records.forEach((record) => {
console.log(record.eventID);
console.log(record.eventName);
console.log('DynamoDB Record: %j', record.dynamodb);
});
callback(null, `Successfully processed ${event.Records.length} records.`);
};
它不起作用。
答案 0 :(得分:2)
DynamoDB流和Lambda可用于上述用例。
1)在Dynamodb表上启用DynamoDB流以流式传输数据
2)创建一个Lambda函数来使用流并写入另一个DynamoDB表。 Lambda函数可以用许多编程语言(API)创建。您可以使用 AWS SDK 来创建lambda函数。
有关详细信息,请参阅以下链接。
Enable Streams and Lambda - Cross region replication use case
流视图类型: -
StreamViewType - 指定将写入的信息 每当表中的数据被修改时流:
KEYS_ONLY - 仅修改项的关键属性。
NEW_IMAGE - 整个项目,因为它在修改后显示。
OLD_IMAGE - 修改之前出现的整个项目。
NEW_AND_OLD_IMAGES - 项目的新图像和旧图像。
活动名称: -
在DynamoDB表中更新数据时, record.eventName
应具有 MODIFY 。
record.dynamodb
应该具有基于Stream视图类型的值。如果您选择了NEW_AND_OLD_IMAGES
,那么它应该包含旧值和新值。
eventName - (String)执行的数据修改类型 在DynamoDB表上:
INSERT - 在表格中添加了一个新项目。
修改 - 修改了现有项目的一个或多个属性。
删除 - 该项目已从表格中删除