はじめに
AWS から Lambda の provided.al2 ランタイム終了通知が届きました。対象を確認すると、対象関数が60件近く存在しており、単純に全件を更新する前に、まず対象関数と管理元を整理する必要がありました。
まずは結論
- Lambda ランタイムの更新は必須だが、一括更新は危険
- まず AWS 側で関数一覧と runtime を確認する
- Git や Terraform で管理されているかを確認し、コード実体の所在を把握
- 小規模で先行検証してから段階的に更新する
前提条件
- 対象関数:約60件
- 現行 runtime:
provided.al2 - AWS CLI またはコンソールで関数を確認可能
何が起きたか
- Lambda 関数名で Git を検索してもソースコードが見つからない
-
provided.al2で検索しても php と yml がヒットするのみ - Terraform リポジトリ内に runtime 定義がある想定だったが、見つからず
- 関数名とコードのディレクトリ構造が一致していない可能性
切り分け
- Git で
provided.al2や関数名で検索 - Terraform 定義を確認(resource "aws_lambda_function")
- 実際のコード location を確認(filename, s3_key)
- AWS CLI で関数一覧を取得
aws lambda list-functions --query "Functions[?contains(FunctionName, 'GameNeuronPubSub')].[FunctionName,Runtime]" --output table
- 個別確認
aws lambda get-function --function-name <FunctionName>
対応方法
- Terraform や IaC があれば runtime を
provided.al2023に変更
runtime = "provided.al2023"
- CLI から個別に更新
aws lambda update-function-configuration --function-name <FunctionName> --runtime provided.al2023
- まず代表的な1〜3件でステージング確認
- CloudWatch Logs やトリガーイベントで動作検証
- 問題なければ段階的に全件更新
検証
- AWS CLI で更新後の runtime を確認
- CloudWatch でログ出力確認
- イベントトリガー(Kinesis/SQS)で正常に動作するかテスト
まとめ
- provided.al2 はサポート終了前に更新すべき
- いきなり全件更新は避ける
- まず関数を棚卸しして分類(使用中・管理元不明・不要)
- Git や Terraform と照合して実コードの所在を特定
- 小規模で検証してから全件展開
- CI/CD との整合性も確認