← Volver al catálogo

Amazon CloudFront

En una frase: Red de distribución que cachea tu web y tus vídeos en ubicaciones cerca del usuario
Documentación oficial: Documentación de Amazon CloudFront ↗

Qué es

Amazon CloudFront es la CDN (Content Delivery Network: red de entrega de contenido) de AWS. Distribuye el contenido desde cientos de ubicaciones perimetrales (edge locations) de todo el mundo: cachea lo que puede y, para lo demás, conecta con el origen a través de la red troncal de AWS. Reduce la latencia y la carga del origen, y añade HTTPS (HTTP Secure: HTTP cifrado con TLS), protección frente a DDoS (Distributed Denial of Service: ataque que satura un servicio desde muchos orígenes) y control de acceso delante de tu aplicación.

Conceptos clave

  • Distribución: configuración con uno o varios orígenes (S3 (Simple Storage Service), ALB (Application Load Balancer: balanceador HTTP/HTTPS), EC2 (Elastic Compute Cloud), API Gateway, cualquier servidor HTTP (HyperText Transfer Protocol: protocolo de la web)) y comportamientos de caché por patrón de ruta (/api/*, /img/*).
  • Políticas de caché y de petición al origen: qué cabeceras, cookies y parámetros forman la clave de caché y cuáles se envían al origen, y los TTL (Time To Live: tiempo de vida antes de caducar).
  • Invalidaciones: borran objetos de la caché antes de que caduquen (las primeras 1.000 rutas al mes son gratuitas). Alternativa: nombres de fichero versionados.
  • Origin Access Control (OAC): permite que un bucket S3 privado solo sea accesible a través de CloudFront. Sustituye al antiguo OAI (Origin Access Identity: mecanismo anterior a OAC).
  • URLs y cookies firmadas: restringen el acceso a contenido privado o de pago.
  • Cómputo en el borde:
    • CloudFront Functions: JavaScript ligero en eventos de viewer, submilisegundo y muy barato (reescrituras de URL (Uniform Resource Locator: dirección web), cabeceras, redirecciones).
    • Lambda@Edge: Node.js o Python en los cuatro eventos (también de origen), con más tiempo y acceso a red.
  • Grupos de orígenes: conmutación por error a un origen secundario.
  • Restricción geográfica y clases de precio (limitar las ubicaciones usadas para ahorrar).

Casos de uso típicos

  • Servir un sitio estático o una SPA (Single-Page Application: web de una sola página) desde S3 privado con HTTPS y dominio propio.
  • Acelerar APIs y contenido dinámico (la conexión viaja por la red de AWS).
  • Distribución de vídeo y descargas grandes.
  • Proteger el origen con AWS WAF (Web Application Firewall) y Shield en el borde.
  • Contenido de pago con URLs o cookies firmadas.

Cuándo NO usarlo

  • Tráfico no HTTP (TCP (Transmission Control Protocol: protocolo de transporte fiable) o UDP (User Datagram Protocol: protocolo de transporte sin conexión) genérico, como juegos o VoIP) o que necesita IP (Internet Protocol: dirección de red) fijas: AWS Global Accelerator.
  • Si solo necesitas acelerar subidas a S3 desde lejos: S3 Transfer Acceleration puede bastar.
  • Contenido que nunca se cachea y usuarios en la misma región que el origen: el beneficio es menor.

Comparativa con servicios parecidos

NecesidadCloudFrontGlobal Accelerator
ProtocolosHTTP y HTTPS (incluido WebSocket)TCP y UDP
CachéSíNo
IP estáticasNo (DNS)Sí, dos IP anycast
Uso típicoWeb, APIs, mediosJuegos, IoT (Internet of Things: internet de las cosas: dispositivos conectados), conmutación rápida entre regiones

Modelo de precios

Pago por uso: transferencia de datos de salida a internet (según la región del usuario) y número de peticiones HTTP o HTTPS. La transferencia desde orígenes de AWS a CloudFront es gratuita. Se cobran aparte las invalidaciones por encima del cupo gratuito, las funciones en el borde y funciones como la protección de origen (Origin Shield). También hay planes de precio fijo mensual. Las clases de precio limitan las ubicaciones más caras.

Seguridad y alta disponibilidad

  • HTTPS con certificados de ACM (AWS Certificate Manager), que deben estar en us-east-1.
  • AWS Shield Standard incluido; integración con AWS WAF.
  • OAC para que el bucket de origen no sea público.
  • Grupos de orígenes para conmutar ante fallos; red global y redundante.

Así lo uso en Kopi

CloudFront sirve la web de Kopi desde un bucket S3 privado con OAC. La política del bucket solo admite esa distribución concreta. Una CloudFront Function reescribe a /index.html las rutas sin extensión, para que funcione el enrutado de la SPA. index.html no se cachea, mientras que los JS y CSS (Cascading Style Sheets: hojas de estilo de una web), con hash en el nombre, se cachean un año. Cada despliegue solo invalida index.html. El certificado tuvo que crearse en us-east-1, aunque el resto está en otra región.

Trampas de examen

  • "Bucket privado accesible solo a través de CloudFront": OAC con bucket policy.
  • "Certificado para CloudFront": ACM en us-east-1.
  • "Contenido premium solo para suscriptores": URLs firmadas (un fichero) o cookies firmadas (muchos ficheros).
  • "Lógica ligera en el borde": CloudFront Functions. Si necesita red, más tiempo o eventos de origen: Lambda@Edge.
  • "Bloquear países": restricción geográfica (o WAF para reglas más finas).
  • "UDP", "IP estáticas" o "no HTTP": Global Accelerator.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes