執行安全 Canary 更新 - Amazon CloudWatch

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

執行安全 Canary 更新

CloudWatch 合成安全 Canary 更新可讓您在套用變更之前測試現有 Canary 的更新。此功能可協助您驗證 Canary 與新執行時間和其他組態變更的相容性,例如程式碼或記憶體變更。這有助於將因錯誤更新所造成的潛在監控中斷降至最低。

透過在執行時間版本更新、組態變更和程式碼指令碼修改上使用 Canary 安全更新,您可以降低風險、維持不間斷的監控、在遞交、更新和減少停機時間之前驗證變更。

先決條件

確定 p 必要條件已完成。

  • AWS 具有 CloudWatch 合成許可的帳戶

  • 支援的執行時間版本上現有的 Canary (請參閱 限制 以取得相容的執行時間)

  • 執行試轉時包含相容的執行時間 (如需相容的執行時間限制,請參閱 )

最佳實務

以下是執行 Canary 時要遵循的一些最佳實務。

  • 執行試轉以驗證執行時間更新

  • 在生產更新至 Canary 之前執行試轉

  • 在乾執行後檢閱 Canary 日誌和成品

  • 使用試轉來驗證相依性和程式庫相容性

使用乾執行測試 Canary

您可以使用下列選項測試 Canary 更新:

使用 AWS Management Console的編輯工作流程

  1. 前往 CloudWatch 合成主控台。

  2. 選取您要更新的 Canary。

  3. 動作下拉式清單中,選擇編輯

    使用您要測試的變更來更新 Canary。例如,變更執行時間版本或編輯指令碼的程式碼。

  4. Canary 指令碼下,選擇 Start Dry Run 以立即測試和檢視結果,或選擇在頁面底部稍後驗證並儲存以開始測試,並在 Canary Details 頁面稍後檢視結果。

  5. 在試轉成功後,選擇提交以遞交您的 Canary 更新。

使用 AWS Management Console 更新批次中的 Canary

  1. 前往 CloudWatch 合成主控台。

  2. 選擇 Synthetics 清單頁面。

  3. 選取最多五個您要更新執行時間的 Canary。

  4. 動作下拉式清單中,選擇更新執行時間

  5. 針對新的執行時間選擇開始試轉,以開始試轉,並在更新之前測試您的變更。

  6. Synthetics 清單頁面上,您會在 Canary 的執行時間版本旁看到文字,顯示乾執行的進度 (這只會針對涉及執行時間更新的乾執行顯示)。

    一旦試轉成功,您會看到啟動更新文字。

  7. 選擇啟動更新以遞交執行時間更新。

  8. 如果試轉失敗,您會看到更新試轉失敗的文字。選擇文字以檢視 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

狀態StateReasonStateReasonCode 會顯示試轉的狀態。

使用 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,您必須明確指定程式碼參數。