É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()
Empaquetage de vos fichiers Canary Python
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
Modifier l'instruction
importpour utiliser Selenium à partir du moduleaws_synthetics:from aws_synthetics.selenium import synthetics_webdriver as webdriverLe module Selenium de
aws_syntheticsgarantit que le script Canary peut émettre des métriques et des journaux, générer un fichier HAR et travailler avec d'autres fonctions CloudWatch Synthetics.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éehandler. Si vous utilisezsyn-python-selenium-1.1ou 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 utilisezsyn-python-selenium-1.1ou 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 mis à jour et peut désormais être utilisé comme script Canary CloudWatch Synthetics. Voici le script mis à jour :
webdriver est une instance de la classe SyntheticsWebDriver et 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 Synthetics Puppeteer existant pour authentifier des certificats non standard
Un cas d’utilisation fréquent des scripts Canary Synthetics consiste à surveiller vos propres points de terminaison. Si vous souhaitez surveiller un point de terminaison non encore accessible au trafic externe, il se peut que vous n’ayez pas encore de certificat valide signé par une autorité de certification tierce reconnue.
Les deux solutions possibles pour ce scénario sont les suivantes :
Pour authentifier un certificat client, consultez Comment valider l’authentification à l’aide d’Amazon CloudWatch Synthetics – Partie 2
. Pour authentifier un certificat autosigné, consultez Comment valider l’authentification à l’aide de certificats autosignés dans Amazon CloudWatch Synthetics
Vous n’êtes pas limité à ces deux options lorsque vous utilisez les scripts Canary CloudWatch Synthetics. Vous pouvez étendre ces fonctionnalités et ajouter votre propre logique métier en modifiant le code du script Canary.
Note
Les scripts Canary exécutés avec l’exécution Python disposent nativement du paramètre --ignore-certificate-errors activé, ce qui leur permet d’accéder sans problème à des sites utilisant des certificats non standard.