💻
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
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
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
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)
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
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
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"