Introducción

A las 01:45 PDT (09:45 UTC) del 16 de julio de 2025, AWS inició una interrupción no programada en CloudFront que afectó a clientes que usaban VPC Origins, una funcionalidad relativamente nueva que permite exponer aplicaciones internas tras load balancers privados a través de CloudFront sin exponer la infraestructura backend directamente a Internet. En lugar de servir contenido, CloudFront comenzó a devolver errores genéricos 5xx, dejando fuera de línea servicios como Hugging Face, la National Lottery del Reino Unido y los servidores de juegos de Bethesda. El incidente duró aproximadamente 1 hora y 23 minutos, tiempo en el que miles de distribuciones quedaron inaccesibles mientras AWS trabajaba en la recuperación.

Lo crítico del caso no fue solo la magnitud del impacto —múltimo reporte de AWS indicó que el 92% de las distribuciones afectadas correspondían a VPC Origins—, sino que el problema se originó en un subsistema interno de procesamiento de paquetes encargado de enrutar solicitudes desde los edge locations de CloudFront hacia los recursos dentro de las VPC privadas de los clientes. Hasta entonces, no había registros públicos de fallos similares en este componente, lo que lo convirtió en un caso de estudio sobre cómo un error de routing en la capa de aplicación puede cascadear hacia la experiencia del usuario final.

Qué ocurrió

AWS confirmó en su AWS Service Health Dashboard que el problema comenzó a las 09:45 UTC y se extendió hasta las 11:08 UTC, momento en que se implementó la mitigación. Según el reporte técnico posterior, la raíz del problema fue un límite interno en la flota de gestión de conexiones a orígenes VPC privados. Cuando este límite se alcanzó, el sistema encargado de distribuir la configuración de routing a los network processors falló al cargar los datos actualizados, lo que afectó directamente el enrutamiento de las conexiones VPC Origin.

El fallo no fue aleatorio: ocurrió bajo condiciones de alta carga en regiones específicas (us-east-1 y eu-west-1, según reportes de usuarios en Reddit), donde el tráfico superó el umbral de conexiones simultáneas que el subsistema podía manejar. Como consecuencia, los network processors no recibieron la configuración actualizada y comenzaron a devolver errores 502 Bad Gateway o 503 Service Unavailable. Los usuarios no vieron errores de CloudFront genéricos, sino mensajes como:

> «No podemos conectarnos al servidor de esta aplicación o sitio web en este momento. Puede que haya demasiado tráfico o un error de configuración. Inténtelo más tarde o contacte al sitio.»

Ejemplo de respuesta afectada (capturada por un usuario en X):

HTTP/1.1 502 Bad Gateway
Content-Type: text/html
Server: CloudFront

<html><body><h1>502 Bad Gateway</h1></body></html>

AWS aisló el problema a un solo tipo de configuración (VPC Origins) y aclaró que los clientes con otros tipos de origen (S3, ALB, EC2, etc.) no se vieron afectados. Sin embargo, el impacto en servicios dependientes de CloudFront fue masivo: Hugging Face reportó indisponibilidad global, la National Lottery del Reino Unido admitió la caída de su sitio y app móvil, y jugadores de Fallout 76 reportaron que el juego se volvió inaccesible.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de DevOps e Infraestructura

  • Alcance: 92% de las distribuciones afectadas usaban VPC Origins, según datos de AWS. Esto sugiere que muchas organizaciones ya habían migrado sus orígenes privados a CloudFront para aprovechar la capa de caching y seguridad adicional.
  • MTTR: La recuperación tomó 1 hora y 23 minutos, un tiempo crítico para servicios con SLA estrictos (ej: APIs de pago, plataformas de IA).
  • Regiones afectadas: Principalmente us-east-1 y eu-west-1, con caída intermitente en otras regiones según la carga de tráfico.
  • Servicios impactados:
Hugging Face: Plataforma de IA con modelos de lenguaje y datasets, caída global reportada.

National Lottery (Reino Unido): Sitio y app móvil inaccesibles para jugadores.

Bethesda: Servidores de Fallout 76 afectados, generando quejas en Reddit.

Otros: Empresas con APIs públicas (ej: procesamiento de pagos) vieron errores 5xx en sus endpoints expuestos vía CloudFront.

Para equipos de Seguridad

  • Vector de ataque indirecto: Aunque el fallo no fue explotado maliciosamente, la indisponibilidad masiva de servicios expuso a organizaciones a riesgos de «fail-open» donde los equipos de seguridad no pudieron acceder a logs o herramientas basadas en la nube durante el incidente.
  • Recomendación inmediata: Validar que los logs de CloudFront estén centralizados en un sistema externo (ej: SIEM) y no dependan de la disponibilidad del servicio.

Métricas clave

MétricaValor
Duración del incidente1h 23min
% distribuciones afectadas (VPC Origins)92%
Regiones críticasus-east-1, eu-west-1
Servicios de alto impactoHugging Face, National Lottery, Bethesda
Tipo de error5xx (502/503)
## Detalles técnicos

Componentes afectados

  1. CloudFront VPC Origins: Funcionalidad introducida en 2023 que permite conectar distribuciones de CloudFront a recursos internos tras un Application Load Balancer (ALB) o Network Load Balancer (NLB) privado. Requiere configurar:
– Un VPC Endpoint para CloudFront (AWS PrivateLink).

– Un ALB/NLB interno con reglas de routing hacia los backends.

– Una distribución de CloudFront con origen tipo Custom Origin apuntando a la IP del VPC Endpoint.

  1. Subsistema de routing: Componente interno de CloudFront responsable de:
– Recibir solicitudes en los edge locations.

– Enrutarlas al VPC Endpoint correspondiente.

