本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行安全 Canary 更新
CloudWatch 合成安全 Canary 更新可讓您在套用變更之前測試現有 Canary 的更新。此功能可協助您驗證 Canary 與新執行時間和其他組態變更的相容性,例如程式碼或記憶體變更。這有助於將因錯誤更新所造成的潛在監控中斷降至最低。
透過在執行時間版本更新、組態變更和程式碼指令碼修改上使用 Canary 安全更新,您可以降低風險、維持不間斷的監控、在遞交、更新和減少停機時間之前驗證變更。
先決條件
確定 p 必要條件已完成。
最佳實務
以下是執行 Canary 時要遵循的一些最佳實務。
執行試轉以驗證執行時間更新
在生產更新至 Canary 之前執行試轉
在乾執行後檢閱 Canary 日誌和成品
使用試轉來驗證相依性和程式庫相容性
使用乾執行測試 Canary
您可以使用下列選項測試 Canary 更新:
使用 AWS Management Console的編輯工作流程
前往 CloudWatch 合成主控台。
選取您要更新的 Canary。
從動作下拉式清單中,選擇編輯。
使用您要測試的變更來更新 Canary。例如,變更執行時間版本或編輯指令碼的程式碼。
在 Canary 指令碼下,選擇 Start Dry Run 以立即測試和檢視結果,或選擇在頁面底部稍後驗證並儲存以開始測試,並在 Canary Details 頁面稍後檢視結果。
在試轉成功後,選擇提交以遞交您的 Canary 更新。
使用 AWS Management Console 更新批次中的 Canary
前往 CloudWatch 合成主控台。
選擇 Synthetics 清單頁面。
選取最多五個您要更新執行時間的 Canary。
從動作下拉式清單中,選擇更新執行時間。
針對新的執行時間選擇開始試轉,以開始試轉,並在更新之前測試您的變更。
在 Synthetics 清單頁面上,您會在 Canary 的執行時間版本旁看到文字,顯示乾執行的進度 (這只會針對涉及執行時間更新的乾執行顯示)。
一旦試轉成功,您會看到啟動更新文字。
選擇啟動更新以遞交執行時間更新。
如果試轉失敗,您會看到更新試轉失敗的文字。選擇文字以檢視 Canary 詳細資訊頁面的偵錯連結。
使用 AWS CLI 或 SDK
API 會啟動所提供 Canary 名稱的試轉,MyCanary
並將執行時間版本更新為 syn-nodejs-puppeteer-10.0
。
aws synthetics start-canary-dry-run \ --name MyCanary \ --runtime-version syn-nodejs-puppeteer-10.0 // Or if you wanted to update other configurations: aws synthetics start-canary-dry-run \ --name MyCanary \ --execution-role-arn arn:aws:iam::123456789012:role/NewRole
API 會在 DryRunId
內傳回 DryRunConfigOutput
。
GetCanary
使用提供的 呼叫 DryRunId
,以接收 Canary 的試轉組態,以及DryRunConfig
包含列為 之試轉狀態的額外欄位LastDryRunExecutionStatus
。
aws synthetics get-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX
如需詳細資訊,請使用 GetCanaryRuns
搭配提供的 DryRunId
來擷取執行和其他資訊。
aws synthetics get-canary-runs \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX
成功試轉後,您可以UpdateCanary
搭配提供的 使用 ,DryRunId
以遞交您的變更。
aws synthetics update-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX
當它因任何原因失敗 (GetCanaryRuns 的結果會有詳細資訊) 時, 的結果GetCanaryRuns
會有一個成品位置,其中包含要偵錯的日誌。沒有日誌時,就無法建立試轉。您可以使用 驗證 GetCanary
。
aws synthetics get-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX
狀態、StateReason 和 StateReasonCode 會顯示試轉的狀態。
使用 AWS CloudFormation
在 Synthetics Canary 的範本中,提供DryRunAndUpdate
接受布林值 true
或 的欄位false
。
當值為true
每次更新時, 會執行試轉,在自動更新 Canary 之前驗證變更。當試轉失敗時,Canary 不會更新,並以有效原因使部署和 AWS CloudFormation 部署失敗。若要偵錯此問題,請使用 AWS Synthetics 主控台,或者如果使用 API,ArtifactS3Location
請使用 GetCanaryRuns
API 取得 ,然後下載*-log.txt
檔案以檢閱 Canary 日誌執行是否有錯誤。驗證之後,請修改 AWS CloudFormation 範本並重試部署,或使用上述 API 進行驗證。
當值為 時false
,合成不會執行試轉來驗證變更,而且會直接遞交您的更新。
如需故障 Canary 疑難排解的資訊,請參閱 對失敗的 Canary 進行故障診斷。
範本範例。
SyntheticsCanary: Type: 'AWS::Synthetics::Canary' Properties: Name: MyCanary RuntimeVersion: syn-nodejs-puppeteer-10.0 Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600} ... DryRunAndUpdate: true
限制
支援執行時間版本 – syn-nodejs-puppeteer-10.0+、syn-nodejs-playwright-2.0+ 和 syn-python-selenium-5.1+
您一次只能執行一個 Canary
當試轉失敗時,您無法更新 Canary
試轉無法測試任何排程欄位變更
注意
當您使用 Playwright Canary 的程式碼變更啟動試轉,並且您想要更新 Canary 而不提供相關聯的 時DryRunId
,您必須明確指定程式碼參數。