

# Uso de esquemas de valores controlados
<a name="CloudWatch_Synthetics_Canaries_Blueprints"></a>

Esta sección proporciona detalles sobre cada uno de los esquemas de valor controlado y las tareas para las que cada esquema es más adecuado. Se proporcionan esquemas para los siguientes tipos de valor controlado: 

**Topics**
+ [Supervisión de latidos](#CloudWatch_Synthetics_Canaries_Blueprints_Heartbeat)
+ [Valor controlado de la API](#CloudWatch_Synthetics_Canaries_Blueprints_API)
+ [Verificador de enlaces que no funcionan](#CloudWatch_Synthetics_Canaries_Blueprints_Broken_Links)
+ [Proyecto de supervisión visual](#CloudWatch_Synthetics_Canaries_Blueprints_VisualTesting)
+ [Registrador de valores controlados](#CloudWatch_Synthetics_Canaries_Blueprints_Recorder)
+ [Generador de flujo de trabajo de la GUI](#CloudWatch_Synthetics_Canaries_Blueprints_GUI_Workflow)
+ [Esquema de comprobaciones múltiples](#CloudWatch_Synthetics_Canaries_Blueprints_Multichecks_Blueprint)
+ [Creación de canarios de esquemas de comprobaciones múltiples](CloudWatch_Synthetics_Canaries_MultiCheck_Blueprint.md)

Cuando se utiliza un esquema para crear un valor controlado, mientras rellena los campos en la consola de CloudWatch, el área de la página **Editor de scripts** muestra el valor controlado que se está creando como script Node.js. También puede editar su valor controlado en esta área para personalizarlo aún más.

## Supervisión de latidos
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Heartbeat"></a>

Los scripts de latidos cargan la URL especificada y almacenan una captura de pantalla de la página y un archivo HTTP (archivo HAR). También almacenan registros de direcciones URL a las que se accede. 

Puede utilizar los archivos HAR para ver datos de rendimiento detallados sobre las páginas web. Puede analizar la lista de solicitudes web y detectar problemas de rendimiento, como el tiempo de carga de un elemento.

Si el valor controlado utiliza `syn-nodejs-puppeteer-3.1` o una versión posterior en el tiempo de ejecución, puede utilizar el esquema de supervisión de latidos para supervisar varias direcciones URL y ver el estado, la duración, las capturas de pantalla asociadas y el motivo del error para cada URL en el resumen de pasos del informe de ejecución del valor controlado.

## Valor controlado de la API
<a name="CloudWatch_Synthetics_Canaries_Blueprints_API"></a>

Los canaries de API pueden probar las funciones básicas de lectura y escritura de una API REST. REST significa *transferencia de estado representacional* y es un conjunto de reglas que siguen los desarrolladores al crear una API. Una de estas reglas establece que un enlace a una URL específica debe devolver un fragmento de datos.

Los canaries pueden trabajar con cualquier API y probar todo tipo de funcionalidades. Cada valor controlado puede hacer varias llamadas a la API.

En los canarios que usan la versión de tiempo de ejecución `syn-nodejs-2.2` o posterior, el esquema de canario de API admite canarios de varios pasos que supervisan las API como pasos HTTP. Puede probar varias API en un único valor controlado. Cada paso es una solicitud independiente que puede acceder a una URL diferente, usar cabeceras diferentes y utilizar diferentes reglas para la captura de cabeceras y de cuerpos de respuesta. Al no capturar cabeceras y cuerpo de respuesta, puede evitar que se registre información confidencial. 

Cada solicitud en un valor controlado de API consta de la siguiente información:
+ El *punto de enlace*, que es la URL que solicita.
+ El *método*, que es el tipo de solicitud que se envía al servidor. Las API REST admiten operaciones GET (lectura), POST (escritura), PUT (actualización), PATCH (actualización) y DELETE (eliminación).
+ Los *encabezados*, que proporcionan información tanto al cliente como al servidor. Se utilizan para la autenticación y para proporcionar información sobre el contenido del cuerpo. Para obtener una lista de cabeceras válidas, consulte [HTTP Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) (Cabeceras HTTP).
+ Los *datos* (o el *cuerpo*), contienen información que se enviará al servidor. Esto se utiliza solo para solicitudes POST, PUT, PATCH o DELETE.

**nota**  
Los esquemas de canarios de API no son compatibles con los tiempos de ejecución de Playwright.

El esquema de valor controlado de API admite los métodos GET y POST. Cuando utilice este valor controlado, debe especificar los encabezados. Por ejemplo, puede especificar **Authorization** como **Clave** y especificar los datos de autorización necesarios como **Valor** para esa clave.

Si está probando una solicitud POST, especifique también el contenido que se va a publicar en el campo **Datos**.

 **Integración con la API Gateway** 

El proyecto de la API está integrado con Amazon API Gateway. Esto le permite seleccionar una API de API Gateway y un escenario desde la misma cuenta y región de AWS que el valor controlado, o cargar una plantilla de Swagger desde API Gateway para la supervisión de la API entre cuentas y entre regiones. A continuación, puede elegir el resto de los detalles en la consola para crear el valor controlado, en lugar de introducirlos desde cero. Para obtener más información sobre API Gateway, consulte [What is Amazon API Gateway?](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) (¿Qué es Amazon API Gateway?) 

 **Uso de una API privada** 

Puede crear un valor controlado que utilice una API privada en Amazon API Gateway. Para obtener más información, consulte [Creación de una API privada en Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html).

## Verificador de enlaces que no funcionan
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Broken_Links"></a>

El verificador de enlaces que no funcionan recopila todos los enlaces dentro de la dirección URL que está probando mediante `document.getElementsByTagName('a')`. Solo prueba el número de enlaces que especifique; la dirección URL en sí se cuenta como primer enlace. Por ejemplo, si desea comprobar todos los enlaces de una página que contiene cinco enlaces, debe especificar que el valor controlado siga seis enlaces.

Los valores controlados de verificadores de enlaces que no funcionan que se han creado con el tiempo de ejecución `syn-nodejs-2.0-beta` o posterior admiten las siguientes características adicionales:
+ Proporciona un informe que incluye los enlaces que se han verificado, el código de estado, el motivo del error (si los hay) y las capturas de pantalla de la página fuente y de destino.
+ Al ver los resultados del valor controlado, puede utilizar el filtro para ver solo los enlaces que no funcionan y, a continuación, corregir el enlace en función del motivo del error.
+ Esta versión toma capturas de pantalla de la página fuente anotadas para cada enlace y resalta el anclaje donde se encontró el enlace. Los componentes ocultos no se anotan.
+ Puede configurar esta versión para tomar capturas de pantalla de páginas fuente y de destino, pero solo páginas fuente o páginas de destino.
+ Esta versión corrige un problema de la versión anterior en el que el script del valor controlado se detiene después del primer enlace roto, incluso cuando se raspan más enlaces desde la primera página.

**nota**  
Los esquemas de verificador de enlaces que no funcionan no son compatibles con los tiempos de ejecución de Playwright.

Para actualizar un canario existente con `syn-1.0` para utilizar el nuevo tiempo de ejecución, debe eliminar y volver a crear el canario. Actualizar un valor controlado existente al nuevo tiempo de ejecución no hace que estas características estén disponibles.

Un valor controlado de verificadores de enlaces que no funcionan detecta los siguientes tipos de errores en un enlace:
+ 404 Página no encontrada
+ Nombre de host no válido
+ URL incorrecta. Por ejemplo, a la URL le falta un corchete, tiene barras diagonales adicionales o utiliza el protocolo incorrecto.
+ Código de respuesta HTTP no válido
+ El servidor host devuelve respuestas vacías sin contenido ni código de respuesta.
+ Las solicitudes HTTP agotan constantemente el tiempo de espera durante la ejecución del valor controlado.
+ El host interrumpe constantemente las conexiones porque está mal configurado o está demasiado ocupado.

## Proyecto de supervisión visual
<a name="CloudWatch_Synthetics_Canaries_Blueprints_VisualTesting"></a>

El esquema de supervisión visual incluye un código para comparar capturas de pantalla que se toman durante una ejecución de valor controlado con capturas de pantalla que se toman durante una ejecución de valor controlado de línea de base. Si la discrepancia entre las dos capturas de pantalla está más allá de un porcentaje umbral, el valor controlado falla. La supervisión visual es compatible con canaries que ejecutan **syn-puppeteer-node-3.2** y versiones posteriores. Actualmente, no es compatible con canarios que ejecutan Python y Selenium o utiliza tiempos de ejecución de Playwright.

El esquema de supervisión visual incluye la siguiente línea de código en el script de valor controlado de esquema predeterminado, que permite la supervisión visual.

```
syntheticsConfiguration.withVisualCompareWithBaseRun(true);
```

La primera vez que el valor controlado se ejecuta correctamente después de agregar esta línea al script, utiliza las capturas de pantalla que se toman durante esa ejecución como línea de base para la comparación. Después de la primera ejecución del valor controlado, se puede usar la consola de CloudWatch para editar el valor controlado para realizar cualquiera de las siguientes acciones:
+ Establecer la siguiente ejecución del valor controlado como la nueva línea de base.
+ Establecer límites en la captura de pantalla de línea de base actual para designar áreas de la captura de pantalla que se ignorarán durante las comparaciones visuales.
+ Eliminar una captura de pantalla de ser utilizada para la supervisión visual.

Para obtener más información sobre cómo usar la consola de CloudWatch para editar un valor controlado, consulte [Edición o eliminación de un valor controlado](synthetics_canaries_deletion.md).

También puede cambiar la ejecución del valor controlado que se utiliza como línea de base mediante los parámetros ` nextrun` o `lastrun` o mediante la especificación de un ID de ejecución de valor controlado en la API [UpdateCanary](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_UpdateCanary.html).

Cuando utilice el proyecto de supervisión visual, ingrese la dirección URL donde desea que se tome la captura de pantalla y especifique un umbral de diferencia como porcentaje. Después de la ejecución de la línea de base, las futuras ejecuciones del valor controlado que detectan una diferencia visual mayor que ese umbral desencadenan un fallo del valor controlado. Después de la ejecución de la línea de base, también puede editar el valor controlado para “dibujar” límites en la captura de pantalla de línea de base que desea omitir durante la supervisión visual.

La característica de supervisión visual está impulsada por el conjunto de herramientas de software de código abierto ImageMagick. Para obtener más información, consulte [ImageMagick](https://imagemagick.org/index.php).

## Registrador de valores controlados
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Recorder"></a>

Con el esquema del registrador de valores controlados, puede utilizar CloudWatch Synthetics Recorder para registrar las acciones de cliqueo y tipeo en un sitio web y generar automáticamente un script Node.js que se puede utilizar para crear un valor controlado que siga los mismos pasos. Recorder CloudWatch Synthetics es una extensión de Amazon para Google Chrome. El registrador de canarios no es compatible con los canarios que utilizan el tiempo de ejecución de Playwright.

**Créditos**: el registrador CloudWatch Synthetics se basa en el [Registrador sin procesador](https://github.com/checkly/headless-recorder).

Para obtener más información, consulte [Uso del registrador de CloudWatch Synthetics para Google Chrome](CloudWatch_Synthetics_Canaries_Recorder.md).

## Generador de flujo de trabajo de la GUI
<a name="CloudWatch_Synthetics_Canaries_Blueprints_GUI_Workflow"></a>

El proyecto del generador de flujo de trabajo de la GUI verifica que se pueden realizar acciones en la página web. Por ejemplo, si tiene una página web con un formulario de inicio de sesión, el valor controlado puede rellenar los campos de usuario y contraseña y enviar el formulario para verificar que la página web funciona correctamente.

Cuando utiliza un esquema para crear este tipo de valor controlado, especifique las acciones que desea que el valor controlado realice en la página web. Las acciones que puede utilizar son las siguientes:
+ **Clic**: selecciona el elemento especificado y simula un usuario al hacer clic o al elegir el elemento.

  Para especificar el elemento en un script Node.js, utilice `[id=]` o ` a[class=]`.

  Para especificar el elemento en un script Python, utilice `xpath //*[@id=]` o ` //*[@class=]`.
+ **Verificación del selector**: verifica que el elemento especificado existe en la página web. Esta prueba es útil para comprobar que una acción anterior hace que los elementos correctos rellenen la página.

  Para especificar el elemento que se va a verificar en un script Node.js, utilice `[id=]` o ` a[class=]`.

  Para especificar el elemento que se va a verificar en un script Python, utilice `xpath //*[@id=]` o `//*[class=]`.
+ **Verificación de texto**: verifica que la cadena especificada está contenida en el elemento de destino. Esta prueba es útil para verificar que una acción anterior ha causado que se muestre el texto correcto.

  Para especificar el elemento en un script Node.js, utilice un formato como ` div[@id=]//h1`, ya que esta acción utiliza la función `waitForXPath` en Puppeteer.

  Para especificar el elemento en un script Python, utilice el formato xpath como ` //*[@id=] ` o //\$1 [@class =] porque esta acción utiliza la función `implicitly_wait` en Selenium.
+ **Ingresar texto**: ingresa el texto especificado en el elemento de destino.

  Para especificar el elemento que se va a verificar en un script Node.js, utilice `[id=]` o ` a[class=]`.

  Para especificar el elemento que se va a verificar en un script Python, utilice `xpath //*[@id=]` o `//*[@class=]`.
+ **Clic con navegación**: espera a que toda la página se cargue después de elegir el elemento especificado. Esto es más útil cuando necesita volver a cargar la página.

  Para especificar el elemento en un script Node.js, utilice `[id=]` o ` a[class=]`.

  Para especificar el elemento en un script Python, utilice `xpath //*[@id=]` o ` //*[@class=]`.

Por ejemplo, el siguiente blueprint utiliza Node.js. Hace clic en **firstButton** en la URL especificada, comprueba que aparece el selector esperado con el texto esperado, ingresa el nombre `Test_Customer` en el campo **Nombre**, hace clic en el botón **Inicio de sesión** y, luego, comprueba que el inicio de sesión sea complete correctamente mediante la verificación del texto **Le damos la bienvenida** en la página siguiente.

![\[La página de creación de valor controlado en la consola, con campos completados para el esquema de flujo de trabajo de la GUI.\]](http://docs.aws.amazon.com/es_es/AmazonCloudWatch/latest/monitoring/images/canary_create_gui_workflow.PNG)


Los valores controlados de flujo de trabajo de la GUI que utilizan los siguientes tiempos de ejecución también proporcionan un resumen de los pasos ejecutados para cada ejecución de un valor controlado. Puede utilizar las capturas de pantalla y el mensaje de error asociados con cada paso para encontrar la causa raíz del error.
+ `syn-nodejs-2.0` o posterior.
+ `syn-python-selenium-1.0` o posterior.

## Esquema de comprobaciones múltiples
<a name="CloudWatch_Synthetics_Canaries_Blueprints_Multichecks_Blueprint"></a>

El esquema de comprobaciones múltiples simplifica la creación de canarios. Reduce los costos porque utiliza una configuración JSON sencilla que proporciona una funcionalidad lista para usar a fin de llevar a cabo comprobaciones de HTTP, DNS, SSL y TCP. Puede configurar hasta 10 comprobaciones. Configure cada comprobación como un paso numérico que se ejecute de forma secuencial, lo que permitirá comprender claramente el flujo de canarios.

Los esquemas de comprobaciones múltiples admiten lo siguiente:
+ Solicitudes HTTP básicas, solicitudes TCP, validación de registros de DNS y supervisión de certificados SSL
+ Métodos de autenticación HTTP como básica, clave de API, OAuth y Sigv4 integrados con Secrets Manager
+ Aserciones para cada comprobación

Para obtener más información, consulte [Creación de un valor controlado](CloudWatch_Synthetics_Canaries_Create.md).

# Creación de canarios de esquemas de comprobaciones múltiples
<a name="CloudWatch_Synthetics_Canaries_MultiCheck_Blueprint"></a>

El esquema de comprobaciones múltiples de Amazon CloudWatch Synthetics le permite crear un canario de Synthetics al proporcionar una configuración JSON sencilla. Para ahorrar costos, puede agrupar hasta 10 tipos diferentes de comprobaciones de HTTP, DNS, SSL y TCP de forma secuencial por pasos. Cada comprobación incluye aserciones que proporcionan una verificación básica con respecto al resultado de una comprobación.

Los canarios de comprobaciones múltiples están diseñados para casos de uso sencillos que solo requieren comprobaciones básicas sin la necesidad de usar un navegador sin periféricos. Para casos de uso más complejos, consulte los otros tipos de canarios que proporciona Amazon CloudWatch Synthetics.

**Topics**
+ [Requisitos previos](#CloudWatch_Synthetics_MultiCheck_Prerequisites)
+ [Limitaciones](#CloudWatch_Synthetics_MultiCheck_Limitations)
+ [Estructura de empaquetado, esquema JSON y ajustes de configuración](#CloudWatch_Synthetics_MultiCheck_Packaging)
+ [Creación de un canario de comprobaciones múltiples en la Consola de administración de AWS](#CloudWatch_Synthetics_MultiCheck_Console)
+ [Creación de un canario de comprobaciones múltiples con las API de AWS Synthetics](#CloudWatch_Synthetics_MultiCheck_API)
+ [Creación de un canario de comprobaciones múltiples en la CloudFormation](#CloudWatch_Synthetics_MultiCheck_CloudFormation)
+ [Configuración de la autenticación](#CloudWatch_Synthetics_MultiCheck_Authentication)
+ [Solución de problemas](#CloudWatch_Synthetics_MultiCheck_Troubleshooting)

## Requisitos previos
<a name="CloudWatch_Synthetics_MultiCheck_Prerequisites"></a>
+ Debe usar syn-nodejs-3.0\$1 para crear un canario de comprobaciones múltiples.
+ Al utilizar la configuración de Authentication y Secrets Manager, debe asegurarse de que el canario [ExecutionRoleArn](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CreateCanary.html) conceda los permisos para acceder a estos secretos.
+ Al utilizar la configuración de Authentication para Sigv4, debe asegurarse de que el canario [ExecutionRoleArn](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CreateCanary.html) conceda los permisos para acceder al rol relacionado.

## Limitaciones
<a name="CloudWatch_Synthetics_MultiCheck_Limitations"></a>
+ El tamaño de la respuesta HTTP no puede ser superior a 1 MB.
+ Máximo de 10 variables definidas.
+ Cuando se utiliza la RFC JSON, el JSON de comprobaciones puede tener campos duplicados, pero solo se utilizará el último campo secuencial.
+ En la Consola de administración de AWS, un canario de comprobaciones múltiples mostrará de forma predeterminada las métricas de los pasos de comprobaciones múltiples para identificar fácilmente la disponibilidad de cada comprobación. Cuando se eliminan las comprobaciones, es posible que este gráfico siga mostrando las comprobaciones en el gráfico de disponibilidad hasta que la métrica deje de estar activa durante al menos 3 horas.

## Estructura de empaquetado, esquema JSON y ajustes de configuración
<a name="CloudWatch_Synthetics_MultiCheck_Packaging"></a>

Se debe asignar el nombre a la configuración de comprobaciones de JSON que se utilizará para el canario ` blueprint-config.json`. La configuración debe seguir el [esquema](https://github.com/aws-samples/synthetics-canary-local-debugging-sample/tree/main) y las instrucciones de [Escritura de una configuración JSON para un esquema de comprobaciones múltiples de Node.js](CloudWatch_Synthetics_WritingCanary_Multichecks.md).

Comprima `blueprint-config.json` en un archivo ZIP y proporciónelo en uno de los siguientes flujos de trabajo de creación. Cuando haya una configuración `synthetics.json`, también se comprime en el archivo ZIP. A continuación, se muestra un archivo ZIP de ejemplo denominado `multi-checks.zip`.

```
multi-checks.zip
├── blueprint-config.json
└── synthetics.json
```

## Creación de un canario de comprobaciones múltiples en la Consola de administración de AWS
<a name="CloudWatch_Synthetics_MultiCheck_Console"></a>

1. Abra la consola de Amazon CloudWatch Synthetics.

1. Elija **Crear valor controlado**.

1. En **Usar un esquema**, elija **Comprobaciones múltiples**.

   En **Configurar comprobaciones**, verá dos pestañas, **Comprobaciones** y **Configuración canario**.

1. Seleccione la versión de tiempo de ejecución **syn-nodejs-3.0** o posterior.

1. Siga el procedimiento de [Escritura de una configuración JSON para un esquema de comprobaciones múltiples de Node.js](CloudWatch_Synthetics_WritingCanary_Multichecks.md) para describir la comprobación que desea llevar a cabo. Como alternativa, la consola le proporciona una configuración JSON predeterminada sobre la que puede crear.

1. Elija **Crear valor controlado**.

## Creación de un canario de comprobaciones múltiples con las API de AWS Synthetics
<a name="CloudWatch_Synthetics_MultiCheck_API"></a>

Utilice la API de `CreateCanary` y, en el parámetro `Code`, proporcione el valor de campo `BlueprintTypes="multi-checks"` en lugar de ` Handler`. Cuando se especifican `BlueprintTypes` y `Handler`, se muestra `ValidationException`. La versión de tiempo de ejecución proporcionada debe ser `syn-nodejs-3.0` o superior.

```
aws synthetics create-canary \
    --name my-multi-check-canary \
    --code ZipFile="ZIP_BLOB",BlueprintTypes="multi-checks" \
    --runtime-version syn-nodejs-3.0 \
    ...

// Or if you wanted to use S3 to provide your code.

aws synthetics create-canary \
    --name my-multi-check-canary \
    --code S3Bucket="my-code-bucket",S3Key="my-zip-code-key",BlueprintTypes="multi-checks" \
    ...
```

## Creación de un canario de comprobaciones múltiples en la CloudFormation
<a name="CloudWatch_Synthetics_MultiCheck_CloudFormation"></a>

En la plantilla CloudFormation de un canario de comprobaciones múltiples, en el parámetro `Code`, proporcione el valor de campo `BlueprintTypes="multi-checks"` en lugar de ` Handler`. Cuando se especifican `BlueprintTypes` y `Handler`, se muestra `ValidationException`. La versión de tiempo de ejecución proporcionada debe ser `syn-nodejs-3.0 or later`. 

Plantilla de ejemplo:

```
SyntheticsCanary:
    Type: 'AWS::Synthetics::Canary'
    Properties:
      Name: MyCanary
      RuntimeVersion: syn-nodejs-3.0
      Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600}
      ...
      Code:
        S3Bucket: "my-code-bucket"
        S3Key: "my-zip-code-key"
        BlueprintTypes: ["multi-checks"]
      ...
```

## Configuración de la autenticación
<a name="CloudWatch_Synthetics_MultiCheck_Authentication"></a>

Cuando el canario hace solicitudes HTTP a un punto de conexión autenticado, puede configurar los pasos del canario del esquema para utilizar uno de los cuatro tipos de autenticación: básica, clave de API, credenciales de cliente de OAuth y SigV4. En lugar de configurar los encabezados de las solicitudes, puede especificar un tipo de autenticación en la definición del esquema y Synthetics seguirá el tipo de autenticación especificado para rellenar los componentes de la solicitud HTTP con la información de autenticación proporcionada.

El tipo de autenticación se especifica en el paso del esquema de la sección Autenticación. Se especifica el esquema de autenticación que desea usar, las propiedades obligatorias para el esquema de autenticación elegido y Synthetics usa la información proporcionada para crear un encabezado de autenticación para la solicitud HTTP.

Como almacenar secretos (como contraseñas o claves de API) en texto sin formato es un problema de seguridad, Synthetics admite la integración con AWS Secrets Manager. Cuando desee autenticar una solicitud HTTP en un canario de esquema de Synthetics, puede consultar el secreto que almacena la información de autenticación y Synthetics se encarga de recuperar el secreto y almacenarlo en caché en el canario. Este enfoque proporciona secretos a Synthetics y, al mismo tiempo, los mantiene almacenados de forma segura, sin especificarlos en texto sin formato en la configuración del esquema.

Para obtener más información acerca del AWS Secrets Manager, consulte [¿Qué es el AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)

### Autenticación básica
<a name="CloudWatch_Synthetics_MultiCheck_BasicAuth"></a>

Synthetics implementa el esquema de autenticación HTTP básico definido en la RFC 7617. El proceso funciona de la siguiente manera:
+ La configuración del esquema proporciona un par de nombre de usuario y contraseña.
+ Para crear el par de usuario y contraseña, se concatena el nombre de usuario, un solo carácter de dos puntos (“:”) y la contraseña.
+ El par de usuario y contraseña se codifica en UTF-8 y se convierte en una cadena codificada en base64.
+ Este par de usuario y contraseña codificado en base64 se proporciona en el encabezado “Authorization” con el siguiente formato: Authorization: Basic \$1base64-encoded-user-pass\$1

Por ejemplo, si el agente de usuario quiere enviar el ID de usuario “Aladdin” y la contraseña “open sesame”, utiliza el siguiente campo de encabezado: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Ejemplo de configuración:

```
"Authentication": {
    "type": "BASIC",
    "username": MY_USERNAME, // Required
    "password": MY_PASSWORD // Required
}
```

### Autenticación de la clave de API
<a name="CloudWatch_Synthetics_MultiCheck_APIKeyAuth"></a>

Puede proporcionar una clave de API para autenticar solicitudes HTTP. Al utilizar la autenticación mediante clave de API, la clave de API proporcionada se coloca en el encabezado HTTP “X-API-Key”. Si tiene un recurso personalizado que busca encabezados de claves de API en un encabezado que no sea este, tiene la opción de especificar un nombre de encabezado diferente para que Synthetics coloque la clave de API.

Ejemplo de configuración:

```
"Authentication": {
    "type": "API_KEY",
    "apiKey": S0A1M2P3L4E5, // Required
    "header": X-Specific-Header // Optional, defaults to "X-API-Key"
}
```

### Autenticación de SigV4
<a name="CloudWatch_Synthetics_MultiCheck_SigV4Auth"></a>

AWS SigV4 (Signature Version 4) es el protocolo de firma de AWS para agregar información de autenticación a solicitudes de API de AWS. Para hacer una solicitud autenticada por SigV4, debe especificar la región y el servicio a los que hace las solicitudes, así como un ARN (nombre de recurso de AWS) que identifique un rol de IAM que desea que el canario asuma al hacer esta solicitud de SigV4. Synthetics asume el rol de IAM proporcionado en el roleArn y lo utiliza para autenticar la solicitud de API de AWS.

Ejemplo de configuración:

```
"Authentication": {
    "type": "SIGV4",
    "region": us-west-2, // Required
    "service": s3, // Required
    "roleArn": arn:AWS:iam:12345678912:role/SampleRole // Required
}
```

#### Consideraciones sobre SigV4
<a name="CloudWatch_Synthetics_MultiCheck_SigV4Considerations"></a>

Para que Synthetics asuma el rol que proporcionó en la sección de autenticación de SigV4, la política de confianza adjunta al rol debe configurarse para permitir que el canario asuma el roleArn proporcionado. La entidad principal de AWS principal en la que debe confiar es el rol que asumió el canario a través de AWS STS. Tiene el formato ` aws:sts::{account_running_the_canary}:assumed-role/<canary_name>/<assumed_role_name>` arn:.

Por ejemplo, si tiene un canario en ejecución en la cuenta 0123456789012, denominado test-canary, y el rol que asumió se denominó canary-assume-role, la política de confianza debe incluir esta instrucción para que el canario asuma correctamente el roleArn para SigV4:

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:AWS:sts::123456789012:assumed-role/test-canary/"
    },
    "Action": "sts:AssumeRole"
}
```

### Credenciales del cliente OAuth
<a name="CloudWatch_Synthetics_MultiCheck_OAuthAuth"></a>

Synthetics implementa el tipo de concesión de credenciales de cliente de OAuth tal como se define en la sección 4.4 de la RFC 6479. Si desea hacer una solicitud HTTP a un punto de conexión autenticado con un token de portador emitido por un punto de conexión de token de OAuth, Synthetics puede solicitar y administrar un token de portador en tu nombre. Cuando se utiliza el esquema de OAuth, Synthetics lleva a cabo los siguientes pasos:
+ Utiliza el esquema de autenticación básico con clientId y clientSecret para autenticar una solicitud en tokenUrl, el punto de conexión que emite los tokens de portadores.
+ Si proporciona los parámetros de recurso, audiencia y ámbito opcionales, se incluyen en la solicitud del token.
+ Utiliza el token de acceso que devuelve el tokenUrl para autenticar la solicitud HTTP.
+ Almacena de forma segura el token de actualización que devuelve el tokenUrl para futuras solicitudes de token

Ejemplo de configuración:

```
"Authentication": {
    "type": "OAUTH_CLIENT_CREDENTIALS",
    "tokenUrl": ..., // Required
    "clientId": ..., // Required
    "clientSecret": ..., // Required
    "scope": ..., // Optional
    "audience": ..., // Optional
    "resource": ..., // Optional
}
```

#### Consideraciones sobre OAuth
<a name="CloudWatch_Synthetics_MultiCheck_OAuthConsiderations"></a>

Synthetics actualiza los tokens de OAuth cuando se devuelve una respuesta 401 o 407.

### AWS Secrets ManagerIntegración de
<a name="CloudWatch_Synthetics_MultiCheck_SecretsManager"></a>

Para evitar el almacenamiento de valores de secretos (como contraseñas o claves de API) en texto sin formato, Synthetics proporciona una integración con AWS Secrets Manager. Puede hacer referencia a un valor de secreto completo en la configuración del esquema con el formato ` ${aws_SECRET:<secret_name>}` o hacer referencia a una clave concreta ` ${aws_SECRET:<secret_name>:<secret_key>}`.

Por ejemplo, si tiene un secreto denominado login/basic-auth-credentials, almacene un nombre de usuario y una contraseña con la siguiente estructura de JSON:

```
{
    "username": "Aladdin",
    "password": "open sesame"
}
```

Puede hacer referencia al nombre de usuario y la contraseña en la configuración del esquema de la siguiente manera, y Synthetics se encarga de recuperar el valor del secreto y usar sus claves para autenticar la solicitud:

```
"Authentication": {
    "type": "BASIC",
    "username": ${AWS_SECRET:login/basic-auth-credentials:username},
    "password": ${AWS_SECRET:login/basic-auth-credentials:password}
}
```

Para permitir que Synthetics recupere el secreto especificado, el ARN de rol que asume el canario debe tener los permisos secretsManager:GetSecretValue. Si el secreto está cifrado con una clave administrada por el cliente en lugar de la clave administrada de AWS AWS/secretsmanager, también necesita los permisos kms:Decrypt para la clave.

Ejemplo de permisos:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:AWS:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
        },
        {
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:AWS:kms:us-east-1:123456789012:key/key-id"
        }
    ]
}
```

## Solución de problemas
<a name="CloudWatch_Synthetics_MultiCheck_Troubleshooting"></a>

### Errores comunes de solución de problemas
<a name="CloudWatch_Synthetics_MultiCheck_Common_Failures"></a>

El código subyacente del esquema de comprobaciones múltiples está escrito en Typescript. Consulte la página de solución de problemas de canarios para ver los errores más comunes: [Solución de problemas de un valor controlado](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Troubleshoot.html).

### Errores de sintaxis de la configuración de comprobaciones de JSON
<a name="CloudWatch_Synthetics_MultiCheck_JSON_Errors"></a>

Si hay algún error sintáctico relacionado con la configuración de comprobaciones de JSON del canario, Consola de administración de AWS le indicará el motivo del error cuando intente crear el canario. Si está creando un canario mediante una API o CloudFormation, verá el error cuando se ejecute el canario por primera vez. Se recomienda utilizar el flujo de trabajo de actualizaciones seguras de canarios para el canario de comprobaciones múltiples. Para obtener más información, consulte [Actualizaciones seguras del canario](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/performing-safe-canary-upgrades.html).

### Errores de red o de tiempo de espera
<a name="CloudWatch_Synthetics_MultiCheck_Network_Failures"></a>

En caso de errores intermitentes o coherentes relacionados con los tiempos de espera, los errores de conexión de red (por ejemplo, ENOTFOUND, ECONNRESET) consideran la activación de registros de ` DEBUG` para que la ejecución siguiente proporcione más detalles sobre el motivo de los errores de las comprobaciones. Para ello, proporcione la variable de entorno CW\$1SYNTHETICS\$1LOG\$1LEVEL: "DEBUG".

Si aún hay errores que no puede depurar, considere la posibilidad de contactar con AWS Support o comprobar si alguno de los otros tipos de canarios proporcionados por CloudWatch Synthetics se ajusta mejor a su caso de uso.