AWS Certified Cloud Practitioner

Post 11 of 25

44%

Complete

Cloud Architecture10 min read

AWS Cloud Practitioner #11: CloudFront - CDN Global de AWS

Aprende CloudFront CDN: edge locations, caching, distribution types, y cómo reducir latencia para usuarios globales.

🎯 Lo que Aprenderás Hoy

Al finalizar este post, podrás:

  • Explicar qué es CloudFront y cómo funciona un CDN
  • Diferenciar entre Edge Locations y Regions
  • Configurar distributions para web y streaming
  • Optimizar performance con caching
  • Comprender casos de uso de CloudFront

El Problema Real

Tu sitio web está en us-east-1 (Virginia). Usuarios en Sydney, Australia reportan:

plaintext
Problema:
- Página tarda 3 segundos en cargar
- Imágenes tardan 5 segundos
- Videos buffering constante
 
Causa:
- Distancia: Virginia → Sydney = 16,000 km
- Latency: ~250ms por request
- 20 requests por página = 5 segundos solo en latency
 
Usuarios frustrados → abandonan sitio

Solución: CloudFront CDN

plaintext
Con CloudFront:
- Content cached en Edge Location de Sydney
- Latency: ~10ms (local)
- Página carga en 500ms
- Usuarios felices ✅

¿Qué es Amazon CloudFront?

CloudFront es un Content Delivery Network (CDN) que distribuye content globalmente con baja latency.

Info

Analogía: CloudFront es como tener un almacén local en cada ciudad.

Sin CDN: Todos los productos están en warehouse central (Virginia). Cliente en Australia pide producto → envío desde Virginia (2 semanas).

Con CDN: Productos populares se almacenan en warehouse local de cada ciudad. Cliente en Australia pide → entrega desde warehouse local (1 día).

Conceptos Clave

1. Origin

Fuente original del content.

plaintext
Origins soportados:
- S3 bucket
- EC2 instance
- ELB (Load Balancer)
- Custom HTTP server (on-premise)
 
Ejemplo:
Origin: mi-sitio.s3.amazonaws.com
Content: HTML, CSS, JS, imágenes

2. Edge Location

Puntos de presencia (PoPs) donde content es cached.

plaintext
AWS tiene 450+ Edge Locations globalmente
(Más que Regions: 30+ Regions vs. 450+ Edge Locations)
 
Distribuidos en ciudades principales:
- Americas: NYC, LA, Miami, São Paulo, etc.
- Europe: London, Frankfurt, Paris, etc.
- Asia: Tokyo, Singapore, Sydney, Mumbai, etc.

3. Distribution

Configuración de CloudFront que define cómo distribuir content.

plaintext
Tipos:
- Web Distribution: Websites (HTTP/HTTPS)
- RTMP Distribution: Media streaming (deprecated, usa Web)

¿Cómo Funciona CloudFront?

plaintext
Flujo:
 
1. User en Sydney requests image.jpg

2. Request va a Edge Location más cercana (Sydney)

3. Edge Location check: ¿Tengo image.jpg cached?
      ├─ SÍ → Return cached copy (CACHE HIT) ✅
      │        Latency: ~10ms

      └─ NO → (CACHE MISS)
             Request a Origin (S3 en us-east-1)
             Latency: ~250ms (primera vez)
             Cache image.jpg en Edge Location
             Futuras requests: CACHE HIT

4. User recibe image.jpg

Beneficios:

plaintext
Primera request (cache miss):
- Latency: 250ms (desde origin)
 
Requests subsecuentes (cache hit):
- Latency: 10ms (desde edge)
- Mejora: 25x más rápido
- Less load en origin
- Mejor experience global

Tipos de Content

1. Static Content

plaintext
Content que NO cambia frecuentemente:
- Imágenes (logos, product photos)
- CSS, JavaScript files
- Videos
- PDFs
 
TTL (Time To Live) recomendado: Largo (24 horas - 1 año)
 
Ejemplo:
logo.png → TTL: 365 días
(Logo raramente cambia)

2. Dynamic Content

plaintext
Content que cambia frecuentemente:
- API responses
- User-specific data
- Real-time data
 
TTL recomendado: Corto (0 segundos - 5 minutos)
 
Ejemplo:
/api/user/profile → TTL: 0 (no cache)
/api/products → TTL: 5 minutos

3. Streaming Media

plaintext
Content de video/audio:
- Live streaming
- VOD (Video On Demand)
 
CloudFront optimizado para:
- HLS, DASH protocols
- Smooth streaming
- Progressive download

Configuración de Distribution

bash
# Crear CloudFront distribution (CLI example)
 
aws cloudfront create-distribution \
  --origin-domain-name mi-sitio.s3.amazonaws.com \
  --default-root-object index.html \
  --enabled
 
# Resultado:
# Distribution ID: E1234567890ABC
# Domain: d111111abcdef8.cloudfront.net

Componentes key:

plaintext
1. Origin Settings:
   - Domain: S3 bucket, ALB, custom
   - Protocol: HTTP/HTTPS
   - Origin Path: Prefix para objects
 
