撰寫 Canary 指令碼 - Amazon CloudWatch

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

撰寫 Canary 指令碼

下列各節說明如何撰寫 Canary 指令碼,以及如何將 Canary 與其他 AWS 服務以及外部相依性和程式庫整合。

變更現有的 Selenium 指令碼以作為 Synthetics Canary 使用

您可以快速修改 Python 和 Selenium 用作 Canary 的現有指令碼。如需 Selenium 的詳細資訊,請參閱 www.selenium.dev/

在此範例中,我們會從以下 Selenium 指令碼開始:

from selenium import webdriver def basic_selenium_script(): browser = webdriver.Chrome() browser.get('https://example.com') browser.save_screenshot('loaded.png') basic_selenium_script()

轉換步驟如下。

若要將 Selenium 指令碼轉換可用作 Canary
  1. 將變更 import 陳述式,以使用來自 aws_synthetics 模組的 Selenium:

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    來自 aws_synthetics 的 Selenium 模組可確保 Canary 能發射指標和日誌,產生 HAR 檔案,並使用其他 CloudWatch Synthetics 功能。

  2. 建立一個處理常式函數並呼叫您的 Selenium 方法。處理常式是指令碼的進入點函數。

    如果您使用的是 syn-python-selenium-1.0,則處理常式函數必須命名為 handler。如果您使用的是 syn-python-selenium-1.1 或更高版本,函數可以具有任何名稱,但其必須與指令碼中使用的名稱相同。另外,如果您使用的是 syn-python-selenium-1.1 或更高版本,您可以將指令碼存放在任何資料夾下,並將該資料夾指定為處理常式名稱的一部分。

    def handler(event, context): basic_selenium_script()

指令碼現在已更新為 CloudWatch Synthetics Canary。這是更新後的指令碼:

webdriverSyntheticsWebDriver 類別的執行個體,而 傳回的瀏覽器webdriver.Chrome()SyntheticsBrowser 的執行個體。

from aws_synthetics.selenium import synthetics_webdriver as webdriver def basic_selenium_script(): browser = webdriver.Chrome() browser.get('https://example.com') browser.save_screenshot('loaded.png') def handler(event, context): basic_selenium_script()

變更現有的 Puppeteer Synthetics 指令碼以驗證非標準憑證

Synthetics Canary 的一個重要使用案例是讓您監控自己的端點。如果您想要監控尚未準備好供外部流量使用的端點,此監控有時可能表示您沒有由信任的第三方憑證授權單位簽署的適當憑證。

此案例的兩個可能解決方案如下:

當您使用 CloudWatch Synthetics Canary 時,不限於這兩個選項。您可以擴展這些功能,並透過擴展 Canary 程式碼來新增業務邏輯。

注意

在 Python 執行時間上執行的 Synthetics Canary 會先啟用 --ignore-certificate-errors旗標,因此這些 Canary 不應遇到任何使用非標準憑證組態到達網站的問題。