如何让 API 网关代理错误响应?

How to let API Gateway Proxy Error Responses?

我在 Lambda 前面有一个 API 网关。

来自 Lambda (HTTP 2xx) 的成功响应会转发响应正文。

但是,对于错误响应(HTTP 5xx 和其他),API 网关使用响应模板转换响应正文。

有没有办法避免这种情况?要从 Lambda 获取原始错误响应主体?

在我的 Lambda 中我有这个:

return callback(generalError, {
            statusCode: 500,
            headers:{
                "content-type": "application/json"
            },
            body: JSON.stringify({
                error: 'INTERNAL_ERROR',
                description: error.message,
            })
        });

但是,作为网关的输出,我得到了这个:

{ "error": "Internal server error" }

不匹配。 Lambdas 响应。它确实匹配 API 网关中的响应模板:

{"message":$context.error.messageString}

但是,有没有办法只代理原始的 Lambda 响应而不是进行这种转换?

我找到了它不起作用的原因。

如果您将回调设置为 500 错误,包括具有 error 字段的对象,这将以某种方式成为完整响应,而不管其他输出或实际错误。

避免使用 error 字段就可以了!我将其重命名为 serviceError,现在我得到了预期的回复。