1

Я передаю данные Amazon Kinesis, и я использую Amazon Lambda для обработки данных и записи их в DynamoDB.Amazon Lambda не пишет DynamoDB

Мой Лямбда-код:

var doc = require('dynamodb-doc'); 
var dynamo = new doc.DynamoDB(); 

exports.handler = function(event, context) { 
    //console.log('Received event:', JSON.stringify(event, null, 2)); 
    event.Records.forEach(function(record) { 
    // Kinesis data is base64 encoded so decode here 

    var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii'); 
    console.log('Decoded payload:', payload); 

    var tableName = "_events"; 
    var datetime = new Date().getTime().toString(); 

    dynamo.putItem({ 
     "TableName": tableName, 
     "Item" : { 
      "eventID" : record["eventID"], 
      "eventName" : payload 
     } 
    }, function(err, data) { 
     if (err) { 
      console.log("dynamodb error: " + err); 
      context.done('error putting item into dynamodb failed: '+err); 
     } 
     else { 
      console.log('great success: '+JSON.stringify(data, null, ' ')); 
      context.succeed('K THX BY'); 
     } 
    }); 

}); 
// context.succeed("Successfully processed " + event.Records.length + " records."); 
}; 

При запуске теста, данные успешно сохранены в DynamoDB. Но когда я передаю реальные данные, этого не происходит, в то время как журналы показывают, что данные были получены с помощью лямбда-функции. Также функция console.log() не работает в блоке putItem(), поэтому я понятия не имею, как отладить эту проблему.

+0

не уверен, что это проблема, но имеет ли ваша лямбда разрешение на запись в DynamoDB? –

ответ

1

Проблемы были: 1. Я не установил правильные разрешения 2. Я просто не дождался достаточно, чтобы данные могли обрабатываться функцией лямбда.

Смежные вопросы