如何访问 Go AWS lambda 函数中的参数

我在 AWS lambda 上使用 Go,并且正在编写以下代码:


func HanldeLambdaFunction(ctx context.Context, request events.APIGatewayProxyRequest) (Response, error) {

    limitString := request.QueryStringParameters["limit"]

    fmt.Println("limitString", limitString) //nothing is written

}

我正在使用 api 网关测试 lambda 函数并提供参数:


limit=2

lambda 函数正在成功执行,但未读取限制。


如何访问参数?


墨色风雨
浏览 100回答 1
1回答

白猪掌柜的

您发布的代码的问题是,它甚至不应该编译。最大的问题是,没有Response结构。应该是吧events.APIGatewayProxyResponse。此外,代码没有return任何作用,即使您定义它应该返回Responseand error。我拿走了你的代码并修复了所有这些,它对我有用。固定代码如下所示:package mainimport (    "context"    "fmt"    "github.com/aws/aws-lambda-go/events"    "github.com/aws/aws-lambda-go/lambda")func HanldeLambdaFunction(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {    limitString := request.QueryStringParameters["limit"]    fmt.Println("limitString", limitString) //nothing is written    return events.APIGatewayProxyResponse{StatusCode: 200}, nil}func main() {    lambda.Start(HanldeLambdaFunction)}输出是:START RequestId: 0c63f94f-b0aa-49de-ba6d-b1150d711b8a Version: $LATESTlimitString 2END RequestId: 0c63f94f-b0aa-49de-ba6d-b1150d711b8aREPORT RequestId: 0c63f94f-b0aa-49de-ba6d-b1150d711b8a  Duration: 0.56 ms   Billed Duration: 100 ms Memory Size: 512 MB Max Memory Used: 34 MB如果我不得不猜测,那么您的代码甚至不会运行。如果它可以运行但无法读取limit参数,它至少应该 print limitString。linux请记住,如果您为 AWS Lambda 编译一个 go 二进制文件,您需要amd64像这样编译它:$ GOOS=linux GOARCH=amd64 go build
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go