Node.js AWS Lambda和DynamoDB零响应
我试图从Lambda函数写入DynamoDB表。当我测试运行该函数时,它返回null,没有错误消息,也没有任何内容写入表中。函数如下所示。我已经使用允许访问“产品”表的权限策略为此功能设置了服务角色。我看到一些教程提到创建一个“AWS Lambda应用程序”,然后创建Lambda函数,但我不认为这对我的使用是必要的Node.js AWS Lambda和DynamoDB零响应,node.js,amazon-web-services,aws-lambda,amazon-dynamodb,Node.js,Amazon Web Services,Aws Lambda,Amazon Dynamodb,我试图从Lambda函数写入DynamoDB表。当我测试运行该函数时,它返回null,没有错误消息,也没有任何内容写入表中。函数如下所示。我已经使用允许访问“产品”表的权限策略为此功能设置了服务角色。我看到一些教程提到创建一个“AWS Lambda应用程序”,然后创建Lambda函数,但我不认为这对我的使用是必要的 const AWS = require('aws-sdk'); const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = async (event, context, callback) => {
dynamodb.putItem({
TableName: "Products",
Item: {
"sku": {S: "29574839"},
"name": {S: "Test Code"}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
return callback(null, {
statusCode: '500',
body: err
});
} else {
return callback(null, {
statusCode: '200',
body: 'Adding to table!'
});
}
});
};
我还尝试使用DocumentClientconstdocclient=newdynamodb.DocumentClient()代码>,我得到错误:“dynamodb.DocumentClient不是构造函数”
我错过了什么?谢谢
CloudWatch日志显示(我删除了请求id):
功能日志:
开始请求ID:版本:$LATEST
结束请求ID:
REPORT RequestId:Duration:491.07毫秒计费持续时间:500毫秒内存大小:128 MB最大使用内存:87 MB初始持续时间:405.37毫秒因为您正在使用,我认为问题在于您的函数在处理程序的主体有机会运行之前完成
纠正这种情况的一种方法是使用Promise
,如中所示。例如:
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = async (event, context, callback) => {
const promise = new Promise(function(resolve, reject) {
dynamodb.putItem({
TableName: "Products",
Item: {
"sku": {S: "29574839"},
"name": {S: "Test Code"}
}
}, function(err, data) {
if (err) {
console.log(err, err.stack);
return callback(null, {
statusCode: '500',
body: err
});
} else {
return callback(null, {
statusCode: '200',
body: 'Adding to table!'
});
}
});
})
return promise;
};
以上更改仅为示例性更改,因此可能仍需要进行一些调整。您检查了cloudwatch日志吗?@NishuTayal我在问题中添加了这一点。它们似乎没有显示任何有用的东西。谢谢!成功了!我还可以删除'async',它可以按原样工作。我应该注意到的!