LambdaでGoのハンドラを実行する
Goのハンドラをビルドするとき、2024年現在では al2023 イメージをベースに作るといい。
FROM golang:1.23 as buildRUN --mount=type=bind,target=. go build -tags lambda.norpc -o bootstrap
FROM public.ecr.aws/lambda/provided:al2023COPY --from=build /bootstrap /bootstrapENTRYPOINT [ "/bootstrap" ]RUN —mount オプションはDockerfileベストプラクティス2024に書いた。また、ビルドするとき lambda.norpc タグを付与しているが、rpcは go1.x イメージでのみ必要なものらしいので、現代では常にタグを付ければいいと思う。
また、 ENTRYPOINT で実行ファイルを指定しているが、これはデフォルトの動作を抑制するため必須となっている。AWS Lambda function can’t find bootstrap file of containerized image with R scriptsによると /var/runtime/bootstrap に置けば省略できそうだが、公式情報ではなく変更が起こるかもしれないので ENTRYPOINT がいいだろう。