ある開発チームがAWS Lambda関数のバージョン管理を改善しようとしている。現在は関数名を直接参照してデプロイしているが、本番・ステージング・開発の各環境で異なるバージョンを管理し、クライアントがどの環境のエンドポイントを呼ぶかを変えずに新バージョンをデプロイできるようにしたい。最も適切な方法はどれか。
- A. Lambdaの$LATESTバージョンをすべての環境で使用し、環境変数で動作を切り替える
- B. 環境ごとに異なる名前のLambda関数(例: myFunc-prod、myFunc-staging)を作成する
- C. AWS Codeシリーズのパイプラインを3本作成し、それぞれの環境に異なるコードをデプロイする
- D. Lambda関数にエイリアス(production、staging、dev)を作成し、各エイリアスを対応するバージョンに向ける。クライアントはエイリアスのARNを呼び出す
解答と解説を見る
正解: D
Lambdaエイリアスは特定のバージョンに対する名前付きポインタである。production/staging/devのエイリアスをそれぞれ異なるバージョン番号に向けておくことで、クライアントは常に同じエイリアスARNを呼び出し続けながら、開発チームはエイリアスが指すバージョンを変更するだけで新バージョンに切り替えられる。ロールバックも古いバージョン番号にエイリアスを向け直すだけで即座に完了する。Bは関数が増えるほど管理が複雑になり、コードの重複が発生するアンチパターンである。Aの$LATESTはデプロイのたびに変わるためバージョン管理ができず、環境分離にならない。CはCodePipelineを3本管理する運用負荷がかかり、エイリアスによる解決より複雑になる。
📚 関連サービスの解説: AWS Lambda