AWS Lambda で Go の関数を実行する(provided.al2 ランタイムを使用)
https://scrapbox.io/files/64f89b12b893b7001ba1b6c9.webp
業務で Go で書かれた lambda 関数を触る機会があった。
ただ、 2023 年いっぱいで、 Go 1 系のランタイムが廃止になり、 provided.al2 ランタイムを使用するようドキュメントに記載があった。
Go を書くのも久しぶりだし、 provided.al2 ランタイムを指定するときにどうすればいいのかもよくわからなかったので簡単な関数を作って試してみた。
結論から言うと、特に難しい設定やコマンドは必要ない。
サンプル関数の作成
これは AWS のドキュメントに載っているものをそのまま使用した。
Go のビルド
code:sh
go mod init example.com/m
code:sh
go get github.com/aws/aws-lambda-go/lambda
ここで、アウトプットファイル名は bootstrap とする。
生成されたバイナリを zip にまとめる。
code:sh
GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o bootstrap main.go
zip myFunction.zip bootstrap
aws cli を利用して lambda 関数を作成することもできるが、今回は Lambda をコンソールから作成し、 Zip ファイルをアップロードした。
lambda の作成
arm アーキテクチャでビルドしているので、こちらも arm64 に指定しておく。
https://gyazo.com/017ca4da6e74224df252abcb61db0c89
ハンドラは bootstrap に更新しておく。
https://gyazo.com/8150a4f533e6089a2d7012fe5cd42bb5
これでテストを実行したところ、無事に動いた。