我有一个 Go Lambda 函数。我想将该功能托管在 Docker 映像/容器中,以便我可以在本地对其进行测试。在这项工作中,我遵循了此处提供的说明。根据这些说明,我有以下文件:
.
文件
go.mod
go.sum
主程序
这些文件包含以下内容:
Dockerfile(本节中 Dockerfile 的副本)
FROM alpine as build # install build tools RUN apk add go git RUN go env -w GOPROXY=direct # cache dependencies ADD go.mod go.sum ./ RUN go mod download # build ADD . . RUN go build -o /main # copy artifacts to a clean image FROM alpine COPY --from=build /main /main ENTRYPOINT [ "/main" ]
go.mod(这个 go.mod的更新版本)
module maingo 1.18require ( github.com/aws/aws-lambda-go v1.32.1 github.com/aws/aws-sdk-go v1.44.60) require github.com/jmespath/go-jmespath v0.4.0 // indirect
我可以成功运行:
go mod tidygo build
我还可以使用以下方法成功构建和运行我的 Docker 映像:
docker build -t lambda-fn . docker run -d -v ~/.aws-lambda-rie:/aws-lambda --entrypoint /aws-lambda/aws-lambda-rie -p 9000:8080 lambda-fn:latest /main
lambda-fn
我可以在 Docker 桌面中看到一个基于所列图像的容器,状态为“正在运行”。但是,当我发送以下 cURL 请求时,没有任何反应:
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
我期望根据handleRequest
函数的内容编写一些日志。我究竟做错了什么?
白猪掌柜的
相关分类