[英]AWS Lambda with API gateway and Node.js returning HTTP 502
[英]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.