Escritura de un script de valor controlado Python
Este script pasa como una ejecución correcta y devuelve una cadena. Cómo ver el aspecto de un valor controlado erróneo, cambie error = Falso a error = verdadero
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()
Empaquetado de los archivos de valores controlados de Python
Si tiene más de un archivo .py o el script tiene una dependencia, puede agruparlos todos en un único archivo ZIP. Si utiliza el tiempo de ejecución syn-python-selenium-1.1
, el archivo ZIP debe contener el archivo .py principal del valor controlado dentro de una carpeta python
, como python/my_canary_filename.py
. Si utiliza syn-python-selenium-1.1
o uno posterior, puede utilizar una carpeta diferente, como python/myFolder/my_canary_filename.py
.
Este archivo ZIP debe contener todas las carpetas y archivos necesarios, pero los demás archivos no necesitan estar en la carpeta python
.
Asegúrese de establecer el punto de entrada del script del valor controlado como my_canary_filename.functionName
para que coincida con el nombre del archivo y el nombre de la función del punto de entrada de su script. Si utiliza el tiempo de ejecución syn-python-selenium-1.0
, el functionName
debe ser handler
. Si utiliza syn-python-selenium-1.1
o uno posterior, no se aplica esta restricción para el nombre del controlador y, además, usted puede optar por almacenar el valor controlado en una carpeta independiente, como python/myFolder/my_canary_filename.py
. Si lo almacena en una carpeta independiente, especifique esa ruta en el punto de entrada del script, como myFolder/my_canary_filename.functionName
.
Cambio de un script de Puppeteer existente para usarlo como un valor controlado de Synthetics
Se puede modificar rápidamente un script existente para Python y Selenium para ser utilizado como un valor controlado. Para obtener más información acerca de Selenium, consulte www.selenium.dev/
Para este ejemplo comenzaremos con el siguiente script de 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()
Los pasos de conversión son los siguientes:
Para convertir un script de Selenio para ser utilizado como un valor controlado
Cambie la instrucción
import
para usar Selenium del móduloaws_synthetics
:from aws_synthetics.selenium import synthetics_webdriver as webdriver
El módulo Selenium de
aws_synthetics
garantiza que el valor controlado pueda emitir métricas y registros, generar un archivo HAR y trabajar con otras características de CloudWatch Synthetics.Cree una función de controlador y llame al método de Selenium. El controlador es la función de punto de entrada para el script.
Si utiliza
syn-python-selenium-1.0
, la función del controlador debe denominarsehandler
. Si utilizasyn-python-selenium-1.1
o uno posterior, la función puede tener cualquier nombre, pero debe ser el mismo nombre que se usa en el script. Además, si utilizasyn-python-selenium-1.1
o uno posterior, puede almacenar los scripts en cualquier carpeta y especificar dicha carpeta como parte del nombre del controlador.def handler(event, context): basic_selenium_script()
El script ahora se ha actualizado para ser un valor controlado de CloudWatch Synthetics. Aquí está el script actualizado:
El webdriver
es una instancia de la clase SyntheticsWebDriver, y el navegador devuelto por webdriver.Chrome()
es una instancia 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()
Cambio de un script existente de Puppeteer Synthetics para autenticar certificados no estándar
Un caso de uso importante de canarios de Synthetics es poder supervisar sus propios puntos de conexión. Si quiere supervisar un punto de conexión que no está preparado para el tráfico externo, esta supervisión puede significar a veces que no dispone de un certificado adecuado firmado por una autoridad de certificación externa de confianza.
Dos posibles soluciones para este escenario son las siguientes:
Para autenticar un certificado de cliente, consulte How to validate authentication using Amazon CloudWatch Synthetics – Part 2
. Para autenticar un certificado autofirmado, consulte How to validate authentication with self-signed certificates in Amazon CloudWatch Synthetics
.
No solo tiene estas dos opciones cuando utiliza canarios de CloudWatch Synthetics. Puede ampliar estas características y agregar su lógica empresarial mediante la ampliación del código del canario.
nota
Los canarios de Synthetics que se ejecutan en tiempos de ejecución de Python tienen la marca --ignore-certificate-errors
habilitada de forma innata, por lo que esos canarios no deberían tener problemas para llegar a sitios con configuraciones de certificados no estándar.