📦 Almacenamiento con Amazon S3
Bienvenido a la lección sobre Amazon S3 (Simple Storage Service), uno de los servicios más icónicos y fundamentales de AWS. Si hay un servicio que representa la filosofía de la nube de AWS — escalabilidad, durabilidad y simplicidad — ese es S3.
Amazon S3 es un servicio de almacenamiento de objetos que ofrece escalabilidad infinita, durabilidad del 99.999999999% (once nueves), y acceso a datos desde cualquier lugar del mundo. Permite almacenar cualquier tipo de archivo: imágenes, vídeos, documentos, logs, backups, datos de aplicaciones, y más.
🔑 Arquitectura Fundamental de S3
Para entender S3, necesitas conocer tres conceptos básicos:
1. Buckets (Cubetas)
Un bucket es un contenedor lógico donde almacenas tus archivos (objetos). Funciona como el directorio raíz de tu almacenamiento. Cada bucket tiene:
- Un nombre único a nivel global (no puede haber dos buckets con el mismo nombre en todo AWS)
- Una región de AWS donde se almacena físicamente
- Políticas de acceso y configuración propias
2. Objetos (Objects)
Los objetos son los archivos que guardas en S3. Cada objeto consiste en:
- Key: el nombre del archivo (ej: "imagenes/foto-vacaciones.jpg")
- Value: los datos del archivo (hasta 5 TB por objeto)
- Metadata: información sobre el objeto (tipo de contenido, tamaño, fecha)
- Version ID: identificador único para control de versiones
3. Keys y Prefijos
La key es la ruta completa del objeto. Los prefijos son como carpetas lógicas:
mi-bucket/imagenes/vacaciones/foto1.jpg
|------- prefijo ------|--- key ---|
S3 no tiene carpetas reales. Los prefijos son parte del nombre del objeto para organizarlos lógicamente. Sin embargo, la consola de AWS los muestra como carpetas para facilitar la navegación.
📊 Clases de Almacenamiento de S3
AWS ofrece diferentes clases de almacenamiento optimizadas para distintos casos de uso y patrones de acceso:
| Clase | Uso Ideal | Disponibilidad | Costo |
|---|---|---|---|
| S3 Standard | Datos frecuentemente accedidos | 99.99% | $$$ |
| S3 Intelligent-Tiering | Patrones de acceso desconocidos o cambiantes | 99.9% | $$ |
| S3 Standard-IA | Datos poco frecuentes (infrecuently Accessed) | 99.9% | $$ |
| S3 Glacier Instant Retrieval | Archivo de larga duración, acceso en milisegundos | 99.9% | $ |
| S3 Glacier Flexible Retrieval | Archive, acceso en minutos a horas | 99.99% | $ |
| S3 Glacier Deep Archive | Retención de datos regulatoria, 7-12 años | 99.99% | $ |
| S3 One Zone-IA | Datos recreables, baja disponibilidad OK | 99.5% | $ |
Usa S3 Intelligent-Tiering cuando no estés seguro de los patrones de acceso. AWS mueve automáticamente los objetos entre niveles según su uso, optimizando costos sin intervención tuya.
🛡️ Seguridad en S3
S3 ofrece múltiples capas de seguridad:
Control de Acceso
- IAM Policies: Controla acceso a buckets mediante políticas de IAM (recomendado para usuarios y servicios)
- Bucket Policies: Políticas JSON aplicadas directamente al bucket
- Access Control Lists (ACLs): Control granular, menos usado actualmente
- S3 Access Points: Puntos de acceso con políticas específicas para aplicaciones
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"AWS": "arn:aws:iam::123456789012:user/miusuario"},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::mi-bucket/*"
}
]
}
Protección de Datos
Cifrado: S3 cifra automáticamente todos los datos nuevos. Puedes elegir entre cifrado del lado del servidor (SSE-S3, SSE-KMS) o del cliente antes de subir.
Por defecto, los buckets S3 son privados. Sin embargo, muchos incidentes de seguridad ocurren cuando alguien configura accidentalmente "Block all public access" como deshabilitado. Siempre verifica esta configuración.
Versioning (Control de Versiones)
El versionado mantiene múltiples versiones de un objeto. Útil para:
- Recuperación ante eliminaciones accidentales
- Auditoría de cambios
- Volver a versiones anteriores
Replication
La replicación asíncrona copia automáticamente objetos a otro bucket (misma cuenta o diferente):
- S3 Replication (CRR): Replicación entre regiones
- S3 Replication (SRR): Replicación dentro de la misma región
El versionado y la replicación tienen costos adicionales. Habilítalos solo cuando sea necesario para tu caso de uso.
📈 Características Avanzadas
Ver más sobre Lifecycle Policies (Políticas de Ciclo de Vida)Las políticas de ciclo de vida te permiten automatizar la transición de objetos entre clases de almacenamiento o su eliminación:
{
"Rules": [
{
"ID": "MoveToGlacierAfter30Days",
"Status": "Enabled",
"Filter": {"Prefix": "logs/"},
"Transitions": [
{"Days": 30, "StorageClass": "GLACIER"},
{"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 2555}
}
]
}
Este ejemplo mueve logs a Glacier después de 30 días, a Deep Archive después de un año, y los elimina después de 7 años.
S3 Select permite consultar datos almacenados en S3 (CSV, JSON, Parquet) filtrando solo los registros que necesitas, reduciendo costos de transferencia y tiempo de procesamiento.
Ideal para análisis de logs, procesamiento de datos parcial, y aplicaciones que solo necesitan subsets de datos.
💰 Modelos de Precios
Los costos de S3 se componen de:
| Componente | Descripción |
|---|---|
| Almacenamiento | Por GB almacenado por mes |
| Peticiones | PUT, COPY, POST, LIST, GET (diferentes costos) |
| Transferencia | Datos出去了 de S3 (no aplica entre servicios AWS en misma región) |
| Retrieval | Para Glacier: costo por GB recuperado |
| Metadata | Storage Class Analysis, Inventory, Object Lambda |
Usa S3 Analytics para analizar patrones de acceso y determinar cuándo mover datos a clases más económicas. También habilita S3 Intelligent-Tiering para optimización automática.
🎯 Casos de Uso Comunes
- Hosting de sitios estáticos: S3 puede servir sitios web estáticos (HTML, CSS, JS) con configuración很简单
- Almacenamiento de datos de aplicaciones: Imágenes de perfil, documentos subídos, logs
- Backup y archivo: Soluciones de backup con políticas de ciclo de vida
- Data Lakes: Base para arquitecturas de data lake en AWS
- Distribución de contenido: Combinado con CloudFront para CDN
- Streaming de medios: Almacenar y servir vídeos, audio
"Amazon S3 ha sido diseñado para ofrecer una durabilidad del 99.999999999%, lo que significa que si almacenas 10,000,000 de objetos en S3, podrías esperar perder uno de ellos una vez cada 10,000 años en promedio." — Documentación oficial de AWS
🔧 Hands-On: Primeros Pasos
- Crear un bucket: Ve a la consola de S3 y haz clic en "Crear bucket". Elige región, nombre único, y configuración inicial.
- Subir un objeto: Usa la consola, AWS CLI, o SDK. Ejemplo con CLI:
aws s3 cp mi-archivo.txt s3://mi-bucket/documentos/ aws s3 ls s3://mi-bucket/ - Habilitar versionado: En propiedades del bucket, activa versionado para protección contra eliminación.
- Crear política de ciclo de vida: Automatiza la transición a clases más económicas.
- Configurar Static Website Hosting: Para servir contenido estático públicamente.
- Máximo 100 buckets por cuenta (puedes solicitar incremento)
- Tamaño máximo de objeto: 5 TB
- Máximo 1000 requests por segundo por prefijo (en S3 Standard)
📊 Comparación Rápida
| Característica | S3 | EFS (File System) | EBS (Block) |
|---|---|---|---|
| Tipo | Objetos | Sistema de archivos | Volumen de bloques |
| Acceso | HTTP/S (URL) | Mount point (NFS) | Solo EC2 |
| Casos de uso | Archivos, backups, data lake | Apps compartidas, CMS | Base de datos, SO |
| Escalabilidad | Automática infinita | Automática | Manual (hasta 16 TB) |
✅ Resumen de Conceptos Clave
- Bucket: Contenedor raíz con nombre global único
- Object: Archivo con key, value, metadata y versión
- Storage Classes: Elige según frecuencia de acceso (Standard, IA, Glacier)
- Seguridad: IAM, Bucket Policies, ACLs, cifrado
- Durabilidad: 99.999999999% (once nueves)
- Costos: Almacenamiento + peticiones + transferencia
🧠 Quiz Final
1. ¿Cuál es el nivel de durabilidad que ofrece S3 por defecto?
- A) 99.9%
- B) 99.99%
- C) 99.999999999%
- D) 99.999%
2. ¿Qué clase de almacenamiento usarías para logs que se acceden solo una vez al mes después de los primeros 30 días?
- A) S3 Standard
- B) S3 Glacier Deep Archive
- C) S3 Standard-IA
- D) S3 One Zone-IA
3. ¿Cuál es la diferencia entre un prefijo y una carpeta en S3?
- A) No hay diferencia, son exactamente lo mismo
- B) Los prefijos son temporales, las carpetas son permanentes
- C) Los prefijos son parte del nombre del objeto (key), no existen como entidades separadas
- D) Las carpetas tienen mayor rendimiento que los prefijos
📚 Recursos Adicionales
- AWS S3 Documentation: Documentación oficial completa
- AWS S3 Pricing Calculator: Calculadora para estimar costos
- AWS re:Invent Sessions: Vídeos de deep-dives sobre S3
- S3 FAQ: Preguntas frecuentes oficiales
En la próxima lección exploraremos Amazon EFS y Amazon EBS para entender cuándo usar cada tipo de almacenamiento en AWS.
Esta lección forma parte del curso "AWS Cloud Practitioner: Fundamentos de la Nube". Para más información, consulta la documentación oficial de AWS.