

# Actualizaciones seguras del canario
<a name="performing-safe-canary-upgrades"></a>

Las actualizaciones seguras de CloudWatch Synthetics le permiten probar las actualizaciones en los canarios existentes antes de aplicarlos. Esta característica le ayuda a validar la compatibilidad del canario con los nuevos tiempos de ejecución y otros cambios de configuración, como cambios en el código o la memoria. Esto ayudará a minimizar las posibles interrupciones en la supervisión causadas por actualizaciones erróneas.

Al utilizar las actualizaciones seguras del canario en las actualizaciones de las versiones en tiempo de ejecución, los cambios de configuración y las modificaciones de los scripts de código, puede mitigar el riesgo, mantener una supervisión ininterrumpida, verificar los cambios antes de confirmarlos, actualizar y reducir el tiempo de inactividad.

**Topics**
+ [Requisitos previos](#performing-safe-canary-upgrades-prereq)
+ [Prácticas recomendadas](#performing-safe-canary-upgrades-best-practices)
+ [Probar el canario mediante simulacros](#performing-safe-canary-upgrades-getting-started)
+ [Limitaciones](#performing-safe-canary-upgrades-limitations)

## Requisitos previos
<a name="performing-safe-canary-upgrades-prereq"></a>

Asegúrese de que los requisitos previos estén completos.
+ Cuenta de AWS con permisos de CloudWatch Synthetics
+ Canario existente en las versiones de tiempo de ejecución compatibles (consulte [Limitaciones](#performing-safe-canary-upgrades-limitations) para ver los tiempos de ejecución compatibles)
+ Incluya tiempos de ejecución compatibles al realizar un simulacro (consulte [Limitaciones](#performing-safe-canary-upgrades-limitations) para ver los tiempos de ejecución compatibles).

## Prácticas recomendadas
<a name="performing-safe-canary-upgrades-best-practices"></a>

Estas son algunas prácticas recomendadas que se deben seguir al realizar un canario.
+ Ejecutar un simulacro para validar una actualización del tiempo de ejecución
+ Realizar un simulacro antes de las actualizaciones de producción del canario
+ Revisar los registros y artefactos del canario después de un simulacro
+ Utilizar simulacros para validar las dependencias y la compatibilidad de las bibliotecas

## Probar el canario mediante simulacros
<a name="performing-safe-canary-upgrades-getting-started"></a>

Puede probar la actualización del canario con las siguientes opciones:

 **Uso del flujo de trabajo de edición de la Consola de administración de AWS** 

1. Vaya a la consola de CloudWatch Synthetics.

1. Seleccione el canario que desea actualizar.

1. En el menú desplegable **Acciones**, elija **Editar**.

   Actualice el canario con los cambios que desea probar. Por ejemplo, cambie la versión de tiempo de ejecución o edite el código del script.

1. En **Script de canario**, elija **Iniciar simulacro** para probar y ver los resultados inmediatamente o elija **Validar y guardar más tarde** en la parte inferior de la página para iniciar la prueba y ver los resultados más tarde en la página **Detalles de canario**.

1. Después de que el simulacro tenga éxito, elija **Enviar** para confirmar sus actualizaciones del canario.

 **Uso de la Consola de administración de AWS para actualizar los canarios en lote** 

1. Vaya a la consola de CloudWatch Synthetics.

1. Seleccione la página de lista de **Synthetics**.

1. Seleccione hasta cinco canarios para los que desea actualizar el tiempo de ejecución.

1. Seleccione el menú desplegable **Acciones** y elija **Actualizar tiempo de ejecución**.

1. Seleccione **Iniciar simulacro para nuevo tiempo de ejecución** para iniciarlo y probar los cambios antes de una actualización.

1. En la página de lista de **Synthetics**, verá un texto junto a la versión de **Tiempo de ejecución** del canario que muestra el progreso del simulacro (esto solo se muestra para simulacros que implican una actualización del tiempo de ejecución).

   Una vez que el simulacro se haya realizado correctamente, verá el texto **Iniciar actualización**.

1. Seleccione **Iniciar actualización** para confirmar la actualización del tiempo de ejecución.

1. Si el simulacro falla, verá el texto **Error en el simulacro de actualización**. Seleccione el texto para ver el enlace de depuración a la página de detalles del canario.

 **Uso de la CLI o el SDK de AWS** 

La API inicia el simulacro para el nombre de canario proporcionado `MyCanary` y actualiza la versión del tiempo de ejecución a `syn-nodejs-puppeteer-10.0`.

```
aws synthetics start-canary-dry-run \
    --name MyCanary \
    --runtime-version syn-nodejs-puppeteer-10.0
      
      // Or if you wanted to update other configurations:

aws synthetics start-canary-dry-run \
    --name MyCanary \
    --execution-role-arn arn:aws:iam::123456789012:role/NewRole
```

La API devolverá el `DryRunId` dentro del `DryRunConfigOutput`.

Llame a `GetCanary` con el `DryRunId` proporcionado para recibir las configuraciones del simulacro del canario y un campo adicional `DryRunConfig` que contiene el estado del simulacro indicado como `LastDryRunExecutionStatus`.

```
aws synthetics get-canary \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Para obtener más detalles, utilice `GetCanaryRuns` con el `DryRunId` proporcionado para recuperar la ejecución y la información adicional.

```
aws synthetics get-canary-runs \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Después de un simulacro exitoso, puede usar `UpdateCanary` con el ` DryRunId` proporcionado para confirmar los cambios.

```
aws synthetics update-canary \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Cuando falla por cualquier motivo (el resultado de GetCanaryRuns tendrá los detalles), el resultado de `GetCanaryRuns` tiene una ubicación de artefacto que contiene registros para depurar. Cuando no hay registros, el simulacro no se pudo crear. Puede validarlo utilizando ` GetCanary`.

```
aws synthetics get-canary \
    --name MyCanary \
    --dry-run-id XXXX-XXXX-XXXX-XXXX
```

Los campos *State*, *StateReason* y *StateReasonCode* muestran el estado del simulacro.

 **Uso de CloudFormation** 

En su plantilla para un canario de Synthetics, proporcione el campo `DryRunAndUpdate` que acepta un valor booleano `true` o `false`.

Cuando el valor es `true`, cada actualización ejecuta un simulacro para validar los cambios antes de actualizar automáticamente el canario. Cuando el simulacro falla, el canario no se actualiza y falla la implementación y la implementación de CloudFormation por un motivo válido. Para depurar este problema, use la [consola de AWS Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Troubleshoot.html) o, si usa una API, obtenga el `ArtifactS3Location` usando la API `GetCanaryRuns` y descargue los archivos `*-log.txt` para revisar las ejecuciones del registro del canario en busca de errores. Tras la validación, modifique la plantilla del CloudFormation y vuelva a intentar la implementación o utilice la API anterior para validarla.

Cuando el valor es `false`, Synthetics no ejecutará un simulacro para validar los cambios y confirmará directamente las actualizaciones.

Para obtener información sobre cómo solucionar problemas de un canario con errores, consulte [Solución de problemas de un valor controlado](CloudWatch_Synthetics_Canaries_Troubleshoot.md).

Plantilla de ejemplo.

```
SyntheticsCanary:
    Type: 'AWS::Synthetics::Canary'
    Properties:
      Name: MyCanary
      RuntimeVersion: syn-nodejs-puppeteer-10.0
      Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600}
      ...
      DryRunAndUpdate: true
```

## Limitaciones
<a name="performing-safe-canary-upgrades-limitations"></a>
+ Compatible con las versiones de tiempo de ejecución: syn-nodejs-puppeteer-10.0\$1, syn-nodejs-playwright-2.0\$1, syn-python-selenium-5.1\$1 y syn-nodejs-3.0\$1
+ Solo puede ejecutar un simulacro por canario a la vez.
+ Cuando se produce un error en un simulacro, no se puede actualizar el canario.
+ El simulacro no puede probar ningún cambio en el campo **Programación**.

**nota**  
Cuando inicie un simulacro con cambios de código para un canario de Playwright y desee actualizar el canario sin proporcionar el `DryRunId` asociado, debe especificar explícitamente los parámetros del código.