設定 API Gateway Canary 版本部署 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 API Gateway Canary 版本部署

Canary 版本是一種軟體開發策略,其中部署了新版本的 API(以及其他軟體) 用於測試目的,且基礎版本仍作為相同階段中正常操作的生產版本部署。為了進行討論,我們在這份文件中將基本版本參照為生產版本。雖然這十分合理,但是您可以在任何非生產版本上自由地套用 Canary Release 來進行測試。

在 Canary Release 部署中,總API流量會隨機分成生產版本,以及具有預先設定比率的 Canary 版本。通常, Canary Release 會接收少量流量,生產版本會佔用剩餘的API流量。只有透過 Canary 的API流量才能看見更新API的功能。您可以調整 Canary 流量百分比,以最佳化測試涵蓋範圍或效能。

透過保持較小的 Canary 流量以及隨機選取,新版本中的潛在錯誤在任何時間都不會對使用者造成嚴重影響,而且隨時都不會對單一使用者造成嚴重影響。

測試指標通過您的需求之後,即可將 Canary Release 提升至生產版本,並停用 Canary 進行部署。這讓新功能可在生產階段中使用。

API Gateway 中的 Canary 版本部署

在 API Gateway 中, Canary Release 部署會使用 基本版本生產版本的部署階段API,並將 Canary Release 連接至相對於基本版本的新版本階段API。階段是與初始部署以及具有後續部署的 Canary 建立關聯。一開始,階段和 Canary 都會指向相同的API版本。在本節中,我們會交換使用階段和生產版本,並交換使用 Canary 和 Canary Release。

若要API使用 Canary Release 部署 ,您可以將 Canary 設定新增至一般部署 的階段,以建立 Canary Release 部署https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.htmlCanary 設定說明基礎 Canary 版本,而階段代表此部署API內 的生產版本。若要新增 Canary 設定,請在部署階段上設定 canarySettings,並指定下列項目:

啟用 Canary Release 之後,除非停用 Canary Release 並從階段移除 Canary 設定,否則部署階段無法與其他非 Canary Release 部署建立關聯。

當您啟用API執行記錄時, Canary 版本會針對所有 Canary 請求產生自己的日誌和指標。它們會報告給生產階段 CloudWatch 日誌群組,以及 Canary 特定的 CloudWatch 日誌群組。這也適用於存取記錄。單獨的 Canary 特定日誌有助於驗證新API變更,並決定是否接受變更並將 Canary 版本提升至生產階段,或捨棄變更並從生產階段還原 Canary 版本。

生產階段執行日誌群組命名為 API-Gateway-Execution-Logs/{rest-api-id}/{stage-name},而 Canary Release 執行日誌群組命名為 API-Gateway-Execution-Logs/{rest-api-id}/{stage-name}/Canary。對於存取記錄,您必須建立新的日誌群組,或選擇現有日誌群組。Canary Release 存取日誌群組名稱會有附加至所選取日誌群組名稱的 /Canary 尾碼。

如果啟用, Canary 版本可以使用階段快取來儲存回應,並使用快取的項目,在預先設定的 time-to-live(TTL) 期間內將結果傳回至下一個 Canary 請求。

在 Canary Release 部署中, 的生產版本和 Canary Release API可與相同版本或不同版本相關聯。當它們與不同版本建立關聯時,會分別快取生產和 Canary 請求的回應,而且階段快取會傳回生產和 Canary 請求的對應結果。當生產版本和 Canary Release 與相同部署建立關聯時,階段快取會將單一快取金鑰用於這兩種類型的請求,並傳回生產版本和 Canary Release 中相同請求的相同回應。