【发布时间】:2019-03-04 06:56:41
【问题描述】:
我最近发现一篇文章对处理 Go 和 Lambda 中的错误有非常具体的建议:https://hackernoon.com/error-handling-with-api-gateway-and-go-lambda-functions-fe0e10808732
我在实施它时遇到了麻烦。我采用了他们的 lambdaError 结构并将其包含在我的源代码中。在出现错误时,我正在执行以下操作:
return Response{ StatusCode: 400, Body: "" }, lambdaError{
code: "INVALID_REQUEST",
message: "An invalid content structure was provided",
origErr: err,
}
错误会正确读取到日志,但是 Lambda 会向请求发送带有正文的 502:
{
"message": "Internal server error"
}
在 serverless.yml 中,我将模板添加到我的响应中:
user_create:
handler: bin/user-create
name: UserCreate
description: Creates a new user account
events:
- http:
path: user
method: post
response:
statusCodes:
400:
pattern: '.*"statusCode":400,.*'
template: |
#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))
{
"code" : "$errorMessageObj.code",
"message" : "$errorMessageObj.public_message"
}
headers:
Content-Type: "'application/json'"
cors: true
无法解决这个问题,可以使用一两个指针。
【问题讨论】:
标签: lambda serverless-framework