如何发送数据触发lambda函数?

时间:2017-09-27 08:54:43

标签: amazon-web-services lambda amazon-dynamodb

我想从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.`);
};

它不起作用。

1 个答案:

答案 0 :(得分: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 - 仅修改项的关键属性。

     

NEW_IMAGE - 整个项目,因为它在修改后显示。

     

OLD_IMAGE - 修改之前出现的整个项目。

     

NEW_AND_OLD_IMAGES - 项目的新图像和旧图像。

活动名称: -

在DynamoDB表中更新数据时,

record.eventName应具有 MODIFY

record.dynamodb应该具有基于Stream视图类型的值。如果您选择了NEW_AND_OLD_IMAGES,那么它应该包含旧值和新值。

  

eventName - (String)执行的数据修改类型   在DynamoDB表上:

     

INSERT - 在表格中添加了一个新项目。

     

修改 - 修改了现有项目的一个或多个属性。

     

删除 - 该项目已从表格中删除