AWS DynamoDB node.js put请求不会将数据放入Dynamo表中

时间:2015-10-20 08:36:34

标签: node.js amazon-web-services aws-sdk aws-lambda

我正在使用以下代码将数据提取到DynamoDB。

从Kinesis读取的代码

var AWS = require("aws-sdk"),
DOC = require("dynamodb-doc");
docClient = new DOC.DynamoDB();

function upsert(result) {
   var info = new Info(result);
   console.log('Within upsert :', info.AcctNo);
   docClient.putItem({
      TableName: "test_lamda_dynamo_table",
      Item: info
   }, function(err, data) {
      if (err) {
        console.error('error', err);
        context.done('error', err);
      } else {
        console.log('success', data);
        context.done('success', event.Records);
      }
   });
}

我无法在cloudwatch日志中看到错误处理程序sysout,也无法在DynamoDB中看到数据。

以下是来自cloudwatch的示例日志

"Within upsert Info: 1234456"

我无法在cloudwatch lambda函数日志中看到任何与PutItem函数相关的错误日志。

请在这里建议我做错了什么。

1 个答案:

答案 0 :(得分:2)

我在下面的链接找到了解决此问题的方法。

Querying DynamoDB with Lambda does nothing

这是因为lambda处理程序中使用了context.succeed调用。

    exports.handler = function(event, context) {

  event.Records.forEach(function(record) {
    try {
      var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');

      console.log('Decoded payload:', payload);

      upsert(payload, context);

      // bug
      context.succeed("Success")

    } catch (e) {
      // log error and continue
      console.error('Error occured while inserting messages to Dynamo' + e);
    }
  });
};