Scrivere uno script canary Python - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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()

Impacchettizzazione dei file canary in 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
  1. Modifica l'istruzione import per utilizzare Selenium dal modulo aws_synthetics:

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    Il modulo Selenium di aws_synthetics assicura che il canarino possa emettere metriche e registri, generare un file HAR e funzionare con altre funzionalità di Synthetics. CloudWatch

  2. 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 denominata handler. Se utilizzi un tempo syn-python-selenium-1.1 o successivo, la funzione può avere un nome qualsiasi, purché corrisponda a quello utilizzato nello script. Inoltre, se utilizzi un tempo syn-python-selenium-1.1 o 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 è ora aggiornato per essere un canarino CloudWatch Synthetics. Ecco lo script aggiornato:

webdriverÈ un'istanza della classe SyntheticsWebDrivere 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 Synthetics canaries è il monitoraggio dei propri endpoint. Se volete monitorare un endpoint che non è pronto per il traffico esterno, questo monitoraggio a volte può significare che non avete un certificato adeguato firmato da un'autorità di certificazione terza affidabile.

Le due possibili soluzioni a questo scenario sono le seguenti:

Non sei limitato a queste due opzioni quando usi i canarini CloudWatch Synthetics. Puoi estendere queste funzionalità e aggiungere la tua logica aziendale estendendo il codice canarino.

Nota

I canary Synthetics in esecuzione su runtime Python hanno per natura il flag abilitato, quindi non dovrebbero --ignore-certificate-errors avere problemi a raggiungere siti con configurazioni di certificati non standard.