Introducción

El AWS Health Dashboard es la consola centralizada donde Amazon Web Services publica el estado operativo de sus servicios globales, regiones y cuentas. No es un simple «status page»: combina información técnica detallada sobre eventos programados (mantenimientos, actualizaciones), incidentes activos (fallas regionales o globales) y recomendaciones personalizadas para tu cuenta (como actualizar versiones de AMIs o aplicar parches de seguridad).

Si tu equipo opera workloads en múltiples regiones o cuentas, ignorar esta herramienta equivale a operar sin radar meteorológico en medio de una tormenta. Un evento no advertido puede generar caídas de servicios, pérdida de rendimiento o costos inesperados por acciones automatizadas que dependen de APIs afectadas.

En esta guía, aprenderás a:

  • Interpretar el estado global vs. el estado específico de tu cuenta.
  • Configurar alertas proactivas usando AWS Health API y Amazon EventBridge.
  • Automatizar respuestas mediante AWS Lambda para minimizar el tiempo de impacto.

Qué es y para qué sirve

El AWS Health Dashboard se divide en dos vistas principales:

  1. Estado global de AWS (status.aws.amazon.com):
– Muestra el estado agregado de cada servicio por región (ej: us-east-1, eu-west-1).

– Indica si un servicio está Operativo, en Degradación o Fuera de servicio.

– Incluye estimaciones de tiempo de recuperación (ETR) y enlaces a postmortems oficiales.

  1. Estado de la cuenta de AWS (disponible en la consola de AWS):
Eventos de AWS: Incidentes, mantenimientos programados o cambios en políticas que afectan a tu cuenta (ej: limitaciones en APIs de EC2).

Recomendaciones: Alertas contextualizadas como «Actualizá la versión de tu AMI para resolver una vulnerabilidad».

RSS y APIs: Acceso programático para integrar con herramientas de monitoreo externas.

Casos de uso críticos:
  • Equipos de DevOps/SRE: Detectar fallas antes de que impacten en pipelines (ej: un fallo en EBS que afecte a pods de EKS).
  • Equipos de Seguridad: Recibir notificaciones sobre parches críticos (ej: vulnerabilidades en RDS que requieran reinicio).
  • Equipos Financieros: Evitar costos por eventos prolongados (ej: instancias EC2 detenidas por mantenimiento no planificado).

Prerequisitos

Para seguir esta guía, necesitarás:

RequisitoVersión/DetallePermisos mínimos
**Cuenta de AWS**Cualquier cuenta con acceso a la consolaBLOCK18 (IAM)
**AWS CLI**2.13+BLOCK19
**AWS IAM**Rol con permisos para crear políticas y lambdasBLOCK20, BLOCK21
**Amazon EventBridge**Disponible por defecto en cuentas nuevasBLOCK22, BLOCK23
**AWS Lambda**Tiempo de ejecución compatible: BLOCK24 o BLOCK25BLOCK26, BLOCK27
**Herramientas opcionales**BLOCK28 (para parsear JSON en CLI)
Verificá permisos:
aws iam simulate-principal-policy \
  --policy-source-arn arn:aws:iam::aws:policy/AWSHealthFullAccess \
  --action-names health:Get* health:Describe*

Si el comando devuelve Denied, revisá los permisos de tu rol o usuario.

Guía paso a paso

1. Verificá el estado global de AWS

Objetivo: Confirmar que el evento que estás viendo no es un problema local en tu cuenta.
  1. Abrí el AWS Health Dashboard global.
  2. Filtrá por servicio (ej: EC2, RDS) y región (ej: US East (N. Virginia)).
  3. Buscá el estado en la columna Service Status:
Operational: Verde ✅.

Performance Issues: Amarillo ⚠️.

Service Disruption: Rojo ❌.

Resultado esperado:

Si un servicio como EKS muestra ❌ en una región, pero tu workload está en otra sin afectación, podés descartar problemas en tu infraestructura.

2. Accedé al estado de tu cuenta (AWS Personal Health Dashboard)

Objetivo: Ver eventos específicos que afectan a tu cuenta (no solo a AWS en general).
  1. Ingresá a la consola de AWS y buscá «Personal Health Dashboard» en la barra de búsqueda.
  2. Seleccioná la región donde operas (ej: us-east-1).
  3. Explorá las pestañas:
Eventos activos: Incidentes en curso (ej: «High CPU en hosts de ECS»).