2. Cache Behavior:
   - Path Pattern: /images/*
   - TTL: Min/Max/Default
   - Allowed HTTP Methods: GET, POST, etc.
   - Compress: Gzip automático
 
3. Distribution Settings:
   - Price Class: Edge Locations a usar
   - SSL Certificate: Default o custom
   - Alternate Domain Names (CNAMEs)

Cache Behavior y TTL

Time To Live (TTL)

plaintext
TTL define cuánto tiempo content permanece cached.
 
Configuración:
- Minimum TTL: 0 segundos
- Maximum TTL: 365 días
- Default TTL: 24 horas
 
Ejemplo:
File: product-image.jpg
TTL: 86400 segundos (24 horas)
 
Flujo:
Day 1, 10:00 AM → Cache miss → fetch from origin → cache
Day 1, 11:00 AM → Cache hit (fast)
Day 1, 11:00 PM → Cache hit (fast)
Day 2, 10:01 AM → Cache expired → fetch from origin → cache again

Headers control:

plaintext
Origin puede controlar caching via HTTP headers:
 
Cache-Control: max-age=3600
→ Cache por 1 hora
 
Cache-Control: no-cache
→ No cache (siempre fetch origin)
 
Cache-Control: public, max-age=31536000
→ Cache por 1 año (static assets)

Invalidation

¿Qué es? Forzar removal de objects del cache antes de TTL expire.

plaintext
Problema:
Subes nueva versión de logo.png
TTL: 24 horas
Users siguen viendo versión vieja hasta que expire
 
Solución:
Invalidate logo.png en CloudFront
→ Próximo request fetch nueva versión
bash
# Invalidate specific file
aws cloudfront create-invalidation \
  --distribution-id E1234567890ABC \
  --paths /logo.png
 
# Invalidate all files
aws cloudfront create-invalidation \
  --distribution-id E1234567890ABC \
  --paths "/*"
 
# Pricing:
# Primeros 1,000 paths/mes: GRATIS
# Después: $0.005 per path

Best Practice:

plaintext
❌ NO invalidate frecuentemente (costo)
 
✅ Usa versioning:
logo.png → logo-v2.png
style.css → style.css?v=2
 
No need invalidation, nuevo filename = nuevo cache

Casos de Uso

1. Website Acceleration

plaintext
Problema:
Website en us-east-1, usuarios globales
 
Solución:
CloudFront distribution con S3/ALB origin
 
Beneficio:
- 80% requests served from edge (cache hit)
- Latency reducida de 250ms → 10ms
- Less load en origin servers
 
Setup:
Origin: ALB con EC2 instances
CloudFront: Cache static assets (images, CSS, JS)
TTL: 24 horas para static, 0 para dynamic

2. Video Streaming

plaintext
Video platform con 1M usuarios
 
Sin CloudFront:
Origin bandwidth: 100 Gbps (caro)
Latency: Alta para usuarios lejanos
 
Con CloudFront:
Origin bandwidth: 10 Gbps (90% cache hit)
Latency: Baja (edge locations)
Ahorro: 90% en bandwidth costs
 
Optimizaciones:
- Adaptive bitrate streaming
- Progressive download
- Range requests support

3. S3 Static Website

plaintext
Static website hosted en S3
 
Setup:
1. S3 bucket: mi-sitio.s3.amazonaws.com
2. CloudFront distribution → origin: S3 bucket
3. Custom domain: www.miempresa.com
 
Beneficios:
- Users acceden via CloudFront domain
- Faster loading globalmente
- HTTPS support (certificado gratis)
- DDoS protection (AWS Shield)
 
Costo:
S3: $0.023/GB storage + $0.09/GB transfer
CloudFront: $0.085/GB transfer (first 10 TB)
(CloudFront a veces más barato que S3 transfer directo)

4. API Acceleration

plaintext
API con responses cacheable
 
Ejemplo:
GET /api/products → Lista de productos
 
Sin CloudFront:
Cada request → backend database query
1000 requests/sec → 1000 DB queries/sec
 
Con CloudFront:
TTL: 5 minutos
Cache hit: 95%
1000 requests/sec → 50 DB queries/sec (95% cached)
 
Beneficio:
- Reduced backend load
- Faster responses
- Lower DB costs

Security Features

1. HTTPS Support

plaintext
CloudFront provee:
✅ Default domain: HTTPS incluido
✅ Custom domain: Use ACM (AWS Certificate Manager) gratis
 
Ejemplo:
Distribution domain: d111111abcdef8.cloudfront.net
→ HTTPS gratis automáticamente
 
Custom domain: www.miempresa.com
→ Request certificado en ACM (gratis)
→ Asocia a CloudFront distribution
→ HTTPS funcionando

2. Geo-Restriction

plaintext
Bloquea/permite content basado en geografía del user.
 
Whitelist:
Solo permite users de US, CA, MX
 
Blacklist:
Bloquea users de países específicos
 
Ejemplo:
Content licensing solo válido en US
→ Geo-restriction: Whitelist US only

3. Signed URLs / Signed Cookies

plaintext
Acceso privado a content.
 
Use case:
Curso online pagado, solo subscribers pueden ver videos
 
Setup:
1. User login → backend verifies subscription
2. Backend genera signed URL (expira en 1 hora)
3. User accede video via signed URL
4. CloudFront verifica signature → allows access
 
Signed URL:
https://d111111abcdef8.cloudfront.net/video.mp4?
  Expires=1731859200&
  Signature=abc123...&
  Key-Pair-Id=APKA...
 
Después de expirar → 403 Forbidden

4. AWS Shield & WAF

plaintext
AWS Shield Standard:
✅ Incluido gratis con CloudFront
✅ DDoS protection
✅ Layer 3/4 attacks
 
AWS WAF (Web Application Firewall):
💲 Costo adicional
✅ Block SQL injection, XSS
✅ Rate limiting
✅ IP filtering

Pricing

plaintext
CloudFront pricing por región:
 
North America/Europe:
$0.085/GB (first 10 TB/mes)
$0.080/GB (next 40 TB)
$0.060/GB (next 100 TB)
...
 
Asia/Pacific:
$0.140/GB (first 10 TB)
(Más caro que NA/EU)
 
HTTP/HTTPS Requests:
$0.0075 per 10,000 requests (HTTP)
$0.0100 per 10,000 requests (HTTPS)
 
Invalidation:
Primeros 1,000 paths/mes: GRATIS
$0.005 per path después
 
Free Tier:
50 GB transfer out/mes
2,000,000 HTTP/HTTPS requests/mes
(12 meses)

Optimización de costos:

plaintext
1. Use Price Class:
   Price Class All: Todas las edge locations (más caro)
   Price Class 200: NA, EU, Asia, Middle East
   Price Class 100: NA, EU only (más barato)
 
2. Aumenta TTL:
   Mayor TTL = más cache hits = menos origin requests = menos costo
 
3. Compress:
   Habilita automatic compression (gzip)
   Reduce transfer size (menos costo)

📝 Preparación para el Examen

Puntos Clave para Memorizar

CloudFront Basics:

  • 📌 CDN: Content Delivery Network global
  • 📌 Edge Locations: 450+ puntos de presencia
  • 📌 Origin: S3, EC2, ELB, custom HTTP
  • 📌 Distribution: Configuración de cómo distribuir content

Caching:

  • 📌 TTL: Tiempo que content permanece cached
  • 📌 Cache Hit: Content servido desde edge (rápido)
  • 📌 Cache Miss: Content fetched desde origin (lento primera vez)
  • 📌 Invalidation: Forzar removal (primeros 1,000 paths gratis)

Security:

  • 📌 HTTPS: Incluido para default domain, ACM para custom
  • 📌 Signed URLs: Acceso privado a content
  • 📌 Geo-Restriction: Bloquear/permitir por país
  • 📌 AWS Shield: DDoS protection incluido

Use Cases:

  • 📌 Static websites: S3 + CloudFront
  • 📌 Video streaming: Low latency globalmente
  • 📌 API caching: Reduce backend load
  • 📌 Global acceleration: Mejora performance

Preguntas de Práctica

Pregunta 1:

Una empresa tiene website en S3. Usuarios en Asia reportan tiempos de carga lentos. ¿Qué solución mejora performance?

A) Mover S3 bucket a región de Asia B) Usar CloudFront distribution C) Aumentar instance type de EC2 D) Usar RDS Multi-AZ

Success

Respuesta: B) Usar CloudFront distribution

CloudFront caches content en edge locations cerca de usuarios en Asia, reduciendo latency dramáticamente.

A es menos optimal: Requiere migración y solo ayuda usuarios en esa región.

Pregunta 2:

¿Qué es un beneficio de CloudFront además de performance?

A) Automatic scaling de EC2 B) Database replication C) DDoS protection via AWS Shield D) Automated backups

Success

Respuesta: C) DDoS protection via AWS Shield

CloudFront incluye AWS Shield Standard gratis, provee DDoS protection. Además mejora performance via caching global.


🎓 Resumen

Lo que aprendimos:

  1. CloudFront: CDN global con 450+ edge locations
  2. Caching: TTL controla cuánto tiempo content permanece cached
  3. Origins: S3, EC2, ELB, custom HTTP servers
  4. Security: HTTPS, signed URLs, geo-restriction, AWS Shield
  5. Use Cases: Static websites, streaming, API acceleration
plaintext
Decisión de uso:
 
¿Usuarios globales?
└─ SÍ → CloudFront (reduce latency)
 
¿Static content?
└─ SÍ → CloudFront con TTL largo (cache hit alto)
 
¿Necesitas HTTPS?
└─ SÍ → CloudFront + ACM (gratis)
 
¿Video streaming?
└─ SÍ → CloudFront (optimizado para media)

⏭️ Próximo Post

En el Post #12 comenzaremos Módulo 4: Security & Compliance con AWS IAM:

  • Identity and Access Management
  • Users, Groups, Roles, Policies
  • Principio de least privilege
  • MFA y best practices

📚 Recursos


Tags: #AWS #CloudPractitioner #CloudFront #CDN #EdgeLocations #Performance #Caching #Certification

Written by Jhonny Lorenzo

Researcher at TrautsLab

Related Articles

Recent Articles

Comments