Go behing API网关中的AWS Lambda:自定义错误消息

Go behing API网关中的AWS Lambda:自定义错误消息,go,aws-lambda,aws-api-gateway,Go,Aws Lambda,Aws Api Gateway,我正在尝试处理用Go编写的Lambda函数中的错误。 Lambda由API网关触发。 当我用200回答时,我得到了正确的回答。 但是当我用500代码响应时,我总是收到{“消息”:“内部服务器错误”} 以下是代码的一部分: func newErrReponse(message string) (events.APIGatewayProxyResponse, error) { return events.APIGatewayProxyResponse{ Body:

我正在尝试处理用Go编写的Lambda函数中的错误。
Lambda由API网关触发。
当我用200回答时,我得到了正确的回答。
但是当我用500代码响应时,我总是收到
{“消息”:“内部服务器错误”}

以下是代码的一部分:

func newErrReponse(message string) (events.APIGatewayProxyResponse, error) {
    return events.APIGatewayProxyResponse{
        Body:       message,
        StatusCode: 500,
    }, errors.New(message)
}

func handleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
    return newErrReponse("some error")
}

func main() {
    lambda.Start(handleRequest)
}
我期待“一些错误”,但我总是得到内部服务器错误。我在体内尝试了JSON,但没有效果。 集成请求的类型为LAMBDA_PROXY。这是默认情况


如何控制错误响应?

lambda处理程序可以返回2个值接口{}错误

因为我使用API网关,所以接口的类型为APIGatewayProxyResponse

如果Lambda成功,API网关将从APIGatewayProxyResponse返回值

但是如果Lambda没有成功,那么您将得到一个内部服务器错误

如果返回的错误不是nil,则Lambda失败

当出现panic()或os.Exit()时,Lambda也会失败。 这意味着日志。致命也会使Lambda失败

以下是有关错误的更多信息:


LAMBDA在CurdWists/P>不熟悉GO时记录一个惊慌(和其他输出),但是考虑“成功返回一个错误响应”和“抛出一个异常”<代码>错误之间的区别。新的(消息)< /代码>看起来可能是问题-您的功能没有失败,它成功了。您只希望返回API网关的错误响应,以便将其传递回客户端,而不是指示发生了异常。注意节点中的操作方式:

callback(null,{“statusCode”:400,“body”:“缺少…”的参数)
,其中
null
是(非-)错误。谢谢。这就是问题所在。我还做了一个日志。这是两个愚蠢错误的组合:-)完美。你比我更熟悉这门语言,所以请随意写下来,作为未来访客的答案。这不是你要找的吗?那是关于没有到达lambda的错误?“如果API网关无法处理传入请求,它将向客户端返回错误响应,而不将请求转发到集成后端”,因此向客户端返回特定错误的最佳方法是将该错误的字符串放入APIGatewayProxyResponse的主体@R03是的,使用车身。第二个返回参数(error)应为nil。