提升 Canary Release - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

提升 Canary Release

當您提升 Canary Release 時,Canary Release 會取代目前的階段設定。提升 Canary Release 並不會停用階段上的 Canary。若要停用 Canary,您必須移除階段上的 Canary 設定。若要提升 Canary,請執行下列動作。

  • 重設具有 Canary 部署 ID 設定之階段的部署 ID。這會使用 Canary 的API快照更新階段的快照,使測試版本也成為生產版本。

  • 使用 Canary 階段變數更新階段變數 (如果有的話)。這會使用 Canary 的執行內容更新階段的API執行內容。如果沒有此更新,如果測試API版本使用不同的階段變數或現有階段變數的不同值,則新版本可能會產生非預期的結果。

  • 將 Canary 流量百分比設定為 0.0%。

使用 API Gateway 主控台提升 Canary 版本

若要使用API閘道主控台來提升 Canary Release 部署,請執行下列動作:

提升 Canary 版本部署
  1. 登入API閘道主控台,然後選擇API主要導覽窗格中現有的 。

  2. 在主導覽窗格中,選擇階段,然後選擇現有的階段。

  3. 選擇 Canary 索引標籤。

  4. 選擇提升 Canary

  5. 確認要進行的變更,然後選擇提升 Canary

促銷之後,生產版本參考與 Canary 版本相同的API版本 (deploymentId)。您可以使用 來驗證這一點 AWS CLI。如需範例,請參閱 使用 AWS CLI提升 Canary Release

使用 AWS CLI提升 Canary Release

若要使用 AWS CLI 命令將 Canary 版本提升為生產版本,請呼叫 update-stage命令以複製deploymentId與階段關聯 相關聯的 CanarydeploymentId,將 Canary 流量百分比重設為零 (0.0),並將任何 Canary-bound 階段變數複製到對應的階段繫結階段變數。

假設我們有 Canary Release 部署,如與以下類似的階段所描述:

{ "_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 Release 部署的詳細資訊,請參閱 關閉 Canary 版本