本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Canary Release
在 Canary Release 部署中,總 API 流量會隨機分為生產版本以及具有預先設定比率的 Canary Release。一般而言,Canary Release 會收到一小部分的 API 流量,而生產版本則會佔用其餘流量。透過 Canary,只有 API 流量才能看到更新過的 API 功能。您可以調整 Canary 流量百分比,以最佳化測試涵蓋範圍或效能。
透過保持較小的 Canary 流量以及隨機選取,新版本中的潛在錯誤在任何時間都不會對使用者造成嚴重影響,而且隨時都不會對單一使用者造成嚴重影響。
測試指標通過您的需求之後,即可將 Canary Release 提升至生產版本,並停用 Canary 進行部署。這讓新功能可在生產階段中使用。
主題
API Gateway 中的 Canary Release 部署
在 API Gateway 中,Canary Release 部署會使用 API 基本版本之生產版本的部署階段,並連接至 API 新版本之 Canary Release 的階段 (相較於基本版本)。階段是與初始部署以及具有後續部署的 Canary 建立關聯。一開始,階段和 Canary 都指向相同的 API 版本。在本節中,我們會交換使用階段和生產版本,並交換使用 Canary 和 Canary Release。
若要部署具有 Canary Release 的 API,請將 Canary 設定新增至一般部署的階段,以建立 Canary Release 部署。Canary 設定說明基礎 Canary Release,而階段代表此部署內 API 的生產版本。若要新增 Canary 設定,請在部署階段上設定 canarySettings
,並指定下列項目:
-
部署 ID,一開始與階段上設定的基本版本部署的 ID 完全相同。
-
Canary Release 的 API 流量百分比,介於 0.0 與 100.0 (含) 之間。
-
Canary Release 的階段變數,可以覆寫生產版本階段變數。
-
使用階段快取 (屬於 Canary 請求),如果設定 useStageCache 並在階段上啟用 API 快取。
啟用 Canary Release 之後,除非停用 Canary Release 並從階段移除 Canary 設定,否則部署階段無法與其他非 Canary Release 部署建立關聯。
當您啟用 API 執行記錄時,Canary Release 會有針對所有 Canary 請求產生的專屬日誌和指標。它們會回報至生產階段 CloudWatch Logs 日誌群組,以及 Canary 特定 CloudWatch Logs 日誌群組。這也適用於存取記錄。不同的 Canary 特定日誌適用於驗證新的 API 變更,以及決定是否接受變更,並將 Canary Release 提升至生產階段,或是捨棄變更,並從生產階段還原 Canary Release。
生產階段執行日誌群組命名為 API-Gateway-Execution-Logs/
,而 Canary Release 執行日誌群組命名為 {rest-api-id}
/{stage-name}
API-Gateway-Execution-Logs/
。對於存取記錄,您必須建立新的日誌群組,或選擇現有日誌群組。Canary Release 存取日誌群組名稱會有附加至所選取日誌群組名稱的 {rest-api-id}
/{stage-name}
/Canary/Canary
尾碼。
在預先設定的存活期 (TTL) 內,Canary Release 可以使用階段快取 (啟用時) 存放回應,以及使用快取項目將結果傳回至下一個 Canary 請求。
在 Canary Release 部署中,API 的生產版本和 Canary Release 可以與相同的版本或不同的版本建立關聯。當它們與不同版本建立關聯時,會分別快取生產和 Canary 請求的回應,而且階段快取會傳回生產和 Canary 請求的對應結果。當生產版本和 Canary Release 與相同部署建立關聯時,階段快取會將單一快取金鑰用於這兩種類型的請求,並傳回生產版本和 Canary Release 中相同請求的相同回應。