繁体   English   中英

使用 node.js 从 AWS Lambda 将自定义错误传回 AWS API Gateway

[英]Passing custom errors back to AWS API Gateway from AWS Lambda using node.js

我真的很希望能够通过 API 网关将自定义错误从我的 Lambda 函数传回。

我以这种方式生成错误:

if (error) { // failure

        APIGatewayResult = { // set error object
            statusCode: 608,
            message: 'File upload to buffer failed.',
            error: error
        };
        done();

    };

我很确定上面的格式要么解析不正确,要么我不能像这样传回:

done = (err, res) => callback(null, {
        statusCode: err ? APIGatewayResult.statusCode : APIGatewayResult.statusCode,
        body: err ? JSON.stringify(APIGatewayResult) : JSON.stringify(APIGatewayResult),
        headers: {
            'Content-Type': 'application/json',
        },
});

我希望从 API 网关得到的响应如下所示:

{
    "statusCode": 608,
    "message": "File upload to buffer failed.",
    "error": {}
}

取而代之的是:

{
    "message": "Internal server error"
}

你的问题有两个部分:

1) API Gateway 中如何处理 Lambda 错误信息:

有许多可用的指南解释了如何在 API Gateway 中解析 Lambda 错误响应以将它们以所需的格式返回给消费者。 例如: Amazon API Gateway 和 AWS Lambda 中的错误处理模式

需要注意的是,您正在将 lambda 中的回调函数的第一个参数解析为null 第一个参数是错误响应消息,因此通过将其提供为 null,Lambda 将向 API Gateway 返回成功的 200 响应。

2) 如何覆盖 API Gateway 中的通用未处理异常消息:

这是必需的,因为如评论中所述,您收到的错误似乎是由于应用程序中未处理的异常而引发的。 您需要查看日志以确定问题的根源。

但是要更改默认错误响应对象的格式,您需要在 API Gateway 中添加自定义网关响应

鉴于所提供的信息有限,很难提供更具体的示例,但这应该足以为您指明正确的方向以找到您正在寻找的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM