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
| AMI | Caso de Uso | Ventajas | Desventajas |
|---|---|---|---|
| Amazon Linux 2023 | Producción AWS | Optimizada AWS, gratuita | Específica de AWS |
| Amazon Linux 2 | Legacy, estable | Muy estable | Fin de soporte 2025 |
| Ubuntu 22.04 LTS | Desarrollo | Popular, docs | Un poco más pesada |
| Debian | Servidores | Muy estable | Menos soporte AWS |
| RHEL | Empresarial | Soporte oficial | De pago |
| CentOS Stream | Dev RHEL | Gratuito | Menos 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
| Concepto | Descripción |
|---|---|
| AMI | Imagen de máquina para lanzar instancias |
| AMI AWS | Oficiales, gratuitas, recomendadas |
| AMI Marketplace | Con software, a menudo de pago |
| AMI Personal | Creadas por usted, privadas |
| Regional | Cada región tiene sus propias AMI |
| Snapshot | AMI almacenada como snapshot EBS |
Quiz de Validación
- ¿Qué es una AMI?
- ¿Qué AMI Linux está optimizada para AWS?
- ¿Las AMI son iguales en todas las regiones?
- ¿Cómo crear una AMI personalizada?
- ¿Qué es lo que cuesta dinero con las AMI?
- ¿Por qué crear sus propias AMI?
Próxima sección: Tipos de Instancias