おはようございます、YASUです。
DVAの勉強で、Lambdaの「バージョン」と「エイリアス」の役割を取り違えたので、今日はシンプルに整理します。
目次
結論
バージョンは「後から変更できない確定版」、エイリアスは「どのバージョンを今使うかを指す名前」です。エイリアスの向き先を付け替えるだけで、本番の切り替えも、元に戻す作業もできます。
3つの言葉を整理する
- $LATEST:編集中の最新版。コードを更新するたびに中身が変わる
- バージョン:その時点のコードと設定を固定した確定版。発行後は変更できない。番号(1、2、3…)は自動で付く
- エイリアス:
prodやdevのような名前を付けて、特定のバージョンを指すもの。向き先は後から付け替えられる
自分なりのイメージでは、$LATESTが「編集中の原稿」、バージョンが「印刷済みの確定版」、エイリアスが「今はこの版を使ってください、という案内板」です。
エイリアスを使うメリット
- 呼び出す側は、バージョン番号ではなく、エイリアス名(例:prod)だけを知っていればよい
- 新しいバージョンを公開したら、エイリアスの向き先を付け替えるだけで、切り替えが完了する
- 問題が起きたら、エイリアスを元のバージョンに付け替えるだけで、すぐに元へ戻せる
確定版のバージョンは書き換わらないので、戻す先がいつでもそのまま残っている、というのが安心できるポイントです。
少しずつ切り替える:加重エイリアス
エイリアスには、2つのバージョンにトラフィックを割り振る機能もあります。例えば「旧バージョンに90%、新バージョンに10%」のように設定して、新しいバージョンを一部のリクエストだけで試せます。これをカナリアデプロイと呼びます。
- エイリアスが指せるバージョンは、最大2つまで
- どちらのバージョンも発行済みであること($LATESTは指せない)
- 2つのバージョンは、同じ実行ロールを持っていること
本番では$LATESTを直接呼ばない
関数のARNに何も付けずに呼び出すと、$LATESTが実行されます。$LATESTは編集のたびに中身が変わるので、本番では、バージョンかエイリアスを指定して呼び出すのが推奨されています。
まとめ
- バージョンは変更できない確定版、$LATESTだけが可変
- エイリアスは、バージョンを指す付け替え可能な名前
- エイリアスの付け替えだけで、切り替えもロールバックもできる
- 加重エイリアスなら、2つのバージョンに割合を指定して振り分けられる
- 本番では$LATESTではなく、バージョンかエイリアスを呼ぶ
役割をシンプルに整理すると、「確定版を作る」「どれを使うかを指す」という2つのステップだと分かり、すっきりしました。それでは、また明日!

コメント