Ein Python-Canary-Skript schreiben - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ein Python-Canary-Skript schreiben

Dieses Skript wird als erfolgreiche Ausführung übergeben und gibt eine Zeichenfolge zurück. Um zu sehen, wie ein fehlgeschlagener Canary aussieht, ändern Sie Fail = False in 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()

Verpacken Sie Ihre kanarischen Python-Dateien

Wenn Sie mehr als eine .py-Datei haben oder Ihr Skript eine Abhängigkeit aufweist, können Sie sie alle in einer einzigen ZIP-Datei bündeln. Wenn Sie die syn-python-selenium-1.1-Laufzeit verwenden, muss die ZIP-Datei Ihre canary.py-Datei in einem python-Ordner enthalten (z. B. python/my_canary_filename.py). Wenn Sie syn-python-selenium-1.1 oder neuer verwenden, können Sie auch einen anderen Ordner nutzen, etwa python/myFolder/my_canary_filename.py.

Diese ZIP-Datei sollte alle erforderlichen Ordner und Dateien enthalten, die anderen Dateien müssen sich jedoch nicht im python-Ordner befinden.

Legen Sie den Skript-Eintrittspunkt Ihres Canary als my_canary_filename.functionName fest, damit er mit dem Datei- und Funktionsnamen des Skript-Eintrittspunkts übereinstimmt. Wenn Sie die Laufzeit syn-python-selenium-1.0 verwenden, muss functionName handler sein. Wenn Sie syn-python-selenium-1.1 oder neuer verwenden, gilt diese Einschränkung für den Handlernamen nicht und Sie können den Canary auch in einem separaten Ordner (z. B. python/myFolder/my_canary_filename.py) ablegen. Wenn Sie ihn in einem separaten Ordner speichern, geben Sie den entsprechenden Pfad in Ihrem Skript-Eintrittspunkt an (z. B. myFolder/my_canary_filename.functionName).

Ändern eines vorhandenen Selenium-Skripts zur Verwendung eines Synthetics-Canarys

Sie können schnell ein vorhandenes Skript für Python und Selenium ändern, um als Canary verwendet zu werden. Weitere Informationen zu Selenium finden Sie unter www.selenium.dev/.

In diesem Beispiel beginnen wir mit dem folgenden Selenium-Skript:

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

Für die Konvertierung sind die folgenden Schritte durchzuführen.

So konvertieren Sie ein Selenium-Skript für die Verwendung als Canary
  1. Ändern Sie die import-Anweisung, um Selenium aus dem aws_synthetics-Modul zu verwenden:

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    Das Selenium-Modul von aws_synthetics stellt sicher, dass der Canary Metriken und Protokolle ausgeben, eine HAR-Datei generieren und mit anderen CloudWatch Synthetics-Funktionen arbeiten kann.

  2. Erstellen Sie eine Handler-Funktion und rufen Sie Ihre Selenium-Methode auf. Der Handler ist die Eintrittsfunktion für das Skript.

    Wenn Sie syn-python-selenium-1.0 verwenden, muss die Handler-Funktion den Namen handler haben. Wenn Sie syn-python-selenium-1.1 oder neuer verwenden, kann die Funktion einen beliebigen Namen haben. Dieser Name muss jedoch mit dem Namen im Skript übereinstimmen. Wenn Sie syn-python-selenium-1.1 oder neuer verwenden, können Sie Ihre Skripte außerdem in einem beliebigen Ordner ablegen und diesen Ordner als Teil des Handlernamens angeben.

    def handler(event, context): basic_selenium_script()

Das Skript wurde jetzt aktualisiert und ist jetzt ein CloudWatch Synthetics-Kanarienvogel. Nachfolgend finden Sie das aktualisierte Skript:

Das webdriver ist eine Instanz der Klasse SyntheticsWebDriverund der von zurückgegebene Browser webdriver.Chrome() ist eine Instanz von 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()

Änderung eines vorhandenen Puppeteer Synthetics-Skripts zur Authentifizierung von nicht standardmäßigen Zertifikaten

Ein wichtiger Anwendungsfall für Synthetics Canaries ist die Überwachung Ihrer eigenen Endgeräte. Wenn Sie einen Endpunkt überwachen möchten, der nicht für externen Datenverkehr bereit ist, kann diese Überwachung manchmal bedeuten, dass Sie kein richtiges Zertifikat haben, das von einer vertrauenswürdigen Zertifizierungsstelle eines Drittanbieters signiert wurde.

Zwei mögliche Lösungen für dieses Szenario lauten wie folgt:

Sie sind nicht auf diese beiden Optionen beschränkt, wenn Sie CloudWatch Synthetics Canaries verwenden. Sie können diese Funktionen erweitern und Ihre Geschäftslogik hinzufügen, indem Sie den Canary-Code erweitern.

Anmerkung

Synthetics Canaries, die auf Python-Laufzeiten laufen, haben das --ignore-certificate-errors Flag von Haus aus aktiviert, sodass diese Canaries keine Probleme haben sollten, Websites mit nicht standardmäßigen Zertifikatkonfigurationen zu erreichen.