
Lambda 関数をデプロイするために go1.x から AL2 ランタイムに移行しようとしていますが、その方法がわかりません。デプロイには、make と組み合わせて Serverless Framework を使用しています。現在使用している 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ローカルを使用して、新しいAL2ランタイムで関数を正常にテストできました。Goを使用したAWSサンプルAL2実装の助けを借りてcommon.go ファイルを新しいリポジトリに移動し、それを使用して go モジュールを正常に構築しました (その後、関数にインポートされました)。まだ Serverless 経由で関数をデプロイしていないため、これはほんの始まりに過ぎませんが、その間、他の人に役立つかもしれません。
答え1
実際に2つ(またはそれ以上)のファイルでGoビルドを実行し、AL2ランタイムに実行/デプロイできることが分かりました。2つ目のファイル(私の場合はcommon.go)に関数/構造体がパブリックにアクセス可能であることを確認してください。また、github.com/aws/aws-lambda-go/lambdaを最新バージョンに更新してください。そしてこれを使用してください。github リポジトリのサンプルサーバーレス テンプレートの作成に役立ちます。
これは、Serverless フレームワークを使用して AWS Lambda にデプロイするために使用される Makefile のサンプルです。
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