AWS:将 go1.x 运行时迁移到 al2 以部署 Lambda 函数

AWS:将 go1.x 运行时迁移到 al2 以部署 Lambda 函数

我正在尝试从 go1.x 迁移到 AL2 运行时以部署我的 Lambda 函数,但我不知道该怎么做。我使用 Serverless Framework 与 make 结合进行部署。这是我目前使用的 Makefile:

go_apps = bin/func1 bin/func2 bin/fun3

bin/% : functions/%.go functions/common.go
    env GOOS=linux go build -ldflags="-s -w" -o $@ $< functions/common.go

build: $(go_apps)

clean:
    rm -rf ./bin

deploy:
    sls deploy --verbose

install: build deploy

任何帮助将不胜感激


更新: 我发现这篇文章应该有助于迁移

当我实施完毕并确保其按预期工作时,我会汇报


更新 2:

我能够使用 SAM Local 在新的 AL2 运行时中成功测试我的函数借助此 AWS 示例 AL2 实现(使用 Go 语言)。我将 common.go 文件移至新存储库,并成功用它构建了一个 go 模块(然后将其导入到我的函数中)。这只是一个开始,因为我尚未通过无服务器部署我的函数,但与此同时,这可能对其他人有所帮助。

答案1

我发现你实际上可以使用两个(或更多)文件进行 go build,并将其运行/部署到 AL2 运行时。确保你的第二个文件(在我的情况下是 common.go)具有可公开访问的函数/结构。此外,请确保将 github.com/aws/aws-lambda-go/lambda 更新到最新版本。然后使用此github repo 示例帮助您使用无服务器模板。

这是我的 Makefile 示例,用于使用无服务器框架部署到 AWS Lambda:

go_bootstrap = func1 func2 func3 \

build: 
    for n in $(go_bootstrap); \
    do \
        echo "$$n"; \
        env GOOS=linux go build -o ./build/"$$n"/bootstrap functions/common.go functions/"$$n".go; \
        zip -j ./build/zip/"$$n".zip ./build/"$$n"/bootstrap; \
    done

deploy:
    sls deploy --verbose

install: build deploy

相关内容