amazon-web-services - 如何在Go AWS Lambda函数中访问参数

标签 amazon-web-services go aws-lambda

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

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函数已成功执行,但未读取限制。
如何访问参数?

最佳答案

您发布的代码的问题在于,它甚至不应编译。最大的问题是,没有Response结构。它可能应该是events.APIGatewayProxyResponse
此外,即使您定义应返回returnResponse,该代码也不会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参数,则至少应打印limitString
请记住,如果您为AWS Lambda编译了一个go二进制文件,则需要像这样对linuxamd64进行编译:
$ GOOS=linux GOARCH=amd64 go build

关于amazon-web-services - 如何在Go AWS Lambda函数中访问参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64896626/

相关文章:

python - 更改 boto3 中的请求重试次数

amazon-web-services - 如何将 EC2 实例注册到 ECS 集群?

go - 制作两个结构,它们与一种方法实现不同

node.js - 使用 Lambda、NodeJs 和 Nodemailer 发送电子邮件不起作用

python - 如何将 cloudwatch 目标输入作为参数传递给 Lambda 函数

c# - AWS Lambda 和 .NET Core - 使用 Linux 运行时?

authentication - 亚马逊 ec2 - 通过 Ansible 为用户创建 AWS EC2 实例失败

mysql - 无法再次连接到 AWS RDS

go - gc Go 是如何处理堆分配的?

go - 设置与 govendor 的依赖关系的具体提交