AWS DynamoDB node.js put请求不';t将数据放入Dynamo表中
我使用以下代码将数据摄取到DynamoDB 从动觉中读取的代码AWS DynamoDB node.js put请求不';t将数据放入Dynamo表中,node.js,amazon-web-services,aws-sdk,aws-lambda,Node.js,Amazon Web Services,Aws Sdk,Aws Lambda,我使用以下代码将数据摄取到DynamoDB 从动觉中读取的代码 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.putIt
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函数相关的错误日志
请指出我在这里做错了什么。我在下面的链接中找到了解决此问题的方法 这是因为lambda处理程序中也使用了context.success调用
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);
}
});
};
您是否测试了lambda函数以检查所有步骤是否顺利运行?我已通过Get请求验证了这一点。我能够使用相同的lambda函数从Dynamo读取数据。有一种方法可以通过按下“test”按钮来测试lambda函数本身,它将运行该函数并向您提供日志。您可以这样做,并查看
console.log
提供给您的信息。我已使用测试按钮对其进行了验证。这是我从日志中得到的信息。2015-10-20T08:27:48.090Z 7130dc0f-7704-11e5-90c5-d181341d7eff[插入式仪表内信息:1234456']结束请求ID:7130dc0f-7704-11e5-90c5-d181341d7eff报告请求ID:7130dc0f-7704-11e5-90c5-d181341d7eff持续时间:652.26毫秒计费持续时间:700毫秒内存大小:128 MB最大使用内存:37 MB您可以检查docClient
是否已初始化,并且您可以将某些内容放入另一个表中以进行检查吗?