为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
墨色风雨 2022-07-11 17:25:59
我在 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=2lambda 函数正在成功执行,但未读取限制。如何访问参数?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您发布的代码的问题是,它甚至不应该编译。最大的问题是,没有Response结构。应该是吧events.APIGatewayProxyResponse。


此外,代码没有return任何作用,即使您定义它应该返回Responseand error。


我拿走了你的代码并修复了所有这些,它对我有用。固定代码如下所示:


package main


import (

    "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: $LATEST

limitString 2

END RequestId: 0c63f94f-b0aa-49de-ba6d-b1150d711b8a

REPORT 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


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信