Scrivere uno script canary Python
Questo script passa come esecuzione riuscita e restituisce una stringa. Per vedere come appare un canary fallito, passare “fail = False” a “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()
Impacchettamento dei file canary Python
Se disponi di più di un file .py o lo script ha una dipendenza, puoi raggrupparli tutti in un unico file ZIP. Se utilizzi il runtime syn-python-selenium-1.1, il file ZIP deve contenere il file del canary principale con estensione py all'interno di una cartella python, ad esempio python/my_canary_filename.py. Se utilizzi un tempo syn-python-selenium-1.1 o successivo, puoi utilizzare una cartella diversa, ad·esempio python/myFolder/my_canary_filename.py.
Questo file ZIP deve contenere tutte le cartelle e i file necessari, ma gli altri file non devono essere presenti nella cartella python.
Assicurati di impostare il punto di ingresso dello script del tuo canary in modo che my_canary_filename.functionName corrisponda al nome del file e al nome della funzione del punto di ingresso dello script. Se utilizzi il runtime syn-python-selenium-1.0, functionName deve corrispondere·a handler. Se utilizzi un tempo syn-python-selenium-1.1 o successivo, questa limitazione del nome del gestore non si applica e puoi anche archiviare il canary in una cartella separata, ad esempio python/myFolder/my_canary_filename.py. Se lo archivi in una cartella separata, definisci il percorso nel punto di ingresso dello script, ad esempio myFolder/my_canary_filename.functionName.
Modifica di uno script Selenium esistente da utilizzare come canary di Synthetics
Puoi modificare rapidamente uno script esistente per Python e Selenium da utilizzare come canary. Per ulteriori informazioni su Selenium, consulta www.selenium.dev/
Per questo esempio, inizieremo con il seguente script 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()
Le fasi di conversione sono le seguenti.
Per convertire uno script selenio da usare come canary
Modifica l'istruzione
importper utilizzare Selenium dal moduloaws_synthetics:from aws_synthetics.selenium import synthetics_webdriver as webdriverIl modulo Selenium di
aws_syntheticsassicura che il canary possa emettere parametri e log, generare un file HAR e lavorare con altre funzionalità di CloudWatch Synthetics.Crea una funzione del gestore e chiama il tuo metodo Selenium. Il gestore è la funzione del punto di ingresso per lo script.
Se utilizzi un tempo
syn-python-selenium-1.0, la funzione del gestore deve essere denominatahandler. Se utilizzi un temposyn-python-selenium-1.1o successivo, la funzione può avere un nome qualsiasi, purché corrisponda a quello utilizzato nello script. Inoltre, se utilizzi un temposyn-python-selenium-1.1o successivo, puoi archiviare gli script in qualsiasi cartella e definire quest'ultima nel nome del gestore.def handler(event, context): basic_selenium_script()
Lo script viene ora aggiornato per essere un canary di CloudWatch Synthetics. Ecco lo script aggiornato:
Il webdriver è un'istanza della classe SyntheticsWebDriver e il browser restituito da webdriver.Chrome() è un'istanza di 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()
Modifica di uno script Puppeteer Synthetics esistente per autenticare certificati non standard
Un caso d'uso importante per i canary di Synthetics è il monitoraggio dei propri endpoint. Se vuoi monitorare un endpoint che non è ancora pronto per il traffico esterno, questo tipo di monitoraggio può talvolta implicare l'assenza di un certificato valido firmato da un'autorità di certificazione terza e affidabile.
Due possibili soluzioni a questo scenario sono le seguenti:
Per autenticare un certificato client, consulta How to validate authentication using Amazon CloudWatch Synthetics – Part 2
. Per autenticare un certificato autofirmato, consulta How to validate authentication with self-signed certificates in Amazon CloudWatch Synthetics
Non sei limitato a queste due opzioni quando usi i canary CloudWatch Synthetics. Puoi estendere queste funzionalità e aggiungere la tua logica aziendale ampliando il codice canary.
Nota
I canary Synthetics in esecuzione su runtime Python hanno nativamente il flag --ignore-certificate-errors abilitato, quindi non dovrebbero avere problemi a raggiungere siti con configurazioni di certificati non standard.