Prueba local de un canario
En esta sección se explica cómo modificar, probar y depurar los canarios de CloudWatch Synthetics directamente en el editor de código Microsoft Visual Studio o en el editor de código JetBrains IDE. El entorno de depuración local utiliza un contenedor de Serverless Application Model (SAM) para simular una función de Lambda y emular el comportamiento de un canario Synthetics.
nota
No es práctico realizar una depuración local de canarios que dependan de la supervisión visual. La supervisión visual se basa en hacer capturas de pantalla de base durante una ejecución inicial y, a continuación, compararlas con las capturas de pantalla de las ejecuciones posteriores. En un entorno de desarrollo local, las ejecuciones no se almacenan ni se les realiza un seguimiento, y cada iteración es una ejecución independiente y autónoma. La ausencia de un historial de ejecuciones de canarios hace que no sea práctico depurar los canarios que se basan en la supervisión visual.
Requisitos previos
Elija o cree un bucket de Amazon S3 para almacenar artefactos de las ejecuciones de prueba de canarios locales, como archivos HAR y capturas de pantalla. Esto requiere que esté aprovisionado con IAM. Si se salta la configuración de los buckets de Amazon S3, podrá probar su canario de forma local, pero verá un mensaje de error sobre el bucket que falta y no tendrá acceso a los artefactos del canario.
Si utiliza un bucket de Amazon S3, se recomienda que configure el ciclo de vida del bucket para eliminar objetos al cabo de unos días, a fin de ahorrar costes. Para obtener más información, consulte Administración del ciclo de vida del almacenamiento.
Configure un perfil de AWS predeterminado para su cuenta de AWS. Para obtener más información, consulte Opciones de los archivos de configuración y credenciales.
Defina la región de AWS predeterminada del entorno de depuración en la región que prefiera, por ejemplo
us-west-2
.Instale la CLI de AWS SAM. Para obtener más información, consulte Instalación de la CLI de AWS SAM.
Instale Visual Studio Code Editor o JetBrains IDE. Para obtener más información, consulte Visual Studio Code
o JetBrains IDE . Instale Docker para trabajar con la CLI de AWS SAM. Asegúrese de iniciar el docker daemon. Para obtener más información, consulte Instalación de Docker para usarlo con la CLI de AWS SAM.
Como alternativa, puede instalar otro software de administración de contenedores, por ejemplo Rancher, siempre que utilice el tiempo de ejecución de Docker.
Instale una extensión de un conjunto de herramientas de AWS para su editor de preferencia. Para obtener más información, consulte Instalación de AWS Toolkit for Visual Studio Code o Instalación de AWS Toolkit for JetBrains.
Temas
- Configuración del entorno de pruebas y depuración
- Utilizar Visual Studio Code IDE
- Utilizar JetBrains IDE
- Ejecución de un canario de forma local con la CLI de SAM
- Cómo integrar su entorno de pruebas local en un paquete de canarios existente
- Cómo cambiar el tiempo de ejecución de CloudWatch Synthetics
- Errores comunes
Configuración del entorno de pruebas y depuración
Primero, clone el repositorio de Github que proporciona AWS ejecutando el siguiente comando. El repositorio contiene ejemplos de código para canarios de Node.js y de Python.
git clone https://github.com/aws-samples/synthetics-canary-local-debugging-sample.git
Realice una de las siguientes acciones, en función del idioma de los canarios.
Para los canarios de Node.js
Acceda al directorio de origen del canario de Node.js ejecutando el siguiente comando.
cd synthetics-canary-local-debugging-sample/nodejs-canary/src
Ingrese el siguiente comando para instalar las dependencias de canario.
npm install
Para canarios de Python
Acceda al directorio de origen del canario de Python ejecutando el siguiente comando.
cd synthetics-canary-local-debugging-sample/python-canary/src
Ingrese el siguiente comando para instalar las dependencias de canario.
pip3 install -r requirements.txt -t .
Utilizar Visual Studio Code IDE
El archivo de configuración de inicialización Visual Studio se encuentra en .vscode/launch.json
. Contiene configuraciones que permiten que el código Visual
Studio detecte el archivo de plantilla. Define una carga de Lambda con los parámetros necesarios para invocar el canario correctamente. Esta es la configuración de inicialización de un archivo canario de Node.js:
{ ... ... "lambda": { "payload": { "json": { // Canary name. Provide any name you like. "canaryName": "LocalSyntheticsCanary", // Canary artifact location "artifactS3Location": { "s3Bucket": "cw-syn-results-123456789012-us-west-2", "s3Key": "local-run-artifacts", }, // Your canary handler name "customerCanaryHandlerName": "heartbeat-canary.handler" } }, // Environment variables to pass to the canary code "environmentVariables": {} } } ] }
Si lo desea, también puede proporcionar los siguientes campos en el JSON de la carga:
Valores válidos de
s3EncryptionMode
:SSE_S3
|SSE_KMS
Valor válido de
s3KmsKeyArn
:ARN de clave KMS
Valores válidos de
activeTracing
:true
|false
Valor válido de
canaryRunId
:UUID
Este parámetro es obligatorio si el seguimiento activo está habilitado.
Para depurar los canarios de Visual Studio, agregue puntos de interrupción en el código de canario donde desee pausar la ejecución. Para agregar un punto de interrupción, seleccione el margen del editor y vaya al modo Ejecutar y depurar en el editor. Ejecute el canario haciendo clic en el botón de reproducción. Cuando se ejecute el canario, los registros se guardarán en la consola de depuración, lo que le proporcionará información en tiempo real sobre el comportamiento del canario. Si agregó puntos de interrupción, la ejecución de canario se detendrá en cada punto de interrupción, lo que le permitirá revisar el código e inspeccionar los valores de las variables, los métodos de instancia, los atributos de los objetos y la pila de llamadas a funciones.
No se incurre en ningún coste por ejecutar y depurar canarios de forma local, excepto por los artefactos almacenados en el bucket de Amazon S3 y las métricas de CloudWatch generadas por cada ejecución local.
Utilizar JetBrains IDE
Una vez instalada la extensión AWS Toolkit for JetBrains, asegúrese de que el complemento Node.js y el depurador de JavaScript estén habilitados para ejecutarse si va a depurar un canario de Node.js. A continuación, siga estos pasos:
Depuración de un canario con JetBrains IDE
En el panel de navegación izquierdo de JetBrains IDE, elija Lambda y, a continuación, elija la plantilla de configuración local.
Ingreso de un nombre de configuración de ejecución, por ejemplo
LocalSyntheticsCanary
Elija Desde plantilla, seleccione el explorador de archivos en el campo de plantilla y, a continuación, elija el archivo template.yml del proyecto, ya sea del directorio nodejs o del directorio python.
En la sección Entrada, introduzca la carga del canario, como se muestra en la siguiente pantalla.
{ "canaryName": "LocalSyntheticsCanary", "artifactS3Location": { "s3Bucket": "cw-syn-results-123456789012-us-west-2", "s3Key": "local-run-artifacts" }, "customerCanaryHandlerName": "heartbeat-canary.handler" }
También puede definir otras variables de entorno en el JSON de carga, como se muestra en Utilizar Visual Studio Code IDE.
Ejecución de un canario de forma local con la CLI de SAM
Utilice uno de los siguientes procedimientos para ejecutar el canario de forma local mediante la CLI de Serverless Application Model (SAM). Asegúrese de especificar el nombre de su propio bucket de Amazon S3 para s3Bucket
en event.json
Cómo usar la CLI de SAM para ejecutar un canario de Node.js
Acceda al directorio de origen ejecutando el siguiente comando.
cd synthetics-canary-local-debugging-sample/nodejs-canary
Introduzca los comandos siguientes.
sam build sam local invoke -e ../event.json
Cómo usar la CLI de SAM para ejecutar un canario de Python
Acceda al directorio de origen ejecutando el siguiente comando.
cd synthetics-canary-local-debugging-sample/python-canary
Introduzca los comandos siguientes.
sam build sam local invoke -e ../event.json
Cómo integrar su entorno de pruebas local en un paquete de canarios existente
Puede integrar la depuración local de canarios en su paquete de canarios existente copiando tres archivos:
Copie el archivo
template.yml
en la raíz de su paquete de canarios. Asegúrese de modificar la ruta para queCodeUri
apunte al directorio donde se encuentra su código de canario.Si está trabajando con un canario de Node.js, copie el archivo
cw-synthetics.js
en su directorio de origen de canarios. Si está trabajando con un canario de Python, copie elcw-synthetics.py
en su directorio de origen de canarios.Copie el archivo de configuración de inicialización .
vscode/launch.json
en la raíz del paquete. Asegúrese de colocarlo dentro del directorio.vscode
; créelo si aún no existe.
Cómo cambiar el tiempo de ejecución de CloudWatch Synthetics
Como parte de la depuración, puede intentar ejecutar un canario con un tiempo de ejecución de CloudWatch Synthetics diferente, en lugar del último. Para ello, busque el tiempo de ejecución que desee utilizar en una de las siguientes tablas. Asegúrese de seleccionar el tiempo de ejecución para la región correcta. A continuación, pegue el ARN de ese tiempo de ejecución en el lugar correspondiente del archivo template.yml
y, a continuación, ejecute el canario.
Tiempos de ejecución de Node.js
ARN para syn-nodejs-puppeteer-7.0
En la siguiente tabla se muestran los ARN que se deben utilizar para la versión syn-nodejs-puppeteer-7.0
del tiempo de ejecución de CloudWatch Synthetics en cada región de AWS en la que está disponible.
Región | ARN |
---|---|
Este de EE. UU. (Norte de Virginia) |
|
Este de EE. UU. (Ohio) |
|
Oeste de EE. UU. (Norte de California) |
|
Oeste de EE. UU. (Oregón) |
|
África (Ciudad del Cabo) |
|
Asia-Pacífico (Hong Kong) |
|
Asia-Pacífico (Hyderabad) |
|
Asia-Pacífico (Yakarta) |
|
Asia-Pacífico (Melbourne) |
|
Asia Pacific (Bombay) |
|
Asia-Pacífico (Osaka) |
|
Asia-Pacífico (Seúl) |
|
Asia-Pacífico (Singapur) |
|
Asia-Pacífico (Sídney) |
|
Asia-Pacífico (Tokio) |
|
Canadá (centro) |
|
Oeste de Canadá (Calgary |
|
China (Pekín) |
|
China (Ningxia); |
|
Europa (Fráncfort) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milán) |
|
Europa (París) |
|
Europa (España) |
|
Europa (Estocolmo) |
|
Europa (Zúrich) |
|
Israel (Tel Aviv) |
|
Medio Oriente (Baréin) |
|
Medio Oriente (EAU) |
|
América del Sur (São Paulo) |
|
AWS GovCloud (Este de EE. UU.) |
|
AWS GovCloud (Oeste de EE. UU.) |
|
ARN para syn-nodejs-puppeteer-6.2
En la siguiente tabla se muestran los ARN que se deben utilizar para la versión syn-nodejs-puppeteer-6.2
del tiempo de ejecución de CloudWatch Synthetics en cada región de AWS en la que está disponible.
Región | ARN |
---|---|
Este de EE. UU. (Norte de Virginia) |
|
Este de EE. UU. (Ohio) |
|
Oeste de EE. UU. (Norte de California) |
|
Oeste de EE. UU. (Oregón) |
|
África (Ciudad del Cabo) |
|
Asia-Pacífico (Hong Kong) |
|
Asia-Pacífico (Hyderabad) |
|
Asia-Pacífico (Yakarta) |
|
Asia-Pacífico (Melbourne) |
|
Asia Pacific (Bombay) |
|
Asia-Pacífico (Osaka) |
|
Asia-Pacífico (Seúl) |
|
Asia-Pacífico (Singapur) |
|
Asia-Pacífico (Sídney) |
|
Asia-Pacífico (Tokio) |
|
Canadá (centro) |
|
Oeste de Canadá (Calgary |
|
China (Pekín) |
|
China (Ningxia); |
|
Europa (Fráncfort) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milán) |
|
Europa (París) |
|
Europa (España) |
|
Europa (Estocolmo) |
|
Europa (Zúrich) |
|
Israel (Tel Aviv) |
|
Medio Oriente (Baréin) |
|
Medio Oriente (EAU) |
|
América del Sur (São Paulo) |
|
AWS GovCloud (Este de EE. UU.) |
|
AWS GovCloud (Oeste de EE. UU.) |
|
ARN para syn-nodejs-puppeteer-5.2
En la siguiente tabla se muestran los ARN que se deben utilizar para la versión syn-nodejs-puppeteer-5.2
del tiempo de ejecución de CloudWatch Synthetics en cada región de AWS en la que está disponible.
Región | ARN |
---|---|
Este de EE. UU. (Norte de Virginia) |
|
Este de EE. UU. (Ohio) |
|
Oeste de EE. UU. (Norte de California) |
|
Oeste de EE. UU. (Oregón) |
|
África (Ciudad del Cabo) |
|
Asia-Pacífico (Hong Kong) |
|
Asia-Pacífico (Hyderabad) |
|
Asia-Pacífico (Yakarta) |
|
Asia-Pacífico (Melbourne) |
|
Asia Pacific (Bombay) |
|
Asia-Pacífico (Osaka) |
|
Asia-Pacífico (Seúl) |
|
Asia-Pacífico (Singapur) |
|
Asia-Pacífico (Sídney) |
|
Asia-Pacífico (Tokio) |
|
Canadá (centro) |
|
Oeste de Canadá (Calgary |
|
China (Pekín) |
|
China (Ningxia); |
|
Europa (Fráncfort) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milán) |
|
Europa (París) |
|
Europa (España) |
|
Europa (Estocolmo) |
|
Europa (Zúrich) |
|
Israel (Tel Aviv) |
|
Medio Oriente (Baréin) |
|
Medio Oriente (EAU) |
|
América del Sur (São Paulo) |
|
AWS GovCloud (Este de EE. UU.) |
|
AWS GovCloud (Oeste de EE. UU.) |
|
Tiempos de ejecución de Python
ARN para syn-python-selenium-3.0
En la siguiente tabla se muestran los ARN que se deben utilizar para la versión syn-python-selenium-3.0
del tiempo de ejecución de CloudWatch Synthetics en cada región de AWS en la que está disponible.
Región | ARN |
---|---|
Este de EE. UU. (Norte de Virginia) |
|
Este de EE. UU. (Ohio) |
|
Oeste de EE. UU. (Norte de California) |
|
Oeste de EE. UU. (Oregón) |
|
África (Ciudad del Cabo) |
|
Asia-Pacífico (Hong Kong) |
|
Asia-Pacífico (Hyderabad) |
|
Asia-Pacífico (Yakarta) |
|
Asia-Pacífico (Melbourne) |
|
Asia Pacific (Bombay) |
|
Asia-Pacífico (Osaka) |
|
Asia-Pacífico (Seúl) |
|
Asia-Pacífico (Singapur) |
|
Asia-Pacífico (Sídney) |
|
Asia-Pacífico (Tokio) |
|
Canadá (centro) |
|
Oeste de Canadá (Calgary |
|
China (Pekín) |
|
China (Ningxia); |
|
Europa (Fráncfort) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milán) |
|
Europa (París) |
|
Europa (España) |
|
Europa (Estocolmo) |
|
Europa (Zúrich) |
|
Israel (Tel Aviv) |
|
Medio Oriente (Baréin) |
|
Medio Oriente (EAU) |
|
América del Sur (São Paulo) |
|
AWS GovCloud (Este de EE. UU.) |
|
AWS GovCloud (Oeste de EE. UU.) |
|
ARN para syn-python-selenium-2.1
En la siguiente tabla se muestran los ARN que se deben utilizar para la versión syn-python-selenium-2.1
del tiempo de ejecución de CloudWatch Synthetics en cada región de AWS en la que está disponible.
Región | ARN |
---|---|
Este de EE. UU. (Norte de Virginia) |
|
Este de EE. UU. (Ohio) |
|
Oeste de EE. UU. (Norte de California) |
|
Oeste de EE. UU. (Oregón) |
|
África (Ciudad del Cabo) |
|
Asia-Pacífico (Hong Kong) |
|
Asia-Pacífico (Hyderabad) |
|
Asia-Pacífico (Yakarta) |
|
Asia-Pacífico (Melbourne) |
|
Asia Pacific (Bombay) |
|
Asia-Pacífico (Osaka) |
|
Asia-Pacífico (Seúl) |
|
Asia-Pacífico (Singapur) |
|
Asia-Pacífico (Sídney) |
|
Asia-Pacífico (Tokio) |
|
Canadá (centro) |
|
Oeste de Canadá (Calgary |
|
China (Pekín) |
|
China (Ningxia); |
|
Europa (Fráncfort) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milán) |
|
Europa (París) |
|
Europa (España) |
|
Europa (Estocolmo) |
|
Europa (Zúrich) |
|
Israel (Tel Aviv) |
|
Medio Oriente (Baréin) |
|
Medio Oriente (EAU) |
|
América del Sur (São Paulo) |
|
AWS GovCloud (Este de EE. UU.) |
|
AWS GovCloud (Oeste de EE. UU.) |
|
Errores comunes
Error: ejecutar proyectos SAM de AWS de forma local requiere Docker. ¿Lo tiene instalado y se está ejecutando?
Asegúrese de iniciar Docker en su equipo.
Error en la invocación local de SAM: se produjo un error (ExpiredTokenException) al llamar a la operación GetLayerVersion: el token de seguridad incluido en la solicitud ha caducado
Asegúrese de que el perfil predeterminado de AWS esté configurado.
Errores más comunes
Para obtener más información sobre los errores comunes con el SAM, consulte Solución de problemas de la CLI de SAM de AWS.