我在Lambda前面有一个API网关。
来自Lambda (HTTP2xx)的成功响应被转发到响应主体。
但是,对于错误响应(HTTP5xx等),API网关使用响应模板转换响应体。
有什么办法可以避免这种情况吗?是否有来自Lambda的原始错误响应体?
在我的兰博达里我有这样的东西:
return callback(generalError, {
statusCode: 500,
headers:{
"content-type": "application/json"
},
body: JSON.stringify({
error: 'INTERNAL_ERROR',
description: error.message,
})
});但是,作为网关的输出,我得到了以下内容:
{ "error": "Internal server error" }这不符合。羔羊的反应。它与API网关中的响应模板匹配:
{"message":$context.error.messageString}但是,是否有一种方法只代理原始的Lambda响应,而不是让这个转换就位?
发布于 2022-01-29 18:44:08
我找到了它不起作用的原因。
如果您将回调设置为500个错误,包括一个带有error字段的对象,那么无论其他输出或实际错误如何,这都将成为完整的响应。
避免使用error字段就可以了!我把它重命名为serviceError,现在我得到了我期望的响应。
https://stackoverflow.com/questions/70907501
复制相似问题