Écriture d'un script Canary Python - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Écriture d'un script Canary Python

Ce script est transmis comme une exécution réussie et renvoie une chaîne. Pour voir à quoi ressemble un script Canary en échec, remplacez fail = False par 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()

Empaqueter vos fichiers Python Canary

Si vous avez plusieurs fichiers .py ou une dépendance à votre script, vous pouvez les regrouper dans un seul fichier ZIP. Si vous utilisez l'exécution syn-python-selenium-1.1, le fichier ZIP doit contenir votre fichier .py canary principal dans un dossier python, tel que python/my_canary_filename.py. Si vous utilisez syn-python-selenium-1.1 ou une version ultérieure, vous pouvez éventuellement utiliser un autre dossier, tel que python/myFolder/my_canary_filename.py.

Ce fichier ZIP doit contenir tous les dossiers et fichiers nécessaires, mais les autres fichiers n'ont pas besoin de se trouver dans le dossier python.

Assurez-vous de définir le point d'entrée de votre script Canary de sorte que my_canary_filename.functionName corresponde au nom du fichier et de la fonction du point d'entrée de votre script. Si vous utilisez une exécution syn-python-selenium-1.0, alors functionName doit être handler. Si vous utilisez syn-python-selenium-1.1 ou une version ultérieure, cette restriction du nom du gestionnaire ne s'applique pas et vous pouvez également stocker le script Canary dans un dossier séparé tel que python/myFolder/my_canary_filename.py. Si vous le stockez dans un dossier séparé, spécifiez ce chemin dans le point d'entrée de votre script, tel que myFolder/my_canary_filename.functionName.

Modification d'un script Selenium existant pour l'utiliser en tant que script Canary Synthetics

Vous pouvez rapidement modifier un script existant pour Python et Selenium pour l'utiliser comme script Canary. Pour de plus amples informations sur Selenium, consultez www.selenium.dev/.

Pour cet exemple, nous commencerons par le script Selenium suivant :

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

Les étapes de conversion sont les suivantes.

Pour convertir un script Selenium à utiliser comme script Canary
  1. Modifier l'instruction import pour utiliser Selenium à partir du module aws_synthetics :

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    Le module Selenium de aws_synthetics garantit que le Canary peut émettre des métriques et des journaux, générer un fichier HAR et fonctionner avec d'autres fonctionnalités de CloudWatch Synthetics.

  2. Créez une fonction de gestionnaire et appelez votre méthode Selenium. Le gestionnaire est la fonction de point d'entrée du script.

    Si vous utilisez syn-python-selenium-1.0, la fonction du gestionnaire doit être nommée handler. Si vous utilisez syn-python-selenium-1.1 ou une version ultérieure, la fonction peut porter n'importe quel nom, mais il doit être identique à celui utilisé dans le script. De plus, si vous utilisez syn-python-selenium-1.1 ou une version ultérieure, vous pouvez stocker vos scripts dans n'importe quel dossier et spécifier ce dossier dans le nom du gestionnaire.

    def handler(event, context): basic_selenium_script()

Le script est maintenant mis à jour pour devenir un canari CloudWatch Synthetics. Voici le script mis à jour :

webdriverIl s'agit d'une instance de la classe SyntheticsWebDriveret le navigateur renvoyé par webdriver.Chrome() est une instance de 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()

Modification d'un script Puppeteer Synthetics existant pour authentifier des certificats non standard

L'un des principaux cas d'utilisation des canaris Synthetics est de vous permettre de surveiller vos propres terminaux. Si vous souhaitez surveiller un point de terminaison qui n'est pas prêt pour le trafic externe, cette surveillance peut parfois signifier que vous ne disposez pas d'un certificat approprié signé par une autorité de certification tierce de confiance.

Les deux solutions possibles à ce scénario sont les suivantes :

Vous n'êtes pas limité à ces deux options lorsque vous utilisez les canaris CloudWatch Synthetics. Vous pouvez étendre ces fonctionnalités et ajouter votre logique métier en étendant le code Canary.

Note

L'indicateur est activé par défaut pour les canaris Synthetics exécutés sur des environnements d'exécution Python. Ces canaris ne devraient donc pas --ignore-certificate-errors avoir de problèmes pour accéder à des sites dont les configurations de certificats ne sont pas standard.