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
Ändern Sie die
import
-Anweisung, um Selenium aus demaws_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.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 Namenhandler
haben. Wenn Siesyn-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 Siesyn-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:
Informationen zur Authentifizierung eines Client-Zertifikats finden Sie unter So validieren Sie die Authentifizierung mit Amazon CloudWatch Synthetics — Teil 2.
Informationen zur Authentifizierung eines selbstsignierten Zertifikats finden Sie unter So validieren Sie die Authentifizierung mit selbstsignierten Zertifikaten
in Amazon Synthetics CloudWatch
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.