2017-09-27 68 views
2

我想要发送已更改的数据从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.`); 
}; 

它不工作。

+0

你有什么到目前为止已经试过删除? –

+0

@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.'); }; –

+0

但它是抛出错误@VijayanathViswanathan –

回答

2

DynamoDB流和Lambda可以用于上述用例。

1)使能DynamoDB上Dynamodb表流以流的数据

2)创建lambda函数消耗流并写入另一DynamoDB表。 Lambda函数可以用许多编程语言(API)创建。您可以使用AWS SDK来创建lambda函数。

请参阅下面的链接了解更多详情。

Full documentation

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 - 修改了一个或多个现有项目的属性。

删除 - 该项目从表

+0

我使用节点js。该流已启用并且流视图类型为new_and_old_images。但是我不明白lambda函数如何捕获更改的数据? @notionquest –

+0

@BurhanYılmaz更新了细节以识别事件名称(INSERT,MODIFY或REMOVE)。 – notionquest

+0

感谢你的工作@notionquest –