2 回答
TA贡献1712条经验 获得超3个赞
我真的建议选择“无容器”路径。只需将您的可执行文件打包到 .zip 存档中即可。不要忘记编译GOOS=linux您的代码以与 AWS Lambda 兼容。
在 Linux 上,您可以使用以下命令来获取存档:
GOOS=linux go build -o executableName path/to/main.go
zip archive.zip executableName
请注意,您必须设置Handler为executableName在函数的运行时设置中。
要处理 lambda 函数,您必须使用github.com/aws/aws-lambda-go/lambdapackage 并在 main 中启动处理函数,例如lambda.Start(handler).
完整代码示例:
package main
import (
"context"
"log"
"github.com/aws/aws-lambda-go/lambda"
)
func main() {
lambda.Start(handler)
}
func handler(ctx context.Context) {
log.Println("successfully executed")
}
TA贡献1946条经验 获得超4个赞
确保您遵循 aws 提供的有关构建容器映像的推荐指南。https://docs.aws.amazon.com/lambda/latest/dg/go-image.html
你的 Dockerfile 应该看起来像这样才能与 lambda 一起工作,
FROM public.ecr.aws/lambda/provided:al2 as build
# install compiler
RUN yum install -y golang
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 public.ecr.aws/lambda/provided:al2
COPY --from=build /main /main
ENTRYPOINT [ "/main" ]
Lambda 非常奇怪,如果您像在本地计算机上那样拥有 Dockerfile,那么它会运行一次,结束,然后第二次并在没有给出原因的情况下崩溃
- 2 回答
- 0 关注
- 160 浏览
添加回答
举报