提升 Canary Release - Amazon API Gateway

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

提升 Canary Release

若要提升 Canary Release,請讓進行測試的 API 版本可在生產階段中使用。此操作包含下列任務:

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

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

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

提升 Canary Release 並不會停用階段上的 Canary。若要停用 Canary,您必須移除階段上的 Canary 設定。

使用 API Gateway 主控台提升 Canary Release

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

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

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

  3. 選擇 Canary 索引標籤。

  4. 選擇提升 Canary

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

在提升之後,生產版本會參考相同的 API 版本 (deploymentId) 作為 Canary Release。您可以使用 AWS CLI 進行驗證。如需範例,請參閱 使用 AWS CLI 提升 Canary Release

使用 AWS CLI 提升 Canary Release

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

假設我們有 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 Release 提升到該階段不會停用 Canary,而部署仍然是 Canary Release 部署。為了讓該部署成為一般生產版本部署,您必須停用 Canary 設定。如需有關如何停用 Canary Release 部署的詳細資訊,請參閱 關閉 Canary 版本