我有以下 lambda 异常片段:
except Exception as e:
response['statusCode'] = 500
response['body'] = "Fatal Error"
raise Exception(json.dumps(response))
但是我从 API GW 得到的回复是:
{
"code": "...",
"description": "...",
"log_trace": "..."
}
在...中包含消息
但它不显示我自己的正文信息。我怎样才能通过它或让它响应,例如“致命错误”
它似乎正确映射到我的集成响应,但我的 400 错误的映射模板如下:
$input.path('$.errorMessage');
不要引发异常,而是从 Lambda 返回结构化响应:
except Exception as e:
return {
"statusCode": 500,
"body": json.dumps({
"message": "Fatal Error",
"details": str(e)
})
}
然后更新您的 API 网关映射模板:
#set($errorMessageObj = $util.parseJson($input.path('$.body')))
{
"message": "$errorMessageObj.message",
"details": "$errorMessageObj.details"
}
这样,您就可以通过 API Gateway 传递结构化错误,从而允许您包含自定义消息。然后,映射模板将其格式化为最终响应。