Saltar al contenido principal

AMI - Amazon Machine Images

¿Qué es una AMI?​

Una AMI (Amazon Machine Image) es un modelo que contiene la configuración de software necesaria para lanzar una instancia EC2. Es como un "snapshot" o una "imagen de disco" de un sistema completo.

┌─────────────────────────────────────────────────────────────┐
│ AMI │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Una AMI = El ADN de su instancia" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AMI │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Sistema Operativo │ │ │
│ │ │ (Linux, Windows, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Configuración del Sistema │ │ │
│ │ │ (usuarios, permisos, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Software Preinstalado (opcional) │ │ │
│ │ │ (Apache, MySQL, Docker, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Configuración de Almacenamiento │ │ │
│ │ │ (tamaño de disco, tipo EBS) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ AMI ─────► Instancia 1 │
│ └───► Instancia 2 (Todas idénticas al inicio) │
│ └───► Instancia 3 │
│ │
└─────────────────────────────────────────────────────────────┘

Analogía Simple​

┌─────────────────────────────────────────────────────────────┐
│ ANALOGÍA : AMI = MOLDE PARA PASTELES │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🧁 PASTELERÍA 💻 AWS │
│ ───────────── ───── │
│ │
│ Molde para pastel = AMI │
│ (forma, tamaño) (SO, configuración) │
│ │
│ Pasteles producidos = Instancias EC2 │
│ (todos iguales) (todas idénticas) │
│ │
│ Decoración después = Configuración post- │
│ de hornear lanzamiento │
│ │
│ Un molde → varios = Una AMI → varias │
│ pasteles idénticos instancias idénticas │
│ │
└─────────────────────────────────────────────────────────────┘

Tipos de AMI​

1. AMI Públicas de AWS​

AMI oficiales proporcionadas por Amazon, gratuitas (solo paga la instancia).

┌─────────────────────────────────────────────────────────────┐
│ AMI PÚBLICAS DE AWS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Amazon Linux 2023 │
│ ├── Optimizada para AWS │
│ ├── Ligera y eficiente │
│ ├── Actualizaciones automáticas │
│ └── Soporte gratuito vía foros │
│ │
│ Amazon Linux 2 (LTS) │
│ ├── Soporte hasta 2025 │
│ ├── Muy estable │
│ └── Ampliamente documentada │
│ │
│ Ubuntu Server │
│ ├── 20.04 LTS, 22.04 LTS, 24.04 LTS │
│ ├── Popular, gran comunidad │
│ └── Bueno para desarrolladores │
│ │
│ Red Hat Enterprise Linux (RHEL) │
│ ├── Soporte empresarial │
│ └── De pago (licencia incluida en el precio) │
│ │
│ Windows Server │
│ ├── 2019, 2022 │
│ └── Licencia Windows incluida (más caro) │
│ │
└─────────────────────────────────────────────────────────────┘

2. AMI AWS Marketplace​

AMI con software preinstalado, a menudo de pago (licencia).

Ejemplos :
• WordPress preconfigurado
• Servidor LAMP completo
• Jenkins CI/CD
• Splunk
• Palo Alto Firewall
• Y miles más...

💰 Costo = Precio instancia + Precio licencia software

3. AMI Comunitarias​

AMI creadas y compartidas por otros usuarios de AWS.

⚠️ ATENCIÓN :
• Calidad variable
• Seguridad no garantizada
• Puede contener malware
• ¡Usar con precaución!

✅ Prefiera AMI de fuentes conocidas

4. AMI Personalizadas (Privadas)​

AMI que usted crea a partir de una instancia configurada.

┌─────────────────────────────────────────────────────────────┐
│ CREACIÓN DE AMI PERSONALIZADA │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Lanzar una instancia con AMI base │
│ └── Amazon Linux 2023 │
│ │
│ 2. Configurar la instancia │
│ └── Instalar Apache, PHP, MySQL │
│ └── Configurar archivos │
│ └── Agregar sus aplicaciones │
│ │
│ 3. Crear una AMI desde la instancia │
│ └── Actions → Image → Create Image │
│ │
│ 4. Usar su AMI para nuevas instancias │
│ └── ¡Todas las instancias estarán preconfiguradas! │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Instancia│ → │ AMI │ → │Instancias│ │
│ │configurada│ │Personal │ │idénticas │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Componentes de una AMI​

Estructura Interna​

AMI
├── Root Volume Template
│ └── Snapshot EBS del volumen raíz
│ └── Sistema operativo
│ └── Aplicaciones instaladas
│
├── Launch Permissions
│ └── Pública (todos)
│ └── Privada (su cuenta)
│ └── Compartida (cuentas específicas)
│
├── Block Device Mapping
│ └── Qué volúmenes EBS adjuntar
│ └── Tamaños y tipos de volúmenes
│ └── ¿Delete on Termination?
│
└── Metadata
└── Arquitectura (x86_64, arm64)
└── Virtualización (hvm, pv)
└── Nombre, descripción

ID de una AMI​

Formato : ami-0123456789abcdef0

Ejemplos :
• ami-0c55b159cbfafe1f0 (Amazon Linux 2 us-east-1)
• ami-0747bdcabd34c712a (Ubuntu 22.04 us-east-1)

⚠️ IMPORTANTE : ¡Los ID son diferentes por región!
La misma AMI "Amazon Linux 2" tiene un ID diferente
en us-east-1 y eu-west-1

Comparación de AMI Linux Populares​

AMICaso de UsoVentajasDesventajas
Amazon Linux 2023Producción AWSOptimizada AWS, gratuitaEspecífica de AWS
Amazon Linux 2Legacy, estableMuy estableFin de soporte 2025
Ubuntu 22.04 LTSDesarrolloPopular, docsUn poco más pesada
DebianServidoresMuy estableMenos soporte AWS
RHELEmpresarialSoporte oficialDe pago
CentOS StreamDev RHELGratuitoMenos estable que RHEL

AMI y Regiones​

┌─────────────────────────────────────────────────────────────┐
│ AMI Y REGIONES │
├─────────────────────────────────────────────────────────────┤
│ │
│ ¡Las AMI son REGIONALES! │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ us-east-1 │ │ eu-west-1 │ │
│ │ │ │ │ │
│ │ ami-abc123... │ ≠ │ ami-xyz789... │ │
│ │ (Amazon Linux 2) │ │ (Amazon Linux 2) │ │
│ │ │ │ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ ¡Mismo SO, pero ID diferente! │
│ │
│ Para usar una AMI en otra región: │
│ → Copiar la AMI (Actions → Copy AMI) │
│ │
│ AMI Personal AMI Copiada │
│ us-east-1 ─────────────────► eu-west-1 │
│ ami-abc123 ami-def456 │
│ │
└─────────────────────────────────────────────────────────────┘

Crear una AMI (Proceso)​

Desde una Instancia Existente​

┌─────────────────────────────────────────────────────────────┐
│ CREACIÓN DE AMI - PASOS │
├─────────────────────────────────────────────────────────────┤
│ │
│ PREPARACIÓN │
│ 1. Detener la instancia (recomendado para coherencia) │
│ 2. O crear con "No reboot" (riesgo de incoherencia) │
│ │
│ CREACIÓN │
│ 3. Consola → EC2 → Instancias │
│ 4. Seleccionar la instancia │
│ 5. Actions → Image and templates → Create image │
│ │
│ CONFIGURACIÓN │
│ 6. Nombre : "mi-app-v1.0" │
│ 7. Descripción : "Servidor web con Apache y PHP 8" │
│ 8. Volúmenes : mantener o modificar │
│ 9. Tags : añadir para organización │
│ │
│ ESPERA │
│ 10. La AMI pasa de "pending" a "available" │
│ 11. Puede tardar unos minutos │
│ │
│ USO │
│ 12. Lanzar nuevas instancias con esta AMI │
│ │
└─────────────────────────────────────────────────────────────┘

Comando AWS CLI​

# Crear una AMI desde una instancia
aws ec2 create-image \
--instance-id i-0123456789abcdef0 \
--name "mi-app-v1.0" \
--description "Servidor web configurado" \
--no-reboot

# Ver sus AMI
aws ec2 describe-images --owners self

# Eliminar una AMI
aws ec2 deregister-image --image-id ami-0123456789abcdef0

Buenas Prácticas AMI​

1. Nomenclatura Coherente​

Formato recomendado :
<aplicación>-<versión>-<fecha>-<entorno>

Ejemplos :
• webapp-v2.1-20241218-prod
• api-server-v1.0-20241218-staging
• bastion-v1.0-20241218-shared

2. Versionar sus AMI​

webapp-v1.0  →  webapp-v1.1  →  webapp-v2.0
│ │ │
└── Pequeña └── Bug fix └── Nueva
release funcionalidad

3. Automatizar la Creación​

┌─────────────────────────────────────────────────────────────┐
│ PIPELINE AMI AUTOMATIZADO │
├─────────────────────────────────────────────────────────────┤
│ │
│ Code ──► Build ──► Test ──► Create AMI ──► Deploy │
│ │ │
│ └── Herramienta: Packer │
│ │
│ Packer = Herramienta de HashiCorp para crear AMI │
│ automáticamente y de forma reproducible │
│ │
└─────────────────────────────────────────────────────────────┘

4. Seguridad​

✅ HACER :
• Eliminar claves SSH personales
• Eliminar archivos temporales
• Borrar el historial de bash
• Actualizar los paquetes antes de crear

❌ EVITAR :
• Contraseñas en texto claro en archivos
• Claves API en el código
• Datos sensibles sin cifrar

Costo de las AMI​

┌─────────────────────────────────────────────────────────────┐
│ COSTO DE LAS AMI │
├─────────────────────────────────────────────────────────────┤
│ │
│ La AMI en sí: GRATUITA │
│ │
│ Lo que cuesta: │
│ • Almacenamiento de los snapshots EBS subyacentes │
│ • ~$0.05/GB/mes │
│ │
│ Ejemplo: │
│ AMI con volumen root de 20 GB │
│ → Costo: ~$1/mes por el almacenamiento │
│ │
│ AMI Marketplace: │
│ • Costo de licencia además del almacenamiento │
│ • Verifique el precio ANTES de lanzar │
│ │
└─────────────────────────────────────────────────────────────┘

Resumen​

ConceptoDescripción
AMIImagen de máquina para lanzar instancias
AMI AWSOficiales, gratuitas, recomendadas
AMI MarketplaceCon software, a menudo de pago
AMI PersonalCreadas por usted, privadas
RegionalCada región tiene sus propias AMI
SnapshotAMI almacenada como snapshot EBS

Quiz de Validación​

  1. ¿Qué es una AMI?
  2. ¿Qué AMI Linux está optimizada para AWS?
  3. ¿Las AMI son iguales en todas las regiones?
  4. ¿Cómo crear una AMI personalizada?
  5. ¿Qué es lo que cuesta dinero con las AMI?
  6. ¿Por qué crear sus propias AMI?

Próxima sección: Tipos de Instancias