当前位置: 首页 > 知识库问答 >
问题:

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

盖和泰
2023-03-14

我有以下 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:20:25.975-04:00nenenebc 2021年-09-07 T16:20:25975Z D785887-68D5A68-ab0b-0d14EFD6171信息表名为tttttt
结束请求ID:d7858877-68d5-4a68-ab0b-0d14efd61712 2021-09-07T12:20:26.498-04:00报告请求ID:d7858876-68d5-4a68-ab0b-0d14EFD6171 2持续时间:524.08 ms计费<br>持续时间:52 ms内存大小:128 MB最大使用内存:90 MB初始持续时间:592.69 ms

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

共有1个答案

龚安民
2023-03-14

这是一个有点异步的问题;下面应该工作,但使用异步/等待

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;
  }
};
 类似资料:
  • 当我尝试从AWS控制台运行lambda函数时,代码工作正常。由于我想仅在添加了新的Dynamo DB记录时运行特定代码,因此我想从dymanoDB流插入事件中运行lambda函数。我尝试了以下代码,似乎lambda没有调用。 serverless.yml中的权限 dynamoDB流代码 我将非常感谢你的指导。

  • 如何从AWS Lambda函数中读取Dynamodb记录? 我正试图通过以下方式调用get_item: 但是,当我通过Lambda测试工具运行测试时,它失败并出现错误: 尽管文档说get_item应该返回包含字典的对象,但它实际上返回: 为什么没有提供项目?如何从Dynamo检索记录?

  • 我的任务是使用lambda向DynamoDB添加新的Cognito用户。我已经得到了一个现有的AWS Cognito用户池。到目前为止,我已经编写了一个lambda函数&用demo数据测试它,以便它可以将数据保存到Dynamodb中。但在测试时,它不会将我的数据保存到数据库中。为了获得指导,我一直在跟踪这篇文章。在这篇文章中说,在测试之后,我的DynamoDB表应该被填充。 日志输出 START.

  • 我一直在努力完成关于lambda dynamodb连接的第一个教程,但遇到了超时错误。 在lambda控制台中,我有以下代码: 我已经通过dynamodb控制台创建了Pages表。 当我从lambda控制台测试运行lambda函数时,我得到: 我的调试打印语句表明,第一个是发生超时的地方,因为没有后续的响应打印。(我的项目数组中有一些元素用于测试) 当我检查dynamodb表时,表中没有数据,甚至

  • 我已经启用了我的表的DynamoDB Streaming,并且有两个lambda与之关联。每当DynamoDB表中发生变化时,这两个触发器都通过Dynamo触发器。 问题:两个Lambda相应地将数据插入到两个RDS表中。就像λ1插入表1和λ2插入表2一样。表1主键是表2中的外键。 因此,每当两个lambda都触发lambda two首先完成执行时,它会显示外键约束错误,因为lambda two试

  • 我目前有一个AWS Lambda函数正在更新DynamoDB表,我需要另一个Lambda函数,该函数需要在数据更新后运行。在这种情况下,使用DynamoDB触发器而不是使用第一个Lambda调用第二个Lambda有什么好处吗? 看起来编程调用会让我更好地控制何时调用Lambda(即。我可以在调用之前等待几个更新发生),并且从DynamoDB Stream读取会花钱,而简单地调用Lambda不会。