如何使用带有 node.js 的 aws Lambda 将项目放入 aws DynamoDb
how to put an Item in aws DynamoDb using aws Lambda with node.js
我正在研究 aws lambda,我正在尝试使用带有 node.js 的 lambda 函数放置一个项目。
我有以下代码..
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");
}
当我在日志中测试此代码时没有错误,但我仍然无法将项目放入 Dynamodb table,你能帮我将项目放入 dynamodb table 用我的方式找到问题,或者你能建议其他使用 lambda 来放置项目的方法。
我认为您最直接的问题是您在 DynamoDB 响应之前调用 context.succeeded()
。如果您这样做,Lambda 将停止执行,而不等待响应。
此外,我建议添加一个 try/catch 包装器以查看是否有 DynamoDB 回调中未报告的错误。尝试这样的事情:
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);
}
}
我正在研究 aws lambda,我正在尝试使用带有 node.js 的 lambda 函数放置一个项目。
我有以下代码..
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");
}
当我在日志中测试此代码时没有错误,但我仍然无法将项目放入 Dynamodb table,你能帮我将项目放入 dynamodb table 用我的方式找到问题,或者你能建议其他使用 lambda 来放置项目的方法。
我认为您最直接的问题是您在 DynamoDB 响应之前调用 context.succeeded()
。如果您这样做,Lambda 将停止执行,而不等待响应。
此外,我建议添加一个 try/catch 包装器以查看是否有 DynamoDB 回调中未报告的错误。尝试这样的事情:
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);
}
}