本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 API Gateway Canary 版本部署
Canary 版本
在 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
,並指定下列項目:
-
部署 ID,一開始與階段上設定的基本版本部署的 ID 完全相同。
-
Canary 版本中包含 0.0 到 100.0 之間的API流量百分比。
-
Canary Release 的階段變數,可以覆寫生產版本階段變數。
啟用 Canary Release 之後,除非停用 Canary Release 並從階段移除 Canary 設定,否則部署階段無法與其他非 Canary Release 部署建立關聯。
當您啟用API執行記錄時, Canary 版本會針對所有 Canary 請求產生自己的日誌和指標。它們會報告給生產階段 CloudWatch 日誌群組,以及 Canary 特定的 CloudWatch 日誌群組。這也適用於存取記錄。單獨的 Canary 特定日誌有助於驗證新API變更,並決定是否接受變更並將 Canary 版本提升至生產階段,或捨棄變更並從生產階段還原 Canary 版本。
生產階段執行日誌群組命名為 API-Gateway-Execution-Logs/
,而 Canary Release 執行日誌群組命名為 {rest-api-id}
/{stage-name}
API-Gateway-Execution-Logs/
。對於存取記錄,您必須建立新的日誌群組,或選擇現有日誌群組。Canary Release 存取日誌群組名稱會有附加至所選取日誌群組名稱的 {rest-api-id}
/{stage-name}
/Canary/Canary
尾碼。
如果啟用, Canary 版本可以使用階段快取來儲存回應,並使用快取的項目,在預先設定的 time-to-live(TTL) 期間內將結果傳回至下一個 Canary 請求。
在 Canary Release 部署中, 的生產版本和 Canary Release API可與相同版本或不同版本相關聯。當它們與不同版本建立關聯時,會分別快取生產和 Canary 請求的回應,而且階段快取會傳回生產和 Canary 請求的對應結果。當生產版本和 Canary Release 與相同部署建立關聯時,階段快取會將單一快取金鑰用於這兩種類型的請求,並傳回生產版本和 Canary Release 中相同請求的相同回應。