代码之家  ›  专栏  ›  技术社区  ›  Itay Moav -Malimovka

从Lambda调用DynamoDB时,如何查看错误?

  •  0
  • Itay Moav -Malimovka  · 技术社区  · 3 年前

    我有下面的Lambda,它试图扫描一张桌子。故意不存在该表,因为我想捕捉错误并进行处理。但是,它似乎只是被忽略了。
    我怎么能看到错误(我认为应该有错误)
    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版本:$最新 2021-09-07T12:25.975-04:00 2021-09-007t16:20:25.975Z d7858877-68d5-4a68-ab0b-0d14 efd61712信息 表名为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

    0 回复  |  直到 3 年前
        1
  •  1
  •   LostJon    3 年前

    这是一个有点异步的问题;下面的应该可以使用,但使用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;
      }
    };