社内向けに周知を書いてたけど、そのままパブリックにも書けばいいかとおもって書きます。関連エントリ:
aws.amazon.com
gs2.hatenablog.com
概要
- AWS Lambda Function を Go1.x Runtime で動かしている場合は、2023/12/31に非推奨になるので対応しましょう
- 厳密には Deprecation Policy の Phase 1 の状態 になります。セキュリティパッチなどのアップデートがこなくなり、新規作成もできなくなります (既存のFunction はそのまま利用可能)
- なお、Phase 2の「既存の関数の更新もできなくなる」のは 2024/1/30 となります(こちらはAWSより届いたメールに書いてありました)。
影響の有無の確認
以下のいずれかの状態のLambda Functionが対象となります。
対応方法
以下のいずれかの方法で対応しましょう。
- A: .zip file 形式のまま .al2 runtime でコンパイルする
- Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2 | AWS Compute Blog
- Deploy Go Lambda functions with .zip file archives - AWS Lambda
- バイナリのファイル名を変更して provided.al2 ランタイムを使えば良いという感じだけど、aws/aws-lambda-go のバージョンが古い場合はアップデートと再ビルドも必要になります。
これ念のため調べたけど、aws/aws-lambda-goのv1.18.0(2020/7)でカスタムランタイム対応が入っているのでこれより新しいやつなら再ビルドも不要のはず。バイナリをAWS_LAMBDA_RUNTIME_APIでgrepしてマッチしたら多分対応版https://t.co/bNseNqr4Q9
— fujiwara (@fujiwara) 2023年8月28日
- B: コンテナとしてデプロイして、ベースイメージを Go1.x 以外にする
- Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2 | AWS Compute Blog
- Deploy Go Lambda functions with container images - AWS Lambda
public.ecr.aws/lambda/provided:al2
を使ってもよいし、non-AWS base imageでも問題ない