【问题标题】:Lambda functions getItem call in NodeJS is not printing any item in consoleNodeJS中的Lambda函数getItem调用未在控制台中打印任何项目
【发布时间】:2021-01-27 10:08:37
【问题描述】:

我有一个名为“Test-Lambda-with-DynamoDB”的 Lambda 函数,如下所示。它在 DynamoDB 中获取 Key 为“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 中使用 SDK v2)代码如下 --

exports.handler = async (event) => {
    // TODO implement

    var AWS = require("aws-sdk");

    // Set the region 
    AWS.config.update({region: 'ca-central-1'});

    // Create the DynamoDB service object
    var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

    // var docClient = new AWS.DynamoDB.DocumentClient();
    var table="whizlabcustomer";

    var params = {
        TableName: table,
        Key: {
            'ID': {S: '1'}
        }
    };

    ddb.getItem(params, function(err, data){
        if(err){
            console.log("Unable to read item. Error JSON: "+err);
        } else {
            console.log("Looks like a success!! ");
            console.log("GetItem succeeded: "+data.Item); 
        }
    });

};

我检查了 CloudWatch 指标,但没有观察到“错误计数和成功率 (%)”指标中的任何错误计数数据点。我在“异步传递失败”中没有看到任何数据点。 任何方向或指针都会有所帮助。

【问题讨论】:

    标签: javascript node.js aws-lambda amazon-dynamodb


    【解决方案1】:

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

    您可以使用 Javascript 的 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 开发工具包都会返回 Promise,因此您可以在与 DynamoDB、S3 等通信时使用此技术。请记住,您将使用 async/await 而不是回调,而不是同时使用两者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      相关资源
      最近更新 更多