Canary リリースの昇格
Canary リリースを昇格させると、本稼働ステージでテスト中の API バージョンを使用可能にできます。オペレーションには次のタスクが含まれます。
-
ステージのデプロイ ID を Canary のデプロイ ID 設定でリセットします。これによりステージの API スナップショットが Canary のスナップショットで更新され、テストバージョンを本稼働リリースにもします。
-
Canary のステージ変数でステージ変数を更新する (存在する場合) これによりステージの API 実行コンテキストが Canary のもので更新されます。この更新をしないと、テストバージョンでさまざまなステージ変数やさまざまな既存のステージの値を使用している場合、新しい API バージョンで予期しない結果が生じる場合があります。
-
Canary トラフィックの割合を 0.0% に設定します。
Canary リリースが昇格してもステージで Canary は無効になりません。Canary を無効にするには、ステージで Canary 設定を削除する必要があります。
API Gateway コンソールを使用して Canary リリースを昇格させる
API Gateway コンソールを使用して 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 リリースをオフにする」を参照してください。