

# Comprobaciones de estado de la aplicación
<a name="application-status-checks"></a>

Las comprobaciones de estado de las aplicaciones permiten supervisar el rendimiento y el estado de las aplicaciones que se ejecutan en Amazon EC2. Con las comprobaciones de estado de las aplicaciones, puede detectar los problemas de estado y responder a ellos mediante la supervisión de las aplicaciones a través de rutas y puertos configurables. Por ejemplo, puede utilizar las comprobaciones de estado de las aplicaciones para confirmar que el servidor web escucha en el puerto esperado y acepta nuevas conexiones.

Las comprobaciones de estado de las aplicaciones supervisan las respuestas HTTP y HTTPS de las aplicaciones en rutas y puertos configurables. Se ejecutan cada 60 segundos y se integran con Amazon EC2 Auto Scaling, de modo que puede automatizar la sustitución de instancias cuyas aplicaciones estén dañadas.

**Topics**
+ [Cómo funcionan las comprobaciones de estado de las aplicaciones](#how-application-status-checks-work)
+ [Comience a utilizar comprobaciones de estado de las aplicaciones](#get-started-application-status-checks)
+ [Opciones de configuración](#asc-configuration-options)
+ [Configuración predeterminada](#asc-default-settings)
+ [Integración de Amazon EC2 Auto Scaling](#asc-auto-scaling-integration)
+ [Gestión de la implementación, la aplicación de parches in situ y las sustituciones](#asc-handling-deployment-and-patching)
+ [Cómo probar una nueva comprobación de estado de la aplicación](#asc-testing-a-new-check)
+ [Redes avanzadas](#asc-advanced-networking)
+ [Prácticas recomendadas](#asc-best-practices)
+ [Solución de problemas](#asc-troubleshooting)
+ [Cómo supervisar las comprobaciones de estado de la aplicación](#asc-monitoring)
+ [Seguridad y permisos](#asc-security-and-permissions)
+ [Precios](#asc-pricing)
+ [Cuotas](#asc-quotas)

## Cómo funcionan las comprobaciones de estado de las aplicaciones
<a name="how-application-status-checks-work"></a>

Las comprobaciones de estado de las aplicaciones envían solicitudes HTTP o HTTPS a un punto de conexión que escucha en un puerto de red de la instancia cada 60 segundos. AWS compara el código de respuesta con el comparador de códigos de estado que configuró. La comprobación se marca como defectuosa después de varias solicitudes fallidas consecutivas y vuelve a estar en buen estado luego de varias solicitudes correctas consecutivas. Ambos recuentos son 2 de forma predeterminada y son configurables. Para obtener más información, consulte [Umbrales de evaluación](#asc-config-evaluation).

**nota**  
Las comprobaciones de estado de la aplicación envían la solicitud de comprobación de estado a través de HTTP/2.  
La comprobación del protocolo HTTPS no valida el certificado del servidor.

Durante un reinicio, las comprobaciones de estado de las aplicaciones indican un error hasta que la instancia vuelva a estar disponible, ya que la aplicación no puede responder a las solicitudes de comprobación de estado mientras el sistema operativo se está reiniciando.

### Arquitectura de redes
<a name="asc-network-architecture"></a>

Las comprobaciones de estado de las aplicaciones se originan en el servicio de comprobaciones de estado de las aplicaciones de Amazon EC2. Para llegar a sus instancias, AWS crea una interfaz de red elástica (ENI) administrada en su VPC. AWS crea una ENI por combinación de subred de origen y grupo de seguridad que tenga instancias asociadas. AWS crea la ENI administrada cuando una comprobación de estado de una aplicación requiere por primera vez esa combinación y la elimina cuando no hay ninguna otra comprobación de estado de la aplicación que la requiera. La ENI administrada no se tiene en cuenta para el límite de ENI de la instancia, pero sí para la cuota de *interfaces de red por región* de su cuenta, que se aplica por zona de disponibilidad. Para obtener más información, consulte [Cuotas de VPC de Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html).

Por defecto, Amazon EC2 oculta estas interfaces de red administradas de la consola y las operaciones de la lista de API para las cuentas que no tenían recursos administrados antes de que esta configuración estuviera disponible. Para cambiar su visibilidad, consulte [Configuración de visibilidad de recursos administrada](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-ec2-managed-instances.html#managed-resource-visibility-settings).

AWS crea una interfaz de red administrada para cada combinación de subred de origen y grupo de seguridad de las instancias asociadas. La cantidad de interfaces administradas aumenta con la cantidad de combinaciones distintas de subredes y grupos de seguridad que utilizan las instancias supervisadas. La consolidación de las instancias supervisadas en menos combinaciones de subredes y grupos de seguridad reduce la cantidad de interfaces administradas. Por ejemplo, 200 instancias distribuidas en 2 subredes que utilizan un único grupo de seguridad producen 2 interfaces administradas. Las mismas 200 instancias que utilizan 3 grupos de seguridad en esas 2 subredes producen hasta 6 interfaces administradas. Cada interfaz corresponde a una combinación de subred y grupo de seguridad.

Las comprobaciones de estado de las aplicaciones llegan a sus instancias desde un punto de observación privado dentro de su VPC. El alcance describe el origen de la comprobación, no una propiedad de la dirección IP de la instancia. AWS crea la ENI administrada en una subred de la VPC y llega a la instancia a través de la ruta de red privada.

Con las rutas de red administradas de AWS, el tráfico de comprobación de estado se origina en las instancias de Amazon EC2 administradas de AWS en la misma zona de disponibilidad que la instancia de destino (o en la zona de disponibilidad principal para los destinos de la zona local). El tráfico pasa por la red interna de AWS y no pasa por la red pública de Internet. Para obtener más información, consulte [Preguntas frecuentes sobre Amazon VPC](https://aws.amazon.com/vpc/faqs/) en la página web de Amazon Web Services.

Con las rutas de red administradas por el cliente, usted elige las subredes de origen para realizar comprobaciones desde una zona de disponibilidad distinta de la de destino. Para obtener más información, consulte [Supervisión entre zonas de disponibilidad](#asc-cross-az).

### Rutas de red administradas de AWS y administradas por el cliente
<a name="asc-onboarding-modes"></a>

Las comprobaciones de estado de las aplicaciones admiten dos modos de incorporación que determinan quién selecciona las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.

Rutas de red administradas de AWS  
AWS selecciona las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.

Rutas de red administradas por el cliente  
Debe especificar las subredes y los grupos de seguridad de origen para la ENI de comprobación de estado, y las subredes y los grupos de seguridad de destino para las instancias de destino.  
Utilice rutas de red administradas por el cliente cuando necesite controlar de qué subredes y grupos de seguridad se origina el tráfico de comprobación de estado, por ejemplo, cuando su VPC tiene una segmentación de red estricta, reglas de firewall o requisitos de cumplimiento que restringen las fuentes que pueden llegar a los puntos de conexión de la aplicación.

Para elegir el modo, debe incluir u omitir el parámetro `--health-check-paths` en el comando de creación. Si omite el parámetro `--health-check-paths`, AWS selecciona las subredes de origen y destino y los grupos de seguridad (rutas de red administradas de AWS). Si incluye el parámetro `--health-check-paths`, los administra usted (rutas de red administradas por el cliente).

### Versión de IP
<a name="asc-ipv4-ipv6"></a>

Cada comprobación de estado de la aplicación está asociada a una única versión IP (IPv4 o IPv6). Para supervisar una instancia a través de IPv4 e IPv6, cree dos comprobaciones de estado de la aplicación independientes y asócielas a la instancia.

Las comprobaciones de IPv4 e IPv6 llegan a la instancia desde la VPC.

### Valores de estado de comprobación
<a name="asc-check-status-values"></a>

Cada comprobación individual notifica uno de los siguientes estados:
+ `passed`: la comprobación se completó correctamente
+ `failed`: la comprobación no se ha superado La respuesta incluye el código de estado HTTP devuelto por la aplicación. Para obtener una guía de interpretación y corrección, consulte [Solución de problemas](#asc-troubleshooting).
+ `initializing`: la comprobación aún no ha completado su primera evaluación
+ `insufficient-data`: la comprobación no recibió datos suficientes para determinar un resultado
+ `not-applicable`: la comprobación no está asociada a la instancia

El estado general de la aplicación registrado para la instancia agrega todos los resultados de las comprobaciones individuales. El estado general es uno de los siguientes:
+ `ok`: se aprobaron todas las comprobaciones
+ `impaired`: una o más comprobaciones fallaron
+ `initializing`: una o más comprobaciones aún no han completado su primera evaluación
+ `insufficient-data`: una o más comprobaciones indican datos insuficientes
+ `not-applicable`: se excluyen de la agregación todas las comprobaciones de estado de las aplicaciones asociadas
+ `suppressed`: la evaluación de la comprobación de estado de la aplicación está suprimida para la instancia

### Agregación
<a name="asc-aggregation"></a>

Puede marcar cada comprobación de estado de la aplicación como incluida o excluida del estado general de la instancia. Por defecto, una comprobación está `included`.

`included`  
La comprobación contribuye al estado general de la instancia y Amazon EC2 Auto Scaling la utiliza.

`excluded`  
La comprobación informa de su estado individual, pero no contribuye al estado general de la instancia, y Amazon EC2 Auto Scaling no la utiliza. Utilice esta configuración para validar una nueva comprobación en producción sin afectar el estado general ni provocar sustituciones de Amazon EC2 Auto Scaling. Este es el flujo de trabajo recomendado cuando se agrega una comprobación a una carga de trabajo de producción existente; consulte [Cómo probar una nueva comprobación de estado de la aplicación](#asc-testing-a-new-check).

## Comience a utilizar comprobaciones de estado de las aplicaciones
<a name="get-started-application-status-checks"></a>

**Requisitos previos**  
Antes de crear una comprobación del estado de la aplicación, asegúrese de que dispone de lo siguiente:
+ Una VPC con las instancias que desea supervisar.
+ Un punto de conexión de aplicación en cada instancia que pueda responder a las solicitudes HTTP o HTTPS en el puerto y la ruta HTTP que vaya a configurar.
+ Un grupo de seguridad en cada instancia de destino que permita el tráfico entrante en el puerto de comprobación desde el grupo de seguridad de origen utilizado para la comprobación de estado de la aplicación. Consulte [Seguridad y permisos](#asc-security-and-permissions).

**Paso 1: Configurar la aplicación de de**  
Configure el punto de conexión de la aplicación para que responda a las solicitudes HTTP o HTTPS en el puerto y la ruta HTTP que usted especifique al crear la comprobación. Devuelva un código de respuesta incluido en el comparador de códigos de estado para indicar que la aplicación está en buen estado.

Asegúrese de que el grupo de seguridad de la instancia de destino permita el tráfico entrante en el puerto de comprobación procedente del grupo de seguridad de origen utilizado para la comprobación de estado de la aplicación. En las rutas de red administradas, AWS proporciona el grupo de seguridad de origen al crear la comprobación. Y en las rutas de red administradas por el cliente, usted debe especificar el grupo de seguridad de origen al crear la comprobación.

**Paso 2: Crear una definición de comprobación**  
Utilice la AWS CLI para crear una comprobación de estado de la aplicación.

------
#### [ Console ]

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, en **Instancias**, seleccione **Comprobaciones de estado de la aplicación**.

1. Seleccione **Crear comprobación de estado de la aplicación**.

1. En **Lógica de comprobación de estado**, configure lo siguiente:
   + **Protocolo**: elija **HTTP** o **HTTPS**.
   + **Puerto**: ingrese el puerto en el que escucha su aplicación.
   + **Ruta** (opcional): ingrese la ruta HTTP que desee solicitar, por ejemplo `/healthcheck`.
   + **Versión IP**: elija **IPv4** o **IPv6**.
   + **Índice de dispositivo**: el índice de dispositivos de la interfaz de red que se va a comprobar. El valor predeterminado es `0`.

1. En **Controles y umbrales**, defina el **Tiempo de espera** y, si lo desea, el **Comparador de códigos de estado**, el **Umbral de error**, el **Umbral de éxito** y el **Período de gracia de inicialización**. El intervalo de comprobación está fijado en 60 segundos.

1. En **Agregación**, seleccione **Incluido** para que la verificación contribuya al estado general de la aplicación e impulse Amazon EC2 Auto Scaling, o **Excluido** para informar de la verificación sin que ello afecte al estado general.

1. En **Rutas de comprobación de estado**, mantenga **No especificar rutas de red (recomendada/predeterminada)** para permitir que Amazon EC2 coloque las interfaces de red de comprobación de estado en las subredes de la instancia, o seleccione **Especificar rutas de red (avanzada)** para definir usted mismo la subred de origen, el grupo de seguridad y los destinos.

1. (Opcional) Agregue una **Etiqueta de nombre** y otras **Etiquetas**.

1. Seleccione **Crear comprobación de estado de la aplicación**.

------
#### [ AWS CLI ]

Para usar rutas de red administradas de AWS, omita el parámetro `--health-check-paths` y deje que AWS seleccione las subredes y grupos de seguridad de origen y destino.

```
aws ec2 create-application-status-check \
        --protocol https \
        --port 443 \
        --path "/health" \
        --status-code-matcher "200"
```

Para usar rutas de red administradas por el cliente, incluya el parámetro `--health-check-paths`. Cada ruta de comprobación de estado contiene un origen (subred y grupo de seguridad para la ENI de comprobación de estado) y uno o más destinos (subred y grupo de seguridad para las instancias de destino).

```
aws ec2 create-application-status-check \
        --protocol https \
        --port 443 \
        --path "/health" \
        --status-code-matcher "200" \
        --health-check-paths '[{"Source":{"SubnetId":"subnet-111","SecurityGroupId":"sg-aaa"},"Destinations":[{"SubnetId":"subnet-222","SecurityGroupId":"sg-bbb"}]}]'
```

------

**Paso 3: Asociar la comprobación a las instancias**  
Asocie la comprobación a las instancias que desea monitorizar, ya sea por ID de instancia o por etiqueta.

------
#### [ Console ]

1. En el panel de navegación, en **Instancias**, elija **Comprobaciones de estado de la aplicación** y seleccione la comprobación.

1. Seleccione **Administrar asociaciones de comprobación de estado** y luego elija **Administrar asociaciones por ID de recurso** o **Administrar asociaciones por etiquetas**.

1. Para asociarla a todas las instancias de un grupo de escalado automático, elija **Administrar asociaciones por etiquetas** e ingrese `aws:autoscaling:groupName` como clave de etiqueta y el nombre del grupo de escalado automático como valor.

1. Elija **Asociar**.

------
#### [ AWS CLI ]

Por ID de instancia:

```
aws ec2 associate-application-status-check \
        --application-status-check-id asc-1234567890abcdef0 \
        --instance-ids i-0123456789abcdef0
```

Por etiqueta:

```
aws ec2 associate-application-status-check \
        --application-status-check-id asc-1234567890abcdef0 \
        --target-tag-associations Key=Environment,Value=production
```

Para asociar a todas las instancias de un grupo de escalado automático, use la etiqueta de sistema `aws:autoscaling:groupName`:

```
aws ec2 associate-application-status-check \
        --application-status-check-id asc-1234567890abcdef0 \
        --target-tag-associations Key=aws:autoscaling:groupName,Value={{my-asg}}
```

------

Las operaciones de asociación y desvinculación devuelven los resultados de éxito y error por instancia. Si algunas instancias no se pueden asociar (por ejemplo, porque la comprobación ya está asociada), esas instancias aparecen en los resultados fallidos con un motivo.

**Paso 4: visualización de los resultados**  
Consulte el estado de la aplicación por instancia.

------
#### [ Console ]

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia y luego elija la pestaña **Estado y alarmas**.

1. En **Comprobaciones de estado de la aplicación**, revise el estado general y el estado individual de cada comprobación asociada.

------
#### [ AWS CLI ]

```
aws ec2 describe-application-status \
        --instance-ids i-0123456789abcdef0
```

La respuesta incluye el estado general de la aplicación y, para cada comprobación asociada, el estado de la verificación y, en el caso de las comprobaciones fallidas, el código de estado HTTP devuelto por la aplicación.

Respuesta de ejemplo:

```
{
        "ApplicationStatuses": [
            {
                "InstanceId": "i-0123456789abcdef0",
                "ApplicationStatus": {
                    "Status": "ok",
                    "Details": [
                        {
                            "ApplicationStatusCheckId": "asc-1234567890abcdef0",
                            "Status": "passed",
                            "Reason": {
                                "Code": "ResponseCodeMatched",
                                "StatusCode": 200,
                                "Protocol": "HTTP"
                            }
                        }
                    ]
                }
            }
        ]
    }
```

Para ver las definiciones de las comprobaciones (no el estado por instancia), use [describe-application-status-checks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-application-status-checks.html). Este comando devuelve la configuración de las comprobaciones de estado de la aplicación, incluida la configuración del protocolo, el puerto, la ruta HTTP y el comparador de códigos de estado.

------

## Opciones de configuración
<a name="asc-configuration-options"></a>

Las comprobaciones de estado de las aplicaciones aceptan varios parámetros de configuración. En esta sección se explican los parámetros cuyo comportamiento no es evidente a partir del nombre del parámetro. Para ver la lista completa de parámetros y reglas de validación, consulte [CreateApplicationStatusCheck](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateApplicationStatusCheck.html) y [AssociateApplicationStatusCheck](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AssociateApplicationStatusCheck.html) en la *Referencia de la API de Amazon EC2*.

### Umbrales de evaluación
<a name="asc-config-evaluation"></a>

`FailureThreshold`  
El número de solicitudes fallidas consecutivas antes de que la comprobación se marque como defectuosa. Valor predeterminado: 2.

`SuccessThreshold`  
El número de solicitudes consecutivas correctas antes de que la comprobación vuelva a marcarse en buen estado. Valor predeterminado: 2.

`Timeout`  
La cantidad de segundos que se debe esperar una respuesta antes de que la solicitud se registre como no superada. Se aplica como tiempo de espera forzado; si la aplicación no responde dentro de este período, la solicitud se registra como un error independientemente de la respuesta final. Predeterminado: 6. Rango válido: de 1 a 30.

### Período de gracia de inicio
<a name="asc-config-startup-grace"></a>

`InitializationGracePeriodSeconds`  
La cantidad de segundos que se debe esperar después de que se inicie una instancia antes de que AWS empiece a evaluar la comprobación. Utilice este parámetro para que las aplicaciones tengan tiempo de empezar a escuchar antes de que comiencen las comprobaciones. Si el período de gracia es demasiado corto, Amazon EC2 Auto Scaling podría reemplazar las nuevas instancias antes de que su aplicación esté lista. Valor predeterminado: 300. Rango válido: de 1 a 600.

### Alcance de IP
<a name="asc-config-ip-scope"></a>

`IpScope`  
Las comprobaciones de estado de las aplicaciones utilizan el ámbito `private`; la comprobación se lleva a cabo desde la VPC. En el caso de IPv4, esto corresponde a la dirección IP privada de la instancia. En el caso de IPv6, AWS no clasifica la dirección como pública o privada; la comprobación acepta cualquier dirección IPv6 y la evalúa desde la VPC.

### Índice de dispositivos
<a name="asc-config-device-index"></a>

`DeviceIndex`  
El índice del dispositivo de red de la instancia que AWS evalúa para la comprobación de estado. Cámbielo cuando el dispositivo de red principal de la instancia no sea el que desea comprobar. Valor predeterminado: 0.

Las rutas de agregación, versión de IP y comprobación de estado (subredes de origen y destino y grupos de seguridad) se tratan en sus propias secciones anteriores de esta página.

## Configuración predeterminada
<a name="asc-default-settings"></a>

En el caso de las rutas de red administradas de AWS, las comprobaciones de estado de las aplicaciones utilizan los siguientes valores predeterminados.


| Opción | Predeterminado | 
| --- | --- | 
| Intervalo de comprobación | 60 segundos (fijo; no configurable) | 
| Failure threshold | 2 errores consecutivos | 
| Umbral de éxito | 2 éxitos consecutivos | 
| Tiempo de espera | 6 segundos | 
| Comparador de códigos de estado | 200 | 
| Ruta HTTP | / | 
| Versión de IP | ipv4 | 
| Alcance de IP | privada | 
| Índice de dispositivos | 0 | 
| Periodo de gracia de inicialización | 300 segundos | 
| Agregación | incluido | 
| Subredes de origen y grupos de seguridad | Administrada por AWS | 

## Integración de Amazon EC2 Auto Scaling
<a name="asc-auto-scaling-integration"></a>

Amazon EC2 Auto Scaling finaliza y reemplaza automáticamente las instancias cuyo estado general de la aplicación indica `impaired`, siempre que la comprobación se incluya en la agregación. No se requiere ninguna configuración de grupo de escalado automático más allá de asociar la comprobación de estado de la aplicación con las instancias del grupo.

Amazon EC2 Auto Scaling utiliza el estado general de la instancia, no el estado de comprobación individual. Las comprobaciones marcadas como `excluded` no impulsan las acciones de Amazon EC2 Auto Scaling. Las comprobaciones en estado `suppressed` no impulsan las acciones de Amazon EC2 Auto Scaling.

Utilice el parámetro `InitializationGracePeriodSeconds` de la comprobación para permitir que las nuevas instancias se inicien antes de que comiencen las comprobaciones de estado de las aplicaciones. Si el periodo de gracia es demasiado corto, es posible que las instancias nuevas sean terminadas y reemplazadas por Amazon EC2 Auto Scaling antes de que su aplicación esté lista para atender el tráfico.

La comprobación `InitializationGracePeriodSeconds` establece el tiempo transcurrido desde el lanzamiento de una instancia hasta que la comprobación comience a evaluar la aplicación. Configúrela para que cubra el tiempo de inicio de la aplicación, de modo que la comprobación no muestre `impaired` mientras la aplicación aún se esté iniciando. El periodo de gracia de la comprobación de estado del grupo de escalado automático es independiente. Establece cuánto tiempo transcurrirá desde que una instancia entre en servicio hasta que Amazon EC2 Auto Scaling la termine debido a una comprobación de estado fallida.

Para obtener más información acerca de cómo Amazon EC2 Auto Scaling utiliza las comprobaciones de estado, consulte [Health checks for instances in an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html) y [Use application status checks with an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/use-application-status-checks-auto-scaling-group.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*.

## Gestión de la implementación, la aplicación de parches in situ y las sustituciones
<a name="asc-handling-deployment-and-patching"></a>

Las implementaciones, los parches in situ y otras operaciones de mantenimiento pueden detener o reiniciar temporalmente la aplicación. Durante ese tiempo, las comprobaciones de estado de la aplicación indican un error, ya que la aplicación no puede responder a las solicitudes de comprobación de estado. Si sus instancias están en un grupo de escalado automático con comprobaciones de estado de las aplicaciones incluidas en la agregación, Amazon EC2 Auto Scaling podría terminar y reemplazar estas instancias aunque se espere la interrupción.

### Opción A: suprimir la comprobación
<a name="asc-option-a-suppress"></a>

Utilice la supresión para periodos de mantenimiento delimitados cuya duración conozca. La supresión se aplica en el nivel de instancia. Debe especificar una duración u omitirla para suprimir la comprobación hasta que la desactive.

------
#### [ AWS CLI ]

```
aws ec2 enable-application-status-check-suppression \
        --instance-ids i-0123456789abcdef0 \
        --duration-seconds 3600
```

La respuesta indica, para cada instancia, cuándo comenzó la supresión y cuándo finalizará. Es posible que el éxito sea parcial y que algunas instancias no se supriman y aparezcan en la respuesta con un motivo.

Cómo reanudar las comprobaciones antes de que caduque el período de supresión:

```
aws ec2 disable-application-status-check-suppression \
        --instance-ids i-0123456789abcdef0
```

------

Si está suprimida, el estado general de la aplicación de la instancia muestra `suppressed`. Amazon EC2 Auto Scaling no actúa en las instancias `suppressed`.

### Opción B: excluir la comprobación de la agregación
<a name="asc-option-b-exclude"></a>

Si desea que la comprobación siga evaluando e informando sobre su estado individual, pero que no afecte al estado general ni desencadene acciones de Amazon EC2 Auto Scaling, defina la configuración de agregación de la comprobación en `excluded`. Esto resulta útil para situaciones de larga duración, como el lanzamiento de una nueva versión de la comprobación o la validación de un cambio sin correr el riesgo de ser reemplazado, y para los casos en los que desee que la telemetría continúe sin que ello afecte a las operaciones.

Para obtener más información, consulte [Agregación](#asc-aggregation).

### Opción C: desvincular la comprobación
<a name="asc-option-c-disassociate"></a>

Utilice la desvinculación para una eliminación más prolongada o indefinida.

```
aws ec2 disassociate-application-status-check \
        --application-status-check-id asc-1234567890abcdef0 \
        --instance-ids i-0123456789abcdef0
```

Si la asoció por etiqueta, quite la etiqueta de la instancia para desvincularla. Tras la desvinculación, el estado general de la aplicación de la instancia mostrará `not-applicable`.

### Guía de implementación
<a name="asc-deployment-guidance"></a>

Las implementaciones son el escenario de mantenimiento más común que requiere supresión. Utilice la supresión cuando la herramienta de implementación tenga un enlace previo a la implementación y otro posterior, de modo que pueda suprimir la comprobación antes de que comience la implementación y deshabilitar la supresión una vez finalizada la implementación.

El procedimiento general es el siguiente:

1. En el enlace previo a la implementación, llame a [enable-application-status-check-suppression](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-application-status-check-suppression.html) para la instancia, con una duración que cubra el período de implementación esperado.

1. Realice la implementación.

1. En el enlace posterior a la implementación, llame a [disable-application-status-check-suppression](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-application-status-check-suppression.html) para la instancia.

Si su herramienta de implementación no tiene enlaces, gestione la supresión desde la canalización de CI/CD que invoca la implementación.

## Cómo probar una nueva comprobación de estado de la aplicación
<a name="asc-testing-a-new-check"></a>

Puede validar una nueva comprobación de estado de la aplicación en producción antes de que comience a contribuir a la supervisión a nivel de instancia. Para ello, defina la configuración de agregación en `excluded` al crear la comprobación y luego confirme que muestra el estado esperado y los códigos de respuesta HTTP. Cuando tenga todo listo, cambie la configuración a `included` para que la comprobación contribuya al estado general de la instancia y se integre con Amazon EC2 Auto Scaling.

1. Cree la comprobación con la configuración de agregación establecida en `excluded`.

   ```
   aws ec2 create-application-status-check \
           --protocol https \
           --port 443 \
           --path "/health" \
           --status-code-matcher "200" \
           --aggregation excluded
   ```

1. Asocie la comprobación a una instancia de prueba o a un subconjunto de su flota de producción.

1. Espere al menos dos intervalos de comprobación (aproximadamente dos minutos) para que la comprobación complete una evaluación inicial.

1. Utilice [describe-application-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-application-status.html) para comprobar que la comprobación indica el estado esperado y el código de respuesta HTTP.

   ```
   aws ec2 describe-application-status \
           --instance-ids i-0123456789abcdef0
   ```

1. Si la comprobación arroja los resultados esperados, actualice la configuración de agregación a `included` para que la comprobación contribuya al estado general de la instancia e impulse las acciones de Amazon EC2 Auto Scaling.

   ```
   aws ec2 modify-application-status-check \
           --application-status-check-id asc-1234567890abcdef0 \
           --aggregation included
   ```

## Redes avanzadas
<a name="asc-advanced-networking"></a>

Las comprobaciones de estado de las aplicaciones se originan en una ENI administrada en la subred de origen y el grupo de seguridad que especifique (o que AWS seleccione por usted). Para las cargas de trabajo que requieren una disponibilidad superior a la que ofrece una configuración de origen único, o para las cargas de trabajo que se ejecutan en zonas locales o Outposts, tenga en cuenta los siguientes procedimientos.

### Supervisión entre zonas de disponibilidad
<a name="asc-cross-az"></a>

Para obtener redundancia entre las zonas de disponibilidad, puede ejecutar comprobaciones de estado desde varias de ellas. Con las rutas de red administradas por el cliente, puede definir las rutas de comprobación de estado cuyos orígenes se encuentran en dos zonas de disponibilidad diferentes que llegan a las mismas instancias de destino mediante el parámetro `--health-check-paths`. La supervisión desde dos zonas de disponibilidad mantiene los informes de estado de las instancias de forma continua incluso si una zona de disponibilidad deja de estar disponible.

En el siguiente ejemplo, se crea una comprobación con dos rutas de comprobación de estado cuyos orígenes se encuentran en distintas zonas de disponibilidad y ambas llegan a las mismas instancias de destino.

```
aws ec2 create-application-status-check \
        --protocol https \
        --port 443 \
        --path "/health" \
        --status-code-matcher "200" \
        --health-check-paths '[{"Source":{"SubnetId":"subnet-source-az1","SecurityGroupId":"sg-healthcheck"},"Destinations":[{"SubnetId":"subnet-app-az1","SecurityGroupId":"sg-app"}]},{"Source":{"SubnetId":"subnet-source-az2","SecurityGroupId":"sg-healthcheck"},"Destinations":[{"SubnetId":"subnet-app-az2","SecurityGroupId":"sg-app"}]}]'
```

### Zonas locales
<a name="asc-local-zones"></a>

En el caso de las instancias que se ejecutan en zonas locales de AWS, la interfaz de red elástica (ENI) administrada reside en la región principal de AWS, no en la zona local. El tráfico de comprobación de estado entre la región principal y las instancias de la zona local pasa por el enlace de servicio de la zona local, lo que puede generar cargos adicionales por transferencia de datos.

## Prácticas recomendadas
<a name="asc-best-practices"></a>
+ **Diseñe su punto de conexión de estado para que refleje el estado de la aplicación que se ejecuta en esa instancia.** Cuando el punto de conexión devuelve el estado según la propia aplicación, Amazon EC2 Auto Scaling reemplaza solo las instancias que están realmente deterioradas. Si la respuesta del punto de conexión también depende de un recurso compartido, como una base de datos o un servicio descendente, un problema con ese recurso puede provocar un error en la comprobación en varias instancias a la vez. Esto puede provocar un reemplazo en toda la flota. Para obtener orientación sobre cómo redactar los puntos de conexión de la comprobación de estado, consulte [Implementación de las comprobaciones de estado](https://aws.amazon.com/builders-library/implementing-health-checks/) en Amazon Builders' Library.
+ **Protéjase contra los errores correlacionados.** Una comprobación incluida impulsa el reemplazo de Amazon EC2 Auto Scaling. Una comprobación que falla en varias instancias a la vez puede provocar una oleada de reemplazos. Establezca una política de mantenimiento de instancias en el grupo de escalado automático para limitar el número de instancias que se sustituyen simultáneamente. Para obtener más información, consulte [Instance maintenance policy](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) en la Guía del usuario de Amazon EC2 Auto Scaling.
+ **Alarma basada en el recuento de instancias deterioradas.** Cree una alarma de Amazon CloudWatch en la métrica `StatusCheckFailed_Application` de toda su flota. Un aumento repentino en muchas instancias indica una dependencia compartida y no errores en las instancias individuales, y le da tiempo para responder antes de que se produzcan reemplazos en cascada. Para obtener más información, consulte [Cómo supervisar las comprobaciones de estado de la aplicación](#asc-monitoring).
+ **Manténgase dentro de su cuota de interfaces de red.** Las comprobaciones de estado de las aplicaciones crean interfaces de red administradas que se contabilizan en la cuota de *Interfaces de red por región*. AWS aplica esta cuota por zona de disponibilidad. Supervise su uso para que una flota en crecimiento no alcance la cuota. Si la alcanza, AWS no podrá crear nuevas interfaces. Para obtener información relacionada con las alarmas de cuota, consulte [Cuotas](#asc-quotas).
+ **Trate los permisos de las comprobaciones de estado como sujetos a control de cambios.** Las acciones de IAM que crean, modifican, eliminan, asocian, desvinculan y suprimen las comprobaciones de estado de las aplicaciones pueden afectar a la disponibilidad de las instancias. Estas acciones determinan qué impulsa el reemplazo de Amazon EC2 Auto Scaling. Trate acciones como `ec2:CreateApplicationStatusCheck`, `ec2:AssociateApplicationStatusCheck`, `ec2:ModifyApplicationStatusCheck` y `ec2:EnableApplicationStatusCheckSuppression` como sujetas a control de cambios, en lugar de concederlas como parte del acceso general a Amazon EC2. Para ver la lista completa de las acciones, consulte la Referencia de la API de Amazon EC2.

## Solución de problemas
<a name="asc-troubleshooting"></a>

Cuando una comprobación de estado de una aplicación indique que está deteriorada, pero usted espera que su aplicación esté en buen estado, verifique cada uno de los siguientes puntos:

1. *Accesibilidad de la instancia.* Confirme que las comprobaciones de estado de instancia y del sistema estén `ok`.

1. *Regla de entrada del grupo de seguridad.* El grupo de seguridad de la instancia de destino debe permitir el tráfico entrante en el puerto de comprobación procedente del grupo de seguridad de origen utilizado por la comprobación de estado de la aplicación. Para las rutas de red administradas de AWS, AWS proporciona el grupo de seguridad de origen; para las rutas de red administradas por el cliente, utilice el grupo de seguridad que especificó como origen.

1. *Firewall del host.* Cualquier firewall a nivel de host (iptables, Firewall de Windows, firewall de host de terceros) de la instancia debe permitir el tráfico entrante en el puerto de comprobación.

1. *Punto de conexión de la aplicación.* La aplicación debe estar escuchando en el puerto y la ruta que configuró. Confirme con una solicitud local de la instancia (`curl http://localhost:PORT/PATH`).

1. *Incompatibilidad de protocolo.* Si la comprobación está configurada para HTTPS pero el punto de conexión solo admite HTTP (o viceversa), todas las llamadas fallarán.

1. *Comparador de códigos de estado.* Confirme que el código de respuesta real de su aplicación esté incluido en el comparador de códigos de estado que configuró.

1. *Ruta de red.* Si configuró las rutas de red administradas por el cliente, confirme que la subred de origen y el grupo de seguridad tengan conectividad con la subred de destino. Utilice el [Analizador de accesibilidad de VPC](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) para rastrear la ruta de la red.

1. *Cuota de ENI disponible.* AWS crea una interfaz de red elástica (ENI) administrada en su cuenta para cada combinación de subred de origen y grupo de seguridad. Confirme que su cuenta no ha alcanzado su cuota de *interfaces de red por región*, que se aplica por zona de disponibilidad. Si su cuenta ha alcanzado esta cuota, AWS no podrá crear la ENI administrada y la comprobación no podrá ejecutarse. Para obtener más información, consulte [Cuotas de VPC de Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html).

### Códigos de motivo
<a name="asc-troubleshoot-reason-codes"></a>

La respuesta de [describe-application-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-application-status.html) incluye un motivo para cada comprobación. El motivo contiene el código de estado HTTP devuelto por la aplicación (en forma de número), junto con el protocolo utilizado para la comprobación. Una comprobación se marca como `passed` si el código de estado devuelto está incluido en el comparador de códigos de estado, y como `failed` en caso contrario.

El motivo también incluye un código de motivo y, en el caso de los resultados a nivel HTTP, el protocolo y el código de estado HTTP devuelto. El motivo contiene los siguientes campos:

`Code`  
El código de motivo del resultado de la comprobación de estado de la aplicación. Uno de los valores siguientes:  
+ `ResponseCodeMatched`: el código de estado HTTP devuelto por la comprobación de estado coincidió con el `StatusCodeMatcher` configurado.
+ `ResponseCodeMismatch`: el código de estado HTTP devuelto por la comprobación de estado no coincidió con el `StatusCodeMatcher` configurado.
+ `ConnectionTimeout`: se agotó el tiempo de espera de la conexión al destino.
+ `ResponseTimeout`: se agotó el tiempo de espera de la comprobación de estado mientras se esperaba una respuesta del destino.
+ `ConnectionRefused`: el destino rechazó la conexión de la comprobación de estado.
+ `ConnectionReset`: la conexión de comprobación de estado se restableció antes de recibir una respuesta.
Para `ResponseCodeMatched` y `ResponseCodeMismatch`, el campo `StatusCode` contiene el código de estado HTTP devuelto y el campo `Protocol` contiene el protocolo utilizado para la comprobación de estado. En el caso de errores de conexión, como `ConnectionTimeout`, `ResponseTimeout`, `ConnectionRefused` y `ConnectionReset`, los campos `StatusCode` y `Protocol` no están presentes.

`Protocol`  
El protocolo utilizado para la comprobación de estado. Uno de `HTTP` o `HTTPS`.

`StatusCode`  
El código de estado HTTP devuelto por la comprobación de estado.

Utilice el código de estado HTTP devuelto para identificar el motivo por el que se ha producido un error en una comprobación. Algunos ejemplos comunes:


| Código de estado HTTP | Significado típico | Corrección común | 
| --- | --- | --- | 
| `200` | La aplicación devolvió una respuesta correcta. | Ninguna. Por lo general, se trata de un buen estado. | 
| `301`, `302` | La aplicación devolvió una redirección. Las llamadas de comprobación de estado no siguen los redireccionamientos. | Sitúe la ruta de comprobación de estado en el destino de la redirección o agregue el código de redirección al comparador de códigos de estado si considera que funciona correctamente. | 
| `401`, `403` | La aplicación requiere autenticación o se le deniega el acceso a la ruta de comprobación de estado. | Configure la ruta de comprobación de estado para que no esté autenticada o realice las comprobaciones de estado en una ruta que no requiera credenciales. | 
| `404` | La ruta de comprobación de estado configurada no se encontró en la aplicación. | Compruebe que la ruta coincida con una de las rutas que gestiona su aplicación. | 
| `500` | La aplicación ha detectado un error interno del servidor. | Investigue los registros de la aplicación en la instancia. | 
| `502`, `503`, `504` | Se puede acceder a la aplicación, pero informa de problemas de nivel superior o de capacidad. | Investigue el estado, las dependencias y la capacidad de la aplicación. Si la aplicación devuelve estos códigos durante el inicio, aumente `InitializationGracePeriodSeconds`. | 

Para ver la estructura completa de `ApplicationStatusReason`, consulte [ApplicationStatusReason](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ApplicationStatusReason.html) en la *Referencia de la API de Amazon EC2*.

### Errores comunes
<a name="asc-troubleshoot-common-mistakes"></a>
+ El grupo de seguridad no permite el tráfico entrante desde el origen de la comprobación de estado en el puerto de comprobación.
+ La aplicación está enlazada a `127.0.0.1` y no escucha en la interfaz de red.
+ La ruta de comprobación de estado devuelve una redirección (301, 302) en lugar de una respuesta correcta, y el comparador de códigos de estado no incluye el código de redirección.
+ La comprobación está configurada para HTTPS, pero la aplicación solo admite HTTP, o viceversa.
+ La aplicación tarda más en iniciarse que el valor de `InitializationGracePeriodSeconds` y Amazon EC2 Auto Scaling reemplaza la instancia antes de que esté lista.

## Cómo supervisar las comprobaciones de estado de la aplicación
<a name="asc-monitoring"></a>

Puede supervisar las comprobaciones de estado de la aplicación de tres formas:
+ **Amazon CloudWatch**. La métrica `StatusCheckFailed_Application` refleja el estado general de la aplicación de la instancia y puede generar alarmas. La métrica se agrega por instancia en todas las comprobaciones asociadas cuya configuración de agregación es `included`. CloudWatch también publica una métrica por comprobación para cada comprobación asociada, denominada `StatusCheckFailed_Application_{{application-status-check-id}}`.
+ **[describe-instance-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html)**. Muestra el estado general de la aplicación junto con el resto de la información de estado de la instancia.
+ **[describe-application-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-application-status.html)**. Devuelve resultados detallados por instancia, incluidos el estado individual de cada comprobación asociada y el código de estado HTTP devuelto por la aplicación.

Utilice la métrica de CloudWatch para la automatización basada en alarmas. Utilice `describe-instance-status` cuando ya la esté consultando para obtener el estado de la instancia. Utilice `describe-application-status` para obtener una visibilidad detallada por comprobación.

## Seguridad y permisos
<a name="asc-security-and-permissions"></a>

AWS crea y administra las interfaces de red utilizadas para las comprobaciones de estado de las aplicaciones mediante un rol vinculado al servicio. No se requiere ninguna configuración de IAM para que el servicio cree estas ENI. El rol vinculado al servicio utiliza la política administrada de AWS [`EC2ApplicationStatusChecksServiceRolePolicy`](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2ApplicationStatusChecksServiceRolePolicy.html) .

Para crear, asociar, describir, eliminar y suprimir usted mismo las comprobaciones de estado de las aplicaciones, su usuario o rol de IAM necesita los permisos de Amazon EC2 correspondientes. Consulte la *Referencia de la API de Amazon EC2* para ver la lista completa de acciones.

El grupo de seguridad de la instancia debe permitir el tráfico entrante desde el grupo de seguridad de origen de comprobación de estado en el puerto que ha configurado. En el caso de las rutas de red administradas de AWS, AWS proporciona el grupo de seguridad de origen; en el caso de las rutas de red administradas por el cliente, utilice el grupo de seguridad que especificó como origen.

## Precios
<a name="asc-pricing"></a>

Las comprobaciones de estado de las aplicaciones se facturan según los siguientes componentes:
+ Un cargo por hora de 0,01 USD por cada interfaz de red elástica (ENI) administrada, por zona de disponibilidad.
+ Los precios estándar de Amazon CloudWatch se aplican a las métricas de comprobación de estado de las aplicaciones.

## Cuotas
<a name="asc-quotas"></a>

Las comprobaciones de estado de las aplicaciones están sujetas a las cuotas de servicio de AWS. Para ver los nombres, los valores predeterminados y las descripciones de las cuotas, consulte [Amazon EC2 endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html) en la *Referencia general de AWS*.

Además de las cuotas de servicio de AWS que afectan a las interfaces de red administradas, las comprobaciones de estado de las aplicaciones tienen las siguientes cuotas de servicio. Puede ver su uso y solicitar aumentos desde la consola de Service Quotas.

En estas cuotas, un *destino* es una instancia única que supervisa una comprobación de estado. Si más de una comprobación de estado supervisa una instancia, cada combinación de instancia y comprobación de estado cuenta como un destino independiente. Una *asociación* es una regla de etiqueta única o un ID de instancia único que se asocia a una comprobación de estado. Cada regla o ID de instancia cuenta como una asociación, independientemente del número de instancias en las que se resuelva.


| Cuota | Predeterminado | Ajustable | 
| --- | --- | --- | 
| Comprobaciones de estado por cuenta | 50 | Sí, de forma automática | 
| Asociaciones por comprobación de estado | 50 | Sí, de forma automática | 
| Asociaciones por cuenta | 200 | Sí, de forma automática | 
| Destinos por cuenta | 5 000 | Sí, a petición | 

La mayoría de los aumentos de cuota se aprueban automáticamente. El aumento del número de *destinos por cuenta* requiere una solicitud y una aprobación manual.

**importante**  
Si el número de destinos de su cuenta supera la cuota de *destinos por cuenta*, los destinos que superen el límite no se supervisan y no se notifica su estado en la aplicación. Para evitar lagunas en la supervisión, mantenga el recuento de destinos dentro de la cuota o solicite un aumento.

Recomendamos crear una alarma de Amazon CloudWatch sobre el uso de la cuota de comprobaciones de estado de su aplicación para que se le notifique antes de que alcance una cuota. Service Quotas publica las métricas de uso en el espacio de nombres `AWS/Usage` de CloudWatch, que puede utilizar para crear la alarma.