Canary リリースの昇格
Canary リリースを昇格させると、Canary リリースが現在のステージ設定を置き換えます。Canary リリースが昇格してもステージで Canary は無効になりません。Canary を無効にするには、ステージで Canary 設定を削除する必要があります。Canary を昇格させるには、以下を実行します。
-
ステージのデプロイ ID を Canary のデプロイ ID 設定でリセットします。これによりステージの API スナップショットが Canary のスナップショットで更新され、テストバージョンを本稼働リリースにもします。
-
Canary のステージ変数でステージ変数を更新する (存在する場合) これによりステージの API 実行コンテキストが Canary のもので更新されます。この更新をしないと、テストバージョンでさまざまなステージ変数やさまざまな既存のステージの値を使用している場合、新しい API バージョンで予期しない結果が生じる場合があります。
-
Canary トラフィックの割合を 0.0% に設定します。
API Gateway コンソールを使用して Canary リリースを昇格させる
API Gateway コンソールを使用して Canary リリースのデプロイを昇格させるには、以下を実行します。
Canary リリースのデプロイを昇格させるには
-
API Gateway コンソールにサインインし、プライマリナビゲーションペインで既存の API を選択します。
-
メインナビゲーションペインで、[ステージ] を選択してから、既存のステージを選択します。
-
[Canary]タブを選択します。
-
[Canary の昇格] を選択します。
-
変更内容を確認し、[Canary の昇格] を選択します。
昇格後、本稼働リリースは Canary リリースと同じ API バージョン (deploymentId) を参照します。AWS CLI を使用してこれを検証できます。例については、「AWS CLI を使用して Canary リリースを昇格させる」を参照してください。
AWS CLI を使用して Canary リリースを昇格させる
AWS CLI コマンドを使用して Canary リリースを本稼働リリースに昇格させるには、update-stage
コマンドを呼び出して Canary に関連付けられた deploymentId
をステージに関連付けられた deploymentId
にコピーし、Canary トラフィックの割合をゼロ (0.0
) にリセットして、Canary にバインドされたステージ変数を対応するステージにバインドされた変数にコピーします。
次のようなステージで示された、Canary リリースのデプロイがあるとします。
{ "_links": { ... }, "accessLogSettings": { ... }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "canarySettings": { "deploymentId": "eh1sby", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" }, "percentTraffic": 10.5 }, "createdDate": "2017-11-20T04:42:19Z", "deploymentId": "nfcn0x", "lastUpdatedDate": "2017-11-22T00:54:28Z", "methodSettings": { ... }, "stageName": "prod", "variables": { "sv1": "val1" } }
以下の update-stage
リクエストを呼び出して昇格させることができます。
aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations '[{ "op": "replace", "value": "0.0", "path": "/canarySettings/percentTraffic" }, { "op": "copy", "from": "/canarySettings/stageVariableOverrides", "path": "/variables" }, { "op": "copy", "from": "/canarySettings/deploymentId", "path": "/deploymentId" }]'
昇格後、ステージは次のようになります。
{ "_links": { ... }, "accessLogSettings": { ... }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "canarySettings": { "deploymentId": "eh1sby", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" }, "percentTraffic": 0 }, "createdDate": "2017-11-20T04:42:19Z", "deploymentId": "eh1sby", "lastUpdatedDate": "2017-11-22T05:29:47Z", "methodSettings": { ... }, "stageName": "prod", "variables": { "sv2": "val3", "sv1": "val2" } }
Canary リリースをステージに昇格させても Canary は無効にならず、デプロイは Canary リリースのデプロイのままになります。通常の本番稼働用デプロイにするには、Canary 設定を無効にする必要があります。Canary リリースのデプロイを無効にする方法については、「Canary リリースをオフにする」を参照してください。