Javascript NodeJS中的Lambda函数getItem调用未在控制台中打印任何项

Javascript NodeJS中的Lambda函数getItem调用未在控制台中打印任何项,javascript,node.js,aws-lambda,amazon-dynamodb,Javascript,Node.js,Aws Lambda,Amazon Dynamodb,我有一个名为“用DynamoDB测试Lambda”的Lambda函数,如下所示。它获取DynamoDB中键为“1”的项。代码如下 函数执行,我看到下面的控制台输出 START RequestId: d121f379-066e-4883-a115-8bbc2c1ab80f Version: $LATEST END RequestId: d121f379-066e-4883-a115-8bbc2c1ab80f REPORT RequestId: d121f379-066e-4883-a115-8bb

我有一个名为“用DynamoDB测试Lambda”的Lambda函数,如下所示。它获取DynamoDB中键为“1”的项。代码如下

函数执行,我看到下面的控制台输出

START RequestId: d121f379-066e-4883-a115-8bbc2c1ab80f Version: $LATEST
END RequestId: d121f379-066e-4883-a115-8bbc2c1ab80f
REPORT RequestId: d121f379-066e-4883-a115-8bbc2c1ab80f  Duration: 5153.66 ms    Billed Duration: 5154 ms    Memory Size: 128 MB Max Memory Used: 86 MB  Init Duration: 138.01 ms
我的Lambda函数(在NodeJS中使用sdkv2)代码如下--

exports.handler=async(事件)=>{
//待办事项实施
var AWS=要求(“AWS sdk”);
//设置区域
AWS.config.update({region:'ca-central-1'});
//创建DynamoDB服务对象
var ddb=新的AWS.DynamoDB({apivision:'2012-08-10'});
//var docClient=new AWS.DynamoDB.DocumentClient();
var table=“whizlabcustomer”;
变量参数={
TableName:table,
关键:{
'ID':{S:'1'}
}
};
ddb.getItem(参数、函数(错误、数据){
如果(错误){
log(“无法读取项。错误JSON:+err”);
}否则{
log(“看起来很成功!!”;
log(“GetItem成功:+data.Item”);
}
});
};
我检查了CloudWatch指标,在“错误计数和成功率(%)”指标中没有观察到任何错误计数数据点。我在“异步交付失败”中没有看到任何数据点。
任何方向或指针都会有帮助。

您没有看到任何一个回调执行的原因是因为lambda在调用
getItem
完成之前完成了它的执行。正如当前编写的,lambda不会等待对
getItem
的调用完成

您可以使用Javascripts async/await关键字,而不是使用回调。这将消除回调的需要,并确保lambda在退出之前等待来自
getItem
的响应。 例如:

try {
    const data = await ddg.getItem(params).promise()
    console.log("Yay, I have my data!")
    console.log(data)
} catch (err) {
  // do something else
}
几乎所有的AWS SDK都会返回承诺,因此您可以在与DynamoDB、S3等通信时使用此技术。请记住,您将使用async/await而不是回调,永远不要两者都使用