提升 Canary 版本
当您提升金丝雀版本时,金丝雀版本会取代当前的阶段设置。提升 Canary 版本不会在阶段上禁用 Canary。要禁用 Canary,您必须在阶段上删除 Canary 设置。要提升金丝雀版本,请执行以下操作:
使用 API Gateway 控制台提升 Canary 版本
要使用 API Gateway 控制台提升 Canary 版本部署,请执行以下步骤:
提升金丝雀版本部署
-
登录 API Gateway 控制台并在主导航窗格中选择现有 API。
-
在主导航窗格中,选择阶段,然后选择一个现有阶段。
-
选择金丝雀选项卡。
-
选择提升金丝雀。
-
确认所做的更改,然后选择提升金丝雀。
提升之后,生产版本引用相同的 API 版本 (deploymentId) 作为 Canary 版本。您可以使用 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 版本部署的更多信息,请参阅 关闭金丝雀版本。