You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Lambda中调用DynamoDB未捕获错误,如何查看相关报错信息

问题根因

你遇到的问题核心是异步执行逻辑和Lambda生命周期不匹配:

  • 你使用回调形式调用dyDocClient.scan(),这是异步操作,代码不会等待回调执行就会继续往下走,直接提前返回了response,Lambda进程在DynamoDB请求返回结果前就已经终止,所以回调里的错误日志根本没有机会打印。
  • 外层的try/catch只能捕获同步代码抛出的错误,异步回调内部抛出的错误无法被外层捕获,所以你的catch分支永远不会触发。

修复方案

把SDK调用改成async/await的写法,让Lambda等待DynamoDB请求完成后再返回,错误也能被正常捕获:

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 {
        // 用await等待异步请求完成,回调转换为promise形式
        const data = await dyDocClient.scan(params).promise();
        console.log("Doing baba dance!");
        return {
            'statusCode': 200,
            'body': JSON.stringify({
                message: 'received',
                data: data
            })
        };
    } catch (err) {
        console.log('Error was captured');
        console.error("Unable to scan the table. Error JSON:", JSON.stringify(err));
        return {
            'statusCode': 500,
            'body': JSON.stringify({
                error: err.message
            })
        };
    }
};

效果说明

修改后重新调用Lambda,你就能在CloudWatch日志里看到不存在表的完整报错信息,包括错误码、错误描述等内容。

内容的提问来源于stack exchange,提问作者Itay Moav -Malimovka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:48:02