Python Canary スクリプトの記述 - Amazon CloudWatch

Python Canary スクリプトの記述

このスクリプトは、合格して正常な実行となり、文字列を返します。失敗した Canary がどのように見えるかを確認するには、fail = False を fail = True に変更します

def basic_custom_script(): # Insert your code here # Perform multi-step pass/fail check # Log decisions made and results to /tmp # Be sure to wait for all your code paths to complete # before returning control back to Synthetics. # In that way, your canary will not finish and report success # before your code has finished executing fail = False if fail: raise Exception("Failed basicCanary check.") return "Successfully completed basicCanary checks." def handler(event, context): return basic_custom_script()

複数の .py ファイルがある場合、またはスクリプトに依存関係がある場合は、それらすべてを単一の ZIP ファイルにバンドルできます。ZIP ファイルには、python などの python/my_canary_filename.py フォルダ内にメインの Canary .py ファイルが含まれている必要があります。この ZIP ファイルには、必要なすべてのフォルダとファイルが含まれている必要がありますが、他のファイルは python フォルダ内にある必要はありません。

スクリプトのエントリポイントのファイル名に一致するように、Canary のスクリプトのエントリポイントを my_canary_filename.handler として設定します。

Synthetics Canary を使用するようにするための既存の Selenium の変更

Canary として使用するために、Python と Selenium の既存のスクリプトをすばやく変更できます。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 モジュールから Selenium を使用するように aws_synthetics ステートメントを変更します。

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    aws_synthetics の Selenium モジュールは、Canary がメトリクスとログを出力し、HAR ファイルを生成し、他の CloudWatch Synthetics 機能で動作することを保証します。

  2. ハンドラ関数を作成し、Selenium メソッドを呼び出します。このハンドラーは、スクリプトのエントリポイント関数です。

    def handler(event, context): basic_selenium_script()

これで、スクリプトが CloudWatch Synthetics Canary に更新されました。更新されたスクリプトは次のとおりです。

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()