Eventos pasados: Historial de los últimos 30 días.

Recomendaciones: Alertas como «Actualizá tu versión de Node.js en Lambda».

Comando alternativo para CLI:
aws health describe-events \
  --region us-east-1 \
  --filter regions=us-east-1,eventStatusCodes=open
Salida esperada (JSON):
{
  "events": [
    {
      "arn": "arn:aws:health:us-east-1::event/EC2/EC2_INSTANCE_RETIREMENT_SCHEDULED_12345",
      "service": "EC2",
      "eventTypeCode": "EC2_INSTANCE_RETIREMENT_SCHEDULED",
      "startTime": "2024-06-15T12:00:00Z",
      "eventDescription": [
        {
          "language": "en_US",
          "latestDescription": "Your instance i-1234567890abcdef0 will be retired on 2024-06-20..."
        }
      ]
    }
  ]
}
Error común:

Si el comando devuelve AccessDeniedException, asegurate de que tu usuario/rol tenga asignado el policy AWSHealthFullAccess.

3. Configurá alertas proactivas con Amazon EventBridge

Objetivo: Recibir notificaciones en Slack, PagerDuty o correo antes de que un evento afecte a tu infraestructura.

Paso 3.1: Creá un rule en EventBridge

  1. En la consola de AWS, buscá «Amazon EventBridge» > «Rules» > «Create rule».
  2. Configurá lo siguiente:
Name: aws-health-alerts

Rule type: Rule with an event pattern.

Event source: AWS events or EventBridge partner events.

Event pattern:

     {
       "source": ["aws.health"],
       "detail-type": ["AWS Health Event"],
       "detail": {
         "service": ["EC2", "RDS", "EKS"],
         "eventStatusCodes": ["open"]
       }
     }
     
  1. Seleccioná «Next» y elegí un destino:
AWS Lambda: Para automatizar respuestas.

SNS Topic: Para enviar notificaciones por correo/Slack.

Step Functions: Para orquestar workflows complejos.

Resultado esperado:

La rule quedará activa y filtrará solo eventos relevantes para tu infraestructura.

Paso 3.2: Enviá alertas a Slack (opcional)

Objetivo: Integrar AWS Health con Slack para notificaciones en tiempo real.
  1. Creá un webhook en Slack:
– En tu workspace, andá a Apps > Custom Apps > Incoming Webhooks.

– Configurá el canal (ej: #infra-alerts) y copiá la URL.

  1. Creá un Lambda para procesar el evento:
   # lambda_function.py
   import json
   import requests

   def lambda_handler(event, context):
       webhook_url = "TU_WEBHOOK_SLACK"
       for record in event['detail']['eventDescription']:
           if record['language'] == 'en_US':
               message = {
                   "text": f"🚨 *AWS Health Alert*\n📌 *Servicio*: {event['detail']['service']}\n🔗 *Detalle*: {record['latestDescription']}\n🕒 *Fecha*: {event['detail']['startTime']}"
               }
               requests.post(webhook_url, json=message)
               break
   
  1. Asigná permisos al Lambda:
   aws lambda add-permission \
     --function-name aws-health-slack-alerts \
     --action lambda:InvokeFunction \
     --principal events.amazonaws.com \
     --statement-id "EventBridgeInvokeLambda"
   
  1. Actualizá la rule de EventBridge para que invoque al Lambda:
   aws events put-targets \
     --rule aws-health-alerts \
     --targets '[{
       "Id": "1",
       "Arn": "arn:aws:lambda:us-east-1:123456789012:function:aws-health-slack-alerts"
     }]'
   
Resultado esperado:

Recibirás alertas en Slack como:

🚨 *AWS Health Alert*
📌 *Servicio*: EC2
🔗 *Detalle*: Your instance i-1234567890abcdef0 will be retired on 2024-06-20...
🕒 *Fecha*: 2024-06-15T12:00:00Z

4. Automatizá respuestas con AWS Lambda