– Gestionar la configuración de routing en los network processors.

  1. Falla crítica: Según el reporte de AWS, cuando el límite de conexiones simultáneas a VPC Origins se alcanzó, el sistema falló al cargar la configuración actualizada en los network processors, lo que provocó que estos devolvieran errores 5xx.

Comandos de verificación inmediata

Para confirmar si una distribución está afectada, los equipos pueden usar la AWS CLI:

# Listar distribuciones con origen VPC Origin
aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?OriginPath==''].DomainName].Id" --output text

# Verificar errores 5xx en logs de CloudFront
aws logs start-query \
  --log-group-name "/aws/cloudfront/${DISTRIBUTION_ID}" \
  --start-time $(date -d "1 hour ago" +%s%3N) \
  --end-time $(date +%s%3N) \
  --query-string "filter @message like /5[0-9]{2}/ | stats count(*) by bin(5m)"

¿Por qué no afectó a otros tipos de origen?

  • S3/ALB/EC2: Estos orígenes no dependen del subsistema de VPC Origins. S3 usa endpoints públicos, ALB puede estar público o privado pero no requiere VPC Endpoint, y EC2 puede exponerse directamente.
  • CloudFront Functions/Lambdas@Edge: Aunque usan CloudFront, no dependen del routing a VPC Origins, por lo que no se vieron afectadas.

Qué deberían hacer los administradores y equipos técnicos

Acciones inmediatas (durante el incidente)

  1. Cambiar temporalmente el tipo de origen (si es posible):
– AWS recomendó cambiar de VPC Origin a otro tipo (ej: ALB público o S3) como workaround mientras se resolvía el problema.

– Ejemplo de cambio en Terraform:

     resource "aws_cloudfront_distribution" "example" {
       origin {
         domain_name = "mi-alb-publico-123456789.us-east-1.elb.amazonaws.com"
         origin_id   = "alb-publico"
         # Cambiar de VPC Origin a Custom Origin
       }
     }
     

Nota: Este cambio requiere actualizar la configuración DNS y puede tardar minutos en propagarse.

  1. Monitorear métricas de CloudFront:
– Usar CloudWatch para ver:

5xxErrorRate (debe estar en 0%).

RequestCount (debe ser estable).

Latency (debe ser < 200ms en condiciones normales).

   aws cloudwatch get-metric-statistics \
     --namespace AWS/CloudFront \
     --metric-name 5xxErrorRate \
     --dimensions Name=DistributionId,Value=${DISTRIBUTION_ID} \
     --start-time $(date -d "5 minutes ago" +%Y-%m-%dT%H:%M:%SZ) \
     --end-time $(date +%Y-%m-%dT%H:%M:%SZ) \
     --period 60 \
     --statistics Average
   
  1. Validar dependencias:
– Si el servicio usa AWS WAF, verificar que las reglas no estén bloqueando tráfico legítimo durante la caída.

– Revisar CloudFront Functions/Lambdas@Edge para descartar conflictos.

Acciones post-incidente

  1. Revisar límites de conexiones:
– AWS no publicó el límite exacto, pero equipos pueden monitorear:

ActiveConnectionCount en CloudWatch.

ConcurrentConnections en el VPC Endpoint.

– Si el límite se acerca, escalar con AWS Support o ajustar configuraciones de keep-alive.

  1. Automatizar failover:
– Configurar un health check en el ALB interno y usar AWS Route 53 Failover para redirigir tráfico a un origen secundario (ej: S3 estático) si CloudFront falla.
   resource "aws_route53_record" "failover" {
     zone_id = aws_route53_zone.example.zone_id
     name    = "mi-sitio.example.com"
     type    = "A"
     alias {
       name                   = aws_cloudfront_distribution.example.domain_name
       zone_id                = aws_cloudfront_distribution.example.hosted_zone_id
       evaluate_target_health = true
     }
     failover_routing_policy {
       type = "PRIMARY"
     }
     set_identifier = "cloudfront-primary"
   }
   
  1. Documentar el incidente:
– Registrar en el post-mortem:

– Hora de inicio/fin del incidente.

– Regiones afectadas.

– Servicios impactados y métricas clave.

– Pasos de mitigación aplicados.

Recomendaciones a largo plazo

  • Diversificar orígenes: No depender de un solo tipo de origen en CloudFront. Mantener al menos un origen secundario (ej: S3 + CloudFront) como respaldo.
  • Monitoreo proactivo:
– Configurar alertas en CloudWatch para 5xxErrorRate > 0.1%.

– Usar AWS X-Ray para rastrear solicitudes desde el edge hasta el backend.

  • Pruebas de fallas:
– Simular fallos en VPC Origins en entornos de staging usando herramientas como AWS Fault Injection Simulator (FIS).

Conclusión

El incidente del 16 de julio de 2025 en AWS CloudFront VPC Origins expuso una debilidad crítica en el subsistema de routing interno de CloudFront: un límite de conexiones no documentado que, al alcanzarse, impidió la carga de configuraciones de routing en los network processors, generando errores 5xx masivos. Aunque AWS resolvió el problema en 1h 23min, el impacto en servicios globales como Hugging Face y la National Lottery demostró la fragilidad de depender de configuraciones complejas en la nube sin planes de contingencia claros.

Para equipos de DevOps e Infraestructura, este evento refuerza la importancia de:

  1. Diversificar orígenes en CloudFront (evitar depender al 100% de VPC Origins).
  2. Automatizar failovers a orígenes secundarios ante fallos.
  3. Monitorear proactivamente métricas de routing y conexiones activas.

El caso también sirve como recordatorio para que los equipos de seguridad validen que sus logs y herramientas de monitoreo no dependan de la disponibilidad de los servicios afectados, ya que un fallo en la capa de aplicación puede dejar ciegas a las defensas.

Fuentes

Deja una respuesta

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