はじめに
Lambda 関数のランタイムを Go 1.x => provided.al2 へ移行する方法を記載する。
2ヶ月ほど前、AWS から「Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するため、AWS Lambda での Go 1.x ランタイムのサポートも終了する」旨が通知されていた。
既存の Lambda 関数はサポートが終了する 2023/12/31 以降も実行できるようだが、サポートが終了するランタイムをあえて使い続ける理由もないので、Lambda 関数が使うランタイムを Go 1.x => provided.al2 へ移行した。その際に行ったことを記載していく。
お客様の AWS アカウントに現在 Go 1.x ランタイムを使用する 1 つ以上の Lambda 関数があることを確認しましたので、ご連絡いたします。
Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するのに合わせて、AWS Lambda での Go 1.x ランタイムのサポートを終了します [1]。Lambda は、provided.al2 ランタイムを使用して Go プログラミング言語を引き続きサポートします。provided.al2 ランタイムを使用すると、AWS Graviton2 プロセッサのサポートや、より小さなデプロイパッケージとより高速な関数呼び出しパスによる効率的な実装など、go1.x ランタイムに比べていくつかの利点があります。詳細については、ブログ記事 [2] を参照してください。
Lambda ランタイムサポートポリシー [3] で説明されているように、Lambda での言語ランタイムのサポートの終了は 2 段階で行われます。2023 年 12 月 31 日以降、Lambda は Lambda 関数で使用される Go 1.x ランタイムにセキュリティパッチやその他アップグレードを適用しなくなり、Go 1.x を使用する関数は、テクニカルサポートの対象外となります。さらに、Go 1.x ランタイムを使用する新しい Lambda 関数を作成できなくなります。2024 年 1 月 30 日以降、Go 1.x ランタイムを使用して既存の関数を更新することができなくなります。
2023 年 12 月 31 日までに、既存の Go 1.x 関数を provided.al2 ランタイムにアップグレードすることをお勧めします。
サポートの終了は機能の実行には影響しません。関数は引き続き実行されます。しかしながら、AWS Lambda チームによるメンテナンスやパッチ適用がされない、サポートされていないランタイムで実行されることとなります。
Go 1.x => provided.al2 への変更
Go 1.x から provided.al2 へ移行するために必要な作業は、次のとおり。
- 実行ファイルの名前を
bootstrap
にする - 使用するランタイムを
Go 1.x
=>provided.al2
に変更する (当たり前だが) - aws-lambda-go のバージョンを v1.18 以降にアップグレードする。 もともと v1.18 以降を使っている場合は不要
Go 1.x ランタイムを使用している Lambda 関数の確認方法
$ aws lambda list-functions \ --function-version ALL \ --region <リージョン> \ --output text \ --query "Functions[?Runtime=='go1.x'].FunctionArn"
参考サイト
- Update on Amazon Linux AMI end-of-life | AWS News Blog
- Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2 | AWS Compute Blog
- Release v1.18.0 · aws/aws-lambda-go · GitHub https://dev.classmethod.jp/articles/how-to-migrate-aws-sam-go-lambda-application/
- AWS SAMのGo言語Lambdaアプリケーションのランタイムを更新してみた | DevelopersIO