Objetivo: Detener instancias EC2 afectadas por un evento de mantenimiento programado.
  1. Creá un nuevo Lambda (ej: aws-health-instance-stop) con el siguiente código:
   import boto3

   ec2 = boto3.client('ec2')

   def lambda_handler(event, context):
       instance_id = event['detail']['affectedEntities'][0]['entityValue']
       ec2.stop_instances(InstanceIds=[instance_id])
       print(f"Deteniendo instancia {instance_id} por evento de AWS Health: {event['detail']['eventTypeCode']}")
   
  1. Asigná permisos al Lambda:
   aws iam create-policy \
     --policy-name AWSHealthEC2StopPolicy \
     --policy-document '{
       "Version": "2012-10-17",
       "Statement": [{
         "Effect": "Allow",
         "Action": ["ec2:StopInstances"],
         "Resource": ["arn:aws:ec2:*:*:instance/*"]
       }]
     }'
   aws iam attach-role-policy \
     --role-name lambda-execution-role \
     --policy-arn arn:aws:iam::123456789012:policy/AWSHealthEC2StopPolicy
   
  1. Actualizá la rule de EventBridge para que invoque a este Lambda cuando el evento sea de tipo EC2_INSTANCE_RETIREMENT_SCHEDULED:
   aws events put-rule \
     --name aws-health-retirement-alerts \
     --event-pattern '{
       "source": ["aws.health"],
       "detail-type": ["AWS Health Event"],
       "detail": {
         "eventTypeCode": ["EC2_INSTANCE_RETIREMENT_SCHEDULED"]
       }
     }'
   
Resultado esperado:

Si un evento de AWS Health indica que una instancia será retirada, el Lambda la detendrá automáticamente.

5. Usá la API de AWS Health para integraciones externas

Objetivo: Consumir eventos de AWS Health desde herramientas como Datadog o Prometheus.
  1. Generá un access key para la API:
   aws iam create-access-key --user-name aws-health-integration
   
  1. Consultá eventos recientes:
   curl -X GET "https://health.us-east-1.amazonaws.com/events?eventStatusCodes=open&maxResults=10" \
     -H "x-amz-security-token: TU_SESSION_TOKEN" \
     -H "Authorization: AWS4-HMAC-SHA256 Credential=TU_ACCESS_KEY/20240615/us-east-1/health/aws4_request..."
   
  1. Parseá la respuesta con jq:
   aws health describe-events --region us-east-1 --query 'events[].{service:service, type:eventTypeCode, time:startTime}' --output json | jq -r '.[] | "\(.time) \(.service) \(.type)"'
   
Salida esperada:
2024-06-15T12:00:00Z EC2 EC2_INSTANCE_RETIREMENT_SCHEDULED

Consideraciones y buenas prácticas

Limitaciones conocidas

  • Latencia: Los eventos pueden tardar 5-15 minutos en aparecer en tu cuenta después de ser publicados globalmente.
  • Falsos positivos: Algunos eventos de mantenimiento (ej: parches de seguridad) no siempre requieren acción inmediata.
  • Cobertura: No todos los servicios AWS publican eventos detallados (ej: AWS Organizations tiene menos granularidad).

Alternativas cuando AWS Health no es suficiente

HerramientaCaso de usoLimitación
**AWS CloudWatch Synthetics**Monitorear endpoints críticosCostoso para escalar
**Third-party tools** (Datadog, PagerDuty)Integración con alertas existentesRequiere agente instalado
**AWS Config**Detectar cambios en recursosNo cubre incidentes de AWS
### Buenas prácticas
  1. Priorizá eventos por impacto:
– Usá el campo affectedEntities para identificar recursos críticos (ej: instancias en producción).

– Filtrá eventos con severity = high en la API.

  1. Documentá tus automatizaciones:
– Mantené un runbook con las acciones automáticas configuradas (ej: «Lambda aws-health-instance-stop detiene instancias en estado retirement«).
  1. Probá con eventos de prueba:
– AWS permite simular eventos en tu cuenta usando el comando:
     aws health create-event \
       --event-type-code CUSTOM_TEST_EVENT \
       --service EC2 \
       --event-description "Prueba de alerta - $(date)"
     

Conclusión

El AWS Health Dashboard es tu primera línea de defensa contra fallas en la nube. En esta guía aprendiste a:

  1. Distinguir entre el estado global de AWS y los eventos específicos de tu cuenta.
  2. Configurar alertas proactivas usando EventBridge y Lambda.
  3. Automatizar respuestas como detener instancias o notificar equipos.
Próximos pasos:
  • Integrá AWS Health con tu sistema de incident management (Jira, OpsGenie).
  • Creá dashboards en Amazon Managed Grafana para visualizar el estado histórico.
  • Revisá el AWS Health API Reference para personalizar aún más las alertas.

Fuentes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *