Configuración de una implementación de un lanzamiento canary de API Gateway
El lanzamiento canary
Cuando se implementa un lanzamiento canary, el tráfico total de la API se separa aleatoriamente entre la versión de producción y el lanzamiento canary en un porcentaje preestablecido. Normalmente, el lanzamiento canary recibe un pequeño porcentaje del tráfico de la API, mientras que la versión de producción se ocupa del resto. Las características de la API actualizada solo están visibles al tráfico de la API a través del lanzamiento canary. Puede ajustar el porcentaje de tráfico de canary para optimizar la cobertura o el desempeño de las pruebas.
Si el tráfico del lanzamiento canary es escaso y la selección es aleatoria, muy pocos usuarios se verán afectados en algún momento por los posibles errores de la nueva versión y en ningún caso se verán afectados de forma continuada.
Una vez que las métricas de las pruebas se ajusten a sus requisitos, podrá promover el lanzamiento canary como versión de producción y deshabilitar canary de la implementación. De este modo, las nuevas características pasarán a estar disponibles en la etapa de producción.
Temas
Implementación de versiones canary en API Gateway
En API Gateway, al implementar un lanzamiento canary se utiliza la etapa de implementación de la versión base de una API y se asocia a la etapa un lanzamiento canary de las nuevas versiones (con respecto a la versión base) de la API. La etapa está asociada a la implementación inicial, mientras que el lanzamiento canary está asociado a las implementaciones posteriores. Al principio, tanto la etapa como canary apuntan a la misma versión de la API. En esta sección, utilizaremos indistintamente "etapa" y "versión de producción", así como "canary" y "lanzamiento canary".
Para implementar una API con un lanzamiento canary, cree una implementación del lanzamiento canary agregando las opciones de configuración del lanzamiento canary a la etapa de una implementación normal. Las opciones de configuración de canary describen el lanzamiento canary subyacente, mientras que la etapa representa la versión de producción de la API en esta implementación. Para agregar la configuración de canary, establezca canarySettings
en la etapa de implementación y especifique lo siguiente:
-
Un ID de implementación (en un principio, será idéntico al ID de la implementación de la versión base definida en la etapa).
-
Un porcentaje del tráfico de la API (entre 0,0 y 100,0 inclusives) para el lanzamiento canary.
-
Variables de etapa para el lanzamiento canary que puedan sobrescribir las variables de etapa de la versión de producción.
-
El uso de la caché de etapas en las solicitudes canary, si se ha definido useStageCache y el almacenamiento en caché de la API está habilitado en la etapa.
Una vez que se habilita un lanzamiento canary, la etapa de implementación no se puede asociar con la implementación que otra versión diferente hasta que el lanzamiento canary se deshabilite y si la configuración de canary se elimina de la etapa.
Cuando se habilitan los registros de ejecución de la API, el lanzamiento canary tiene sus propios registros y métricas, que se generan para todas las solicitudes de canary. Se informa al respecto a un grupo de registro de CloudWatch Logs de etapa de producción, así como a un grupo de registro de CloudWatch Logs específico de canary. Lo mismo sucede con los registros de acceso. Tener registros independientes específicos de canary resulta útil para validar los nuevos cambios de la API y decidir si se van a aceptar las modificaciones y, por tanto, se va a promover el lanzamiento canary como etapa de producción o si, por el contrario, se van a descartar los cambios y se va a revertir el lanzamiento canary como etapa de producción.
El grupo de registros de ejecución de la etapa de producción se llama API-Gateway-Execution-Logs/
, mientras que el grupo de registros de ejecución del lanzamiento canary se llama {rest-api-id}
/{stage-name}
API-Gateway-Execution-Logs/
. En el caso de los registros de acceso, debe crear un nuevo grupo de registros o seleccionar uno existente. El nombre del grupo de registros de acceso del lanzamiento canary lleva el sufijo {rest-api-id}
/{stage-name}
/Canary/Canary
.
Un versión canary puede utilizar la caché de etapas (si está habilitada) para guardar las respuestas y utilizar las entradas de esta caché para enviar resultados a las siguientes solicitudes de canary con un tiempo de vida (TTL) preconfigurado.
En la implementación de un lanzamiento canary, la versión de producción y el lanzamiento canary de la API pueden asociarse con la misma versión o con versiones diferentes. Cuando se asocian con diferentes versiones, las respuestas de las solicitudes de producción y de canary se guardan en la caché por separado y la caché de etapas devuelve los resultados correspondientes para los dos tipos de solicitudes. Cuando la versión de producción y el lanzamiento canary están asociados con la misma implementación, la caché de etapas utiliza una única clave de caché para los dos tipos de solicitudes y devuelve la misma respuesta cuando la solicitud es la misma en la versión de producción y el lanzamiento canary.