【问题标题】:How can I see errors when calling DynamoDB from a Lambda?从 Lambda 调用 DynamoDB 时如何查看错误?
【发布时间】:2021-09-08 01:20:49
【问题描述】:

我有以下试图扫描表的 Lambda。故意表不存在,因为我想捕获错误并处理它。但是,它似乎只是被忽略了。
我怎样才能看到错误(我认为应该有错误)
拉姆达:

const AWS = require("aws-sdk");
let response;
const dyDocClient = new AWS.DynamoDB.DocumentClient();

exports.lambdaHandler = async (event, context) => {
    
    const params = {
        TableName: "tttttt"
    };
    console.log('The table name is ',params.TableName);

    try {

        dyDocClient.scan(params, (err, data)=>{
            
            if (err) {
                console.log("Unable to scan the table. Error JSON:", JSON.stringify(err));
            } else {
                console.log("Doing baba dance!");
            }
            return 2;

        });

        response = {
            'statusCode': 200,
            'body': JSON.stringify({
                message: 'received'
            })
        }

    } catch (err) {
        console.log('Error was captured');
        console.error(JSON.stringify(err));
        return err;
    }

    return response
};

我在 cloudwatch 日志中看到的内容:

2021-09-07T12:20:25.972-04:00 开始请求 ID: d7858877-68d5-4a68-ab0b-0d14efd61712 版本:$LATEST 2021-09-07T12:20:25.975-04:00 2021-09-07T16:20:25.975Z d7858877-68d5-4a68-ab0b-0d14efd61712 INFO 表名是tttttt
2021-09-07T12:20:26.498-04:00 结束请求 ID:
d7858877-68d5-4a68-ab0b-0d14efd61712 2021-09-07T12:20:26.498-04:00 报告请求 ID: d7858877-68d5-4a68-ab0b-0d14efd61712 持续时间:524.08 毫秒计费
持续时间:525 毫秒内存大小:128 MB 使用的最大内存:90 MB 初始化 持续时间:592.69 毫秒

不确定这是否相关,但我通过 api 网关调用 lambda

【问题讨论】:

    标签: node.js amazon-web-services error-handling aws-lambda amazon-dynamodb


    【解决方案1】:

    这是一个异步问题;以下应该可以工作,但使用 async/await

    const AWS = require("aws-sdk");
    const dyDocClient = new AWS.DynamoDB.DocumentClient();
    
    exports.lambdaHandler = async (event, context) => {
    
      const params = {
        TableName: "tttttt"
      };
      console.log('The table name is ', params.TableName);
    
      try {
    
        let data = await dyDocClient.scan(params).promise().catch(err => {
          console.log("Unable to scan the table. Error JSON:", JSON.stringify(err));
          throw err
        })
        console.log("Doing baba dance!");
        return {
          'statusCode': 200,
          'body': JSON.stringify({
            message: 'received'
          })
        }
      } catch (err) {
        console.log('Error was captured');
        console.error(JSON.stringify(err));
        return err;
      }
    };
    

    【讨论】:

    • 老实说...我不知道你想做什么 :)
    • 只是试图在日志中获取错误,非常基本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多