更新 Canary 版本 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

更新 Canary 版本

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

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

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

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

更新现有的金丝雀设置
  1. 登录 API Gateway 控制台并选择现有的 REST API。

  2. 在主导航窗格中,选择阶段,然后选择一个现有阶段。

  3. 选择金丝雀选项卡,然后选择编辑。您可能需要选择右箭头按钮以显示金丝雀选项卡。

  4. 通过在 0.0 到 100.0 之间(含)增加或减少百分比数字,更新请求分布

  5. 选中或清除阶段缓存复选框。

  6. 添加、移除或修改金丝雀阶段变量

  7. 选择保存

使用 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": "/canarySettings/percentTraffic", "value": "20.0" }, { "op": "replace", "path": "/canarySettings/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" }]'