Динамо потоки в другую таблицу - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь настроить поток из одного динамо-потока, чтобы он мог помещать данные в другую динамо-таблицу, но данные, похоже, не помещаются в целевую таблицу динамо

Код выполняется нормально, и cloudwatch не показывает никаких ошибок. У него достаточно разрешений для доступа к динамо-таблице, в которую он пытается выполнить запись.

var AWS = require("aws-sdk");
const dynamoDb = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event, context) => {

event.Records.forEach((record) => {
    if (record.eventName != 'INSERT') {
        console.log('Ignored ' + record.eventName + ' stream event.');
        return;
    }

    var input = record.dynamodb.NewImage;
    var id = input.pageId.S;
    console.log(input);
    console.log(id);
        const params = {
            TableName: "target-table",
            Key: {
                "targetId": id,
            },
            Item: {"targetId": id},
        };
    dynamoDb.put(params).promise();


    console.log("put put the put put")
});
}

Я ожидаю, что данные, которые я ввожу в одну таблицу, будут скопированы в цель, но, похоже, ничего не происходит.

1 Ответ

0 голосов
/ 16 января 2019
const dynamoDb = new AWS.DynamoDB.DocumentClient();
and
dynamoDb.put(params...

должно быть

const dynamodb = new AWS.DynamoDB();
and
dynamodb.putItem(params

Полный код, используемый в моей лямбде:

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

exports.handler = async (event, context) => {
    const dynamodb = new AWS.DynamoDB();
    event.Records.forEach((record) => {
        if (record.eventName != 'INSERT') {
            console.log('Ignored ' + record.eventName + ' stream event.');
            return;
        }

        var input = record.dynamodb.NewImage;
        var id = input.pageId.S;
        console.log(input);
        console.log(id);
            const params = {
                TableName: "target-table",
                Item: {"targetId": {S: "emailaddress"}},
            };
         dynamodb.putItem(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response

 });


        console.log("put put the putput")
    });
    }
...