AWS Lambdaは、サーバーを管理することなくコードを実行できるサービスです。イベント発生時に自動的に実行される関数を作成できます。
Lambdaでは、コードの各デプロイが バージョン として保存されます。一度公開されたバージョンは変更できません。
バージョン番号の特徴:
arn:aws:lambda:region:account-id:function:function-name:version
$LATEST
は常に最新バージョンを示す特殊な識別子
エイリアス は特定のLambda関数バージョンを指す「ポインタ」のようなものです。エイリアスは変更可能なため、関数のバージョンを切り替えるときに便利です。
エイリアスの特徴:
arn:aws:lambda:region:account-id:function:function-name:alias-name
カナリアリリースとは、新バージョンを全ユーザーに一度に提供するのではなく、 一部のトラフィックだけ を新バージョンに流す手法です。問題があれば影響を最小限に抑えられます。
💡 なぜ「カナリア」というのか?
昔、炭鉱では有毒ガスを検知するために「カナリア」という鳥を持ち込んでいました。カナリアが異常を示せば、人間は避難できました。同様に、小さな割合のユーザーで新機能をテストし、問題があれば全体へのリリースを止められます。
Lambda関数のエイリアスを使って、トラフィックを2つのバージョンに分割できます:
この設定では:
| ステップ | AWS CLIコマンド | 説明 |
|---|---|---|
| 1. 新バージョンの発行 |
aws lambda publish-version --function-name hello-world
|
$LATESTから新しいバージョン(例:3)を作成 |
| 2. カナリア設定の開始 |
aws lambda update-alias --function-name hello-world --name PROD --function-version 2 --routing-config AdditionalVersionWeights={"3"=0.1}
|
10%のトラフィックをバージョン3へ |
| 3. カナリア比率の増加 |
aws lambda update-alias --function-name hello-world --name PROD --function-version 2 --routing-config AdditionalVersionWeights={"3"=0.5}
|
50%のトラフィックをバージョン3へ |
| 4. 完全移行 |
aws lambda update-alias --function-name hello-world --name PROD --function-version 3
|
100%のトラフィックをバージョン3へ |
| 5. 問題時のロールバック |
aws lambda update-alias --function-name hello-world --name PROD --function-version 2
|
問題発生時に100%のトラフィックをバージョン2へ戻す |
✅ 特定のバージョンを指す名前付きポインタ
✅ 環境別(PROD/DEV/TEST)に異なるバージョンを使用可能
✅ クライアント側の変更なしにバージョン切り替えが可能
✅ トラフィックの一部だけを新バージョンに流す手法
✅ リスクを最小限に抑えながら段階的にリリース
✅ エイリアスのルーティング設定で簡単に実装可能
✅ 問題発生時に素早くロールバック可能
Created by SSuzuki1063
AWS SAP Learning Resources