amazon-web-services - 如何访问 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 函数正在成功执行,但未读取限制。
如何访问参数?
解决方案
您发布的代码的问题是,它甚至不应该编译。最大的问题是,没有Response
结构。应该是吧events.APIGatewayProxyResponse
。
此外,代码没有return
任何作用,即使您定义它应该返回Response
and 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
推荐阅读
- kurento - Kurento Media Server:服务在启动后立即停止
- php - VSCode 没有按照 php.ini 显示 DOCUMENT_ROOT
- javascript - 当我在我的购物篮中删除多个产品时,只有第一个产品数量返回我的数据库,其他产品数量没有返回
- django-rest-framework - Django Restframework dj-rest-auth 密码重置确认提交问题
- python - dash 中 GPIO 引脚的后台监控
- android - Google Drive API:我是否需要提交使用 OAuth 2.0 同意屏幕的声明表
- python - 如何通过迭代存储从文件中读取的数据的列表的索引值来获取名称和其他详细信息?
- youtube-api - 使用我的服务将视频上传到特定(我的客户的)Youtube 频道的方法
- java - Spark KafkaUtils CreateRDD 在键上应用过滤器
- flask - 使用'request.referrer'烧瓶上一页重定向