gpt4 book ai didi

go - API Gateway : custom error message 后面的 AWS Lambda

转载 作者:IT王子 更新时间:2023-10-29 01:04:32 25 4
gpt4 key购买 nike

我正在尝试处理用 Go 编写的 Lambda 函数中的错误。
Lambda 由 API 网关触发。
当我回复 200 时,我得到了正确的回复。
但是当我用 500 代码响应时,我总是收到 {"message": "Internal server error"}

部分代码如下:

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 个值。 接口(interface){}错误:
https://godoc.org/github.com/aws/aws-lambda-go/lambda

因为我使用的是API网关,所以接口(interface)类型是APIGatewayProxyResponse:
https://godoc.org/github.com/aws/aws-lambda-go/events#APIGatewayProxyResponse

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

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

如果您返回 nil 以外的错误,则 Lambda 失败。

当出现 panic() 或 os.Exit() 时,Lambda 也会失败。这意味着 log.Fatal 也会使 Lambda 失败。

这里是关于错误的更多信息:
https://docs.aws.amazon.com/lambda/latest/dg/go-programming-model-errors.html

Lambda 在 CloudWatch 中记录 panic (和其他输出)

关于go - API Gateway : custom error message 后面的 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48452008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com