如何使用带有node.js的aws Lambda在aws DynamoDb中放置一个项目

我正在aws lambda上工作,我正在尝试使用node.js中的lambda函数来放置一个Item。

我有以下代码与我..

var AWS = require('aws-sdk'); var dynamoDBConfiguration = { "accessKeyId": "AccessKey", "secretAccessKey": "Secratekey", "region": "us-west-2" }; AWS.config.update(dynamoDBConfiguration); var dd = new AWS.DynamoDB(); var tableName = 'product_bhavik'; exports.handler = function(event, context) { putItem = function(itemName,prod_Id, prod_Name, prod_Desc, prod_Price) { console.log(" putItem Function Called"); var item = { 'itemName': { 'S': itemName }, 'microtime': { 'N': new Date().getTime().toString() } }; if (prod_Id) item.prod_Id = { 'N': prod_Id.toString()}; if (prod_Name) item.prod_Name = { 'S': prod_Name }; if (prod_Desc) item.prod_Desc = { 'S': prod_Desc }; if (prod_Price) item.prod_Price = { 'N': prod_Price.toString()}; console.log("Data: %j",item); var response = dd.putItem({ 'TableName': tableName, 'Item': item }, function(err, data) { err && console.log("Error in putItem "+err); }); }; putItem('Item1',1, 'Laptop', 'Laptop for the IT users',10000); context.succeed("Successfully Inserted"); } 

当我在日志中testing这个代码时没有错误,我仍然不能把一个Item放到Dynamodb表中,你能帮我用dynamofind问题,或者可以吗?build议用其他方式来使用lambda放置项目。

我认为您最直接的问题是您在DynamoDB响应之前调用了context.succeeded() 。 如果您这样做,Lambda会停止执行,而无需等待响应。

此外,我build议添加一个try / catch包装,以查看是否有任何错误未在DynamoDBcallback中报告。 尝试这样的事情:

 exports.handler = function(event, context) { try { putItem = function(itemName,prod_Id, prod_Name, prod_Desc, prod_Price) { console.log(" putItem Function Called"); var item = { 'itemName': { 'S': itemName }, 'microtime': { 'N': new Date().getTime().toString() } }; if (prod_Id) item.prod_Id = { 'N': prod_Id.toString()}; if (prod_Name) item.prod_Name = { 'S': prod_Name }; if (prod_Desc) item.prod_Desc = { 'S': prod_Desc }; if (prod_Price) item.prod_Price = { 'N': prod_Price.toString()}; console.log("Data: %j",item); var response = dd.putItem({ 'TableName': tableName, 'Item': item }, function(err, data) { if (err) { context.fail("Error in putItem "+err); } else { context.succeed("Successfully Inserted"); } }); }; putItem('Item1',1, 'Laptop', 'Laptop for the IT users',10000); } catch (error) { context.fail("Caught: " + error); } }