Skip to content

LambdaでGoのハンドラを実行する

Goのハンドラをビルドするとき、2024年現在では al2023 イメージをベースに作るといい。

FROM golang:1.23 as build
RUN --mount=type=bind,target=. go build -tags lambda.norpc -o bootstrap
FROM public.ecr.aws/lambda/provided:al2023
COPY --from=build /bootstrap /bootstrap
ENTRYPOINT [ "/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 がいいだろう。