💻

EC2 - Elastic Compute Cloud

Instancias, AMI, Auto Scaling y Load Balancers

⏱️ Tiempo estimado de lectura: 20 minutos

Introducción a EC2

Amazon EC2 (Elastic Compute Cloud) proporciona capacidad de cómputo escalable en la nube de AWS. Te permite lanzar instancias de servidores virtuales con diferentes configuraciones de CPU, memoria, almacenamiento y red.

Características principales:
- Escalabilidad instantánea: lanza instancias en minutos
- Pago por uso: solo pagas por el tiempo de cómputo que utilizas
- Múltiples tipos de instancia optimizados para diferentes casos de uso
- Integración completa con otros servicios de AWS
- Control total sobre la configuración del sistema operativo

Puntos Clave

  • EC2 es la base de la computación en AWS
  • Instancias configurables con diferentes tamaños y familias
  • Modelo de pago flexible: On-Demand, Reserved, Spot
  • Región y zona de disponibilidad determinan latencia y resiliencia
  • User Data permite automatizar configuración inicial

Tipos de Instancias EC2

AWS ofrece diferentes familias de instancias optimizadas para casos de uso específicos:

Familias principales:
- General Purpose (T3, T4g, M5, M6i): Balance entre cómputo, memoria y red. Ideal para aplicaciones web y bases de datos pequeñas
- Compute Optimized (C5, C6i, C7g): Alto rendimiento de CPU. Para procesamiento batch, gaming, machine learning
- Memory Optimized (R5, R6i, X2): Grandes cantidades de RAM. Ideal para bases de datos en memoria, analytics
- Storage Optimized (I3, I4i, D3): Alto IOPS y throughput. Para data warehousing, Hadoop, NoSQL
- Accelerated Computing (P4, G5, Inf1): GPUs y FPGAs. Para machine learning, gráficos, procesamiento de video

Puntos Clave

  • La nomenclatura sigue el patrón: Familia + Generación + Tamaño (ej: t3.medium)
  • T3/T4g tienen rendimiento burstable con CPU credits
  • Graviton (g en el nombre) usa procesadores ARM con mejor precio/rendimiento
  • Instancias con 'n' tienen mejor networking (ej: m6in)
  • Instancias con 'd' incluyen almacenamiento NVMe local

Modelos de Precios EC2

EC2 ofrece varios modelos de pago para optimizar costos según tus necesidades:

On-Demand:
- Pago por segundo (Linux) o por hora (Windows)
- Sin compromisos a largo plazo
- Ideal para cargas de trabajo impredecibles o de corto plazo

Reserved Instances:
- Descuento del 40-60% vs On-Demand
- Compromiso de 1 o 3 años
- Tipos: Standard (máximo descuento), Convertible (cambiar tipo), Scheduled (horarios específicos)

Savings Plans:
- Descuento del 40-66% comprometiéndote a un gasto por hora
- Más flexibilidad que Reserved: permite cambiar familia, tamaño, OS, región

Spot Instances:
- Descuento del 50-90% vs On-Demand
- AWS puede terminar la instancia con 2 minutos de aviso
- Ideal para cargas tolerantes a interrupciones: batch, análisis de datos

Puntos Clave

  • On-Demand: flexibilidad máxima, costo más alto
  • Reserved: mejor para cargas estables y predecibles
  • Savings Plans: balance entre flexibilidad y ahorro
  • Spot: máximo ahorro para workloads tolerantes a fallos
  • Dedicated Hosts/Instances: para cumplimiento regulatorio

💻 Lanzamiento de instancias con AWS CLI

# Lanzar instancia On-Demand
aws ec2 run-instances \n  --image-id ami-0c55b159cbfafe1f0 \n  --instance-type t3.micro \n  --key-name mi-keypair \n  --security-group-ids sg-0123456789abcdef0

# Crear Spot Instance request
aws ec2 request-spot-instances \n  --spot-price "0.05" \n  --instance-count 1 \n  --type "one-time" \n  --launch-specification file://specification.json

Security Groups

Los Security Groups actúan como firewalls virtuales que controlan el tráfico de red hacia y desde las instancias EC2.

Características:
- Stateful: Si permites tráfico entrante, la respuesta saliente se permite automáticamente
- Solo reglas de permiso: No puedes crear reglas de denegación explícitas
- Nivel de instancia: Se aplican a nivel de ENI (Elastic Network Interface)
- Múltiples SG: Puedes asignar hasta 5 security groups a una instancia

Reglas de entrada vs salida:
- Inbound: Controla tráfico entrante a la instancia
- Outbound: Controla tráfico saliente desde la instancia (por defecto todo permitido)

Puntos Clave

  • Security Groups son stateful (NACL es stateless)
  • Por defecto: todo inbound denegado, todo outbound permitido
  • Puedes referenciar otros SG en las reglas
  • Cambios en SG se aplican inmediatamente
  • Un SG puede aplicarse a múltiples instancias

💻 Gestión de Security Groups

# Crear security group
aws ec2 create-security-group \n  --group-name web-server-sg \n  --description "Security group para web server" \n  --vpc-id vpc-0123456789abcdef0

# Agregar regla de entrada (HTTP)
aws ec2 authorize-security-group-ingress \n  --group-id sg-0123456789abcdef0 \n  --protocol tcp \n  --port 80 \n  --cidr 0.0.0.0/0

# Agregar regla referenciando otro SG
aws ec2 authorize-security-group-ingress \n  --group-id sg-0123456789abcdef0 \n  --protocol tcp \n  --port 3306 \n  --source-group sg-9876543210fedcba0

Almacenamiento EC2

Las instancias EC2 pueden usar diferentes tipos de almacenamiento:

EBS (Elastic Block Store):
- Volúmenes de red persistentes
- Se pueden desvincular y reasignar a otras instancias
- Respaldos mediante snapshots a S3
- Tipos: gp3 (general), io2 (alto IOPS), st1 (throughput), sc1 (cold storage)

Instance Store:
- Almacenamiento local efímero conectado físicamente
- Máximo rendimiento (bajo latencia)
- Los datos se pierden al detener/terminar la instancia
- Ideal para buffers, cache, datos temporales

EFS (Elastic File System):
- Sistema de archivos compartido compatible con NFS
- Múltiples instancias pueden montar simultáneamente
- Escalado automático, pago por uso

Puntos Clave

  • EBS es persistente, Instance Store es efímero
  • EBS se limita a una AZ, EFS es multi-AZ
  • EBS volumes pueden cambiar de tamaño en caliente
  • Snapshots de EBS son incrementales y se almacenan en S3
  • Root volume puede ser EBS o Instance Store

Amazon Machine Images (AMI)

Una AMI es una plantilla que contiene la configuración de software necesaria para lanzar una instancia (sistema operativo, aplicaciones, configuraciones).

Tipos de AMI:
- Public AMI: Proporcionadas por AWS o la comunidad
- AWS Marketplace AMI: Software comercial preconfigurado
- Custom AMI: Creadas por ti desde instancias configuradas

Ventajas de crear AMIs personalizadas:
- Tiempo de arranque más rápido (software preinstalado)
- Configuración estandarizada y reproducible
- Backups completos del sistema
- Despliegues consistentes en múltiples regiones

Puntos Clave

  • AMIs son específicas de región (pero pueden copiarse)
  • Se almacenan en S3 (pero no las ves directamente)
  • Puedes compartir AMIs entre cuentas
  • AMI desde instance store no puede ser stopped
  • Crear AMI no requiere detener la instancia (pero recomendado)

💻 Gestión de AMIs

# Crear AMI desde instancia
aws ec2 create-image \n  --instance-id i-0123456789abcdef0 \n  --name "Mi-Web-Server-AMI" \n  --description "AMI con Apache y PHP configurados" \n  --no-reboot

# Copiar AMI a otra región
aws ec2 copy-image \n  --source-region us-east-1 \n  --source-image-id ami-0123456789abcdef0 \n  --region eu-west-1 \n  --name "Mi-Web-Server-AMI-EU"