gpt4 book ai didi

go - 使用容器在本地调用AWS Lambda函数

转载 作者:行者123 更新时间:2023-12-03 10:07:36 24 4
gpt4 key购买 nike

所以我一直在尝试探索 Lambda 容器镜像

我有一个 lambda 函数,如下

test.go:

package main

import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)


func handleRequest(ctx context.Context, request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {

fmt.Println("Request %s \n\n", request)
fmt.Println("Context %s \n\n", ctx)

name := request.QueryStringParameters["name"]

return events.APIGatewayProxyResponse{Body: fmt.Sprint("Hello %s", name), StatusCode: 200}, nil
}

func main() {
lambda.Start(handleRequest)
}

我的 Docker 文件为:

FROM amazon/aws-lambda-go

COPY bin/test /var/task

CMD [ "test" ]

我构建了上面的docker文件,标签为testing_go,并按如下方式运行

docker run -p 8080:8080 testing_go

并尝试按如下方式调用它

curl -X GET --url http://localhost:8080/2015-03-31/functions/function/invocations?name=JOHN --header 'Content-Type: application/json' --data '{}'

我看到容器日志显示了以下上下文和请求的值

Request %s 

{ map[] map[] map[] map[] map[] map[] { { } map[] 0 } false}
Context %s

context.Background.WithDeadline(2020-12-23 03:07:06.186819041 +0000 UTC [325h22m17.998420615s]).WithValue(type *lambdacontext.key, val <not Stringer>).WithValue(type string, val )
map[]

问题:

  1. 如何通过curl 在本地调用该函数,以便可以捕获Go lang 代码中的查询字符串参数?

如果有人能帮助我解决这个问题,那将非常有帮助。

编辑:经过一段时间的思考后,我终于明白了。答案是

curl -X GET --url http://localhost:8080/2015-1/functions/function/invocations --header 'Content-Type: application/json' --data '{"queryStringParameters": {"name": "john"}}'

最佳答案

在尝试了很多东西之后,我发现如果我们想在本地调用我的 lambda 并传递一个值作为查询字符串参数,我需要按如下方式执行。

curl -X GET --url http://localhost:8080/2015-1/functions/function/invocations --header 'Content-Type: application/json' --data '{"queryStringParameters": {"name": "john"}}'

关于go - 使用容器在本地调用AWS Lambda函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65223288/

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