Amazon API Gateway
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

更新 Canary 版本

在部署了金丝雀版本之后,您可能需要调整金丝雀版本流量的百分比,或者启用或禁用阶段缓存以优化测试性能。在更新执行上下文时,您还可以修改在金丝雀版本中使用的阶段变量。要进行此类更新,请在 canarySettings 上使用新值调用 stage:update 操作。

您可以使用 API Gateway 控制台、AWS CLI update-stage 命令或 AWS 开发工具包和更新 Canary 版本。

使用 API Gateway 控制台更新 Canary 版本

要使用 API Gateway 控制台更新阶段上的现有金丝雀版本设置,请执行以下操作:

  1. 登录到 API Gateway 控制台并在主导航窗格中选择现有 API。

  2. 在 API 下选择 Stages (阶段),然后在 Stages (阶段) 列表下选择现有阶段以打开 Stage Editor (阶段编辑器)

  3. Stage Editor (阶段编辑器) 中选择 Canary (金丝雀版本) 选项卡。

  4. 通过在 0.0 到 100.0 之间 (含) 增加或减少百分比数字,更新 Percentage of requests directed to Canary (直接向金丝雀版本提出请求的百分比)

  5. 更新 Canary Stage Variables (金丝雀版本阶段变量),包括添加、删除或修改所需的阶段变量。

  6. 通过选中或清除复选框,更新 Enable use of stage cache (启用对阶段缓存的使用) 选项。

  7. 保存更改。

使用 AWS CLI 更新金丝雀版本

要使用 AWS CLI 更新金丝雀版本,请调用 update-stage 命令。

要为金丝雀版本启用或禁用阶段缓存,请按以下所示调用 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

要调整金丝雀版本流量百分比,请调用 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

更新金丝雀版本阶段变量,包括添加、替换或删除金丝雀版本阶段变量:

aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations '[{ \ "op": "replace", \ "path": "/canarySettings/stageVariableOverides/newVar" \ "value": "newVal", \ }, { \ "op": "replace", \ "path": "/canarySettings/stageVariableOverides/var2" \ "value": "val4", \ }, { \ "op": "remove", \ "path": "/canarySettings/stageVariableOverides/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" \ }]'