簡體   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