更新 Canary 版本
在部署了 Canary 版本之后,您可能需要调整 Canary 流量的百分比,或者启用或禁用阶段缓存以优化测试性能。在更新执行上下文时,您还可以修改在 Canary 版本中使用的阶段变量。要进行此类更新,请在 canarySettings 上使用新值调用 stage:update 操作。
您可以使用 API Gateway 控制台、Amazon CLI update-stage 命令或Amazon开发工具包更新 Canary 版本。
使用 API Gateway 控制台更新 Canary 版本
要使用 API Gateway 控制台更新阶段上的现有 Canary 设置,请执行以下操作:
-
登录 API Gateway 控制台并在主导航窗格中选择现有 API。
-
在 API 下选择 Stages (阶段),然后在 Stages (阶段) 列表下选择现有阶段以打开 Stage Editor (阶段编辑器)。
-
在 Stage Editor (阶段编辑器) 中选择 Canary (金丝雀版本) 选项卡。
-
通过在 0.0 到 100.0 之间 (含) 增加或减少百分比数字,更新 Percentage of requests directed to Canary (直接向金丝雀版本提出请求的百分比)。
-
更新 Canary Stage Variables (金丝雀版本阶段变量),包括添加、删除或修改所需的阶段变量。
-
通过选中或清除复选框,更新 Enable use of stage cache (启用对阶段缓存的使用) 选项。
-
保存更改。
使用 Amazon CLI 更新 Canary 版本
要使用 Amazon CLI 更新 Canary,请调用 update-stage
命令。
要为 Canary 启用或禁用阶段缓存,请按以下所示调用 update-stage
命令:
aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations op=replace,path=/canarySettings/useStageCache,value=true
要调整 Canary 流量百分比,请调用 update-stage
以替换阶段上的 /canarySettings/percentTraffic
值。
aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations op=replace,path=/canarySettings/percentTraffic,value=25.0
更新 Canary 阶段变量,包括添加、替换或删除 Canary 阶段变量:
aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations '[{ \ "op": "replace", \ "path": "/canarySettings/stageVariableOverrides/newVar" \ "value": "newVal", \ }, { \ "op": "replace", \ "path": "/canarySettings/stageVariableOverrides/var2" \ "value": "val4", \ }, { \ "op": "remove", \ "path": "/canarySettings/stageVariableOverrides/var1" \ }]'
您可以通过将操作组合到单个 patch-operations
值中,更新以上所有内容。
aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations '[{ \ "op": "replace", \ "path": "/canary/percentTraffic", \ "value": "20.0" \ }, { \ "op": "replace", \ "path": "/canary/useStageCache", \ "value": "true" \ }, { \ "op": "remove", \ "path": "/canarySettings/stageVariableOverrides/var1" \ }, { \ "op": "replace", \ "path": "/canarySettings/stageVariableOverrides/newVar", \ "value": "newVal" \ }, { \ "op": "replace", \ "path": "/canarySettings/stageVariableOverrides/val2", \ "value": "val4" \ }]'