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

设置 API Gateway 金丝雀版本部署

金丝雀版本是一种软件开发战略,新版本的 API(以及其他软件)部署作为金丝雀版本用于测试目的,而基础版本仍在相同阶段上部署为生产版本用于正常运营。在本文档中,为了方便讨论,我们将基础版本称为生产版本。虽然这样做是合理的,您也可以随意在任意非生产版本上应用金丝雀版本进行测试。

在金丝雀版本部署中,全部 API 流量按照预配置的比率,随机拆分到生产版本和金丝雀版本中。通常,金丝雀版本接收少量百分比的 API 流量,生产版本接受剩余部分。更新后的 API 功能仅对流经金丝雀版本的 API 流量可见。您可以调整金丝雀版本流量百分比来优化测试覆盖范围或性能。

通过将金丝雀版本流量保持在较小的比例并随机进行选择,大部分用户在任何时间都不会受到新版本中潜在错误的不利影响,而且没有任何一个用户会始终受到不利影响。

在测试指标满足您的要求之后,可以将金丝雀版本提升为生产版本,并在部署中禁用金丝雀版本。这使得新功能在生产阶段中可用。

API Gateway 中的金丝雀版本部署

在 API Gateway 中,金丝雀版本部署将部署阶段用于 API 基础版本的生产版本,并将金丝雀版本连接到阶段,用于提供 API 相对于基础版本的新版本。该阶段与初始部署关联,金丝雀版本与后续部署关联。在一开始,阶段和金丝雀版本均指向相同的 API 版本。在这一部分中,我们所说的阶段和生产版本是可以互换的,金丝雀和金丝雀版本也是可以互换的。

要部署带有金丝雀版本的 API,您必须将金丝雀版本设置添加到常规部署阶段。金丝雀版本设置描述基本金丝雀版本,阶段表示此部署中 API 的生产版本。要添加金丝雀版本设置,请在部署阶段上设置 canarySettings 并指定以下内容:

启用金丝雀版本之后,除非禁用金丝雀版本并从阶段中删除金丝雀版本设置,否则部署阶段无法与其他非金丝雀版本部署关联。

当您启用 API 执行日志记录时,金丝雀版本为所有金丝雀版本请求生成自己的日志和指标。它们报告给生产阶段 CloudWatch Logs 日志组,以及金丝雀版本特定的 CloudWatch Logs 日志组。访问日志记录也是如此。单独的金丝雀版本特定日志非常有用,可用于验证新 API 更改以及决定是否接受更改并将金丝雀版本提升为生产版本,或者放弃更改并从生产阶段还原金丝雀版本。

生产阶段执行日志组名为 API-Gateway-Execution-Logs/{rest-api-id}/{stage-name},金丝雀版本执行日志组名为 API-Gateway-Execution-Logs/{rest-api-id}/{stage-name}/Canary。对于访问日志记录,您必须创建新日志组或者选择现有日志组。金丝雀版本访问日志组名称具有 /Canary 后缀,附加到选定的日志组名中。

金丝雀版本可以使用阶段缓存 (如果启用),并在预定义的生存时间 (TTL) 周期内,使用缓存的条目将结果返回到下一个金丝雀版本请求。

在金丝雀版本部署中,API 的生产版本和金丝雀版本可以关联到同一个版本,也可以关联到不同版本。当它们与不同版本关联时,来自生产和金丝雀版本请求的响应单独缓存,阶段缓存返回生产和金丝雀版本请求的对应结果。当生产版本和金丝雀版本关联到同一个部署时,阶段缓存为两种类型的请求使用单个缓存键,并为来自生产版本和金丝雀版本的相同请求返回相同响应。