通过DynamoDB Stream和Lambda读取和更新DynamoDB行

时间:2018-08-07 05:06:54

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

我正在尝试使用Lambda函数读取上一行并更新最新行。

我有一个网关来更新DynamoDB表的某些列,我需要在最新行的其他列中复制信息。

我正在从DynamoDB流中读取信息。

我的Lambda函数代码:

var AWS = require("aws-sdk");

AWS.config.update({
  region: "us-east-2",
  endpoint: 'https://dynamodb.us-east-2.amazonaws.com',
  accessKeyId: "AccessKey",
  secretAccessKey: "SecretAccessKey"
});

var dynamodbstreams = new AWS.DynamoDBStreams();
var docClient = new AWS.DynamoDB.DocumentClient();

exports.handler = function(event, context) {

 var params = {
    StreamArn: "StreamArn"
 };
  dynamodbstreams.getRecords(params, function(err, result) {

    if (err) {
      console.log(err, err.stack);
    } else {
      var params = {
        TableName: "TableName",
        Key: {
          "FaKe_Key": "MyKeY",
          "datetm": result.Items[0].datetm
        },
        UpdateExpression: "set item_one = :a, item_two = :b, item_three = :c",
        ExpressionAttributeValues:{
            ":a":result.Items[0].item_one,
            ":b":result.Items[0].item_two,
            ":c":result.Items[0].item_three
        },
        ReturnValues:"UPDATED_NEW"
    };
    docClient.update(params, function(err, data) {
        if (err) {
            console.log("Error in updateItem "+err);
        } else {
            console.log("Successfully Inserted");
        }
    });
    }
  });
};

Lambda函数在Lambda管理页面中返回OK响应。

Last processing result: OK

我的排序键是DynamoDB表更新时事件的时间戳。

Lambda环境为Node.js 6.10

如果有人能指出我正确的方向,我将不胜感激。

0 个答案:

没有答案