[英]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.