如何发送数据触发lambda函数?
我想要发送已更改的数据从DynamoDb触发了lambda函数。然后,我想要保存这个已更改的数据不同的DynamoDb表。
编程语言:的NodeJS
DynomaDb
流启用:是
查看方式:新的和旧的图像如何发送数据触发lambda函数?
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.`);
};
它不工作。
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-只有m的关键属性odified项目。
NEW_IMAGE-整个项目,因为它在修改后出现。
OLD_IMAGE-整个项目,因为它出现在它被修改之前。
NEW_AND_OLD_IMAGES - 项目的新图像和旧图像。
事件名称: -
record.eventName
应该有MODIFY当数据在DynamoDB表更新。
record.dynamodb
应该具有基于Stream视图类型的值。如果您选择了NEW_AND_OLD_IMAGES
,那么它应该具有旧值和新值。
eventName的 - (字符串),这是在DynamoDB表执行 类型数据修改的:
INSERT - 一个新的项目被添加到表中。
MODIFY - 修改了一个或多个现有项目的属性。
删除 - 该项目从表
我使用节点js。该流已启用并且流视图类型为new_and_old_images。但是我不明白lambda函数如何捕获更改的数据? @notionquest –
@BurhanYılmaz更新了细节以识别事件名称(INSERT,MODIFY或REMOVE)。 – notionquest
感谢你的工作@notionquest –
你有什么到目前为止已经试过删除? –
@VijayanathViswanathan 'use strict'; console.log('加载函数'); exports.handler =(event,context,callback)=> { //console.log('Received event:',JSON.stringify(event,null,2)); (记录)=> { console.log(record.eventID); console.log(record.eventName); console.log('DynamoDB Record:%j',record.dynamodb) ; }); callback(null,'成功处理$ {event.Records.length} records.'); }; –
但它是抛出错误@VijayanathViswanathan –