AWS Certified Cloud Practitioner
Post 7 of 25
28%
Complete
AWS Cloud Practitioner #7: Amazon S3 - Almacenamiento Ilimitado en la Nube
Domina S3: storage classes (Standard, IA, Glacier), versioning, lifecycle policies, security, y aprende a optimizar costos de almacenamiento.
Recommended Prerequisites
For the best learning experience, we recommend reading these posts first:
🎯 Lo que Aprenderás Hoy
Al finalizar este post, podrás:
- Explicar qué es Amazon S3 y sus características clave
- Diferenciar entre storage classes (Standard, IA, Glacier, Deep Archive)
- Implementar versioning, lifecycle policies y replication
- Configurar security y encryption
- Optimizar costos de almacenamiento
El Problema Real
Tu startup tiene una app de fotos. Los usuarios suben millones de imágenes.
Desafíos:
1. Almacenamiento:
On-premise: Comprar servers con discos
Costo: $10,000 inicial + $500/mes
Límite: 10 TB (cuando se llena, comprar más)
2. Escalamiento:
App crece de 10 TB → 100 TB en 6 meses
On-premise: Comprar más hardware ($50,000+)
Tiempo: 2-3 semanas
3. Disponibilidad:
Si disco falla → data loss
Necesitas RAID, backups, etc.
4. Acceso:
Users en todo el mundo
Latencia alta desde regiones lejanasSolución: Amazon S3
✅ Almacenamiento ilimitado
✅ Pagas solo por lo que usas ($0.023/GB/mes)
✅ 99.999999999% (11 nines) durability
✅ Escalamiento automático
✅ Distribución global
✅ No mantenimiento de hardware¿Qué es Amazon S3?
Amazon S3 (Simple Storage Service) es un servicio de object storage que te permite almacenar cantidades ilimitadas de datos.
Analogía: S3 es como Google Drive/Dropbox pero:
- Ilimitado (no hay plan de 2TB o 10TB)
- API-first (diseñado para apps, no solo humanos)
- Infinitamente escalable
- Pagas solo por GB usado
Conceptos Fundamentales
1. Objects (Objetos)
Un object es un archivo y su metadata.
Object components:
- Key: Nombre único (path) del objeto
- Value: El contenido (data) del archivo
- Metadata: Info sobre el objeto (content-type, last-modified, etc.)
- Version ID: Si versioning está habilitado
- Access Control: Permisos
Ejemplo:
Key: photos/2025/vacation/beach.jpg
Value: [binary data de la imagen]
Metadata: {
"Content-Type": "image/jpeg",
"Content-Length": "524288",
"Last-Modified": "2025-11-16T10:00:00Z"
}Size limits:
- Mínimo: 0 bytes
- Máximo: 5 TB por objeto
2. Buckets
Un bucket es un contenedor para objects.
Bucket characteristics:
- Nombre globalmente único (en todo AWS)
- Creado en una región específica
- Puede contener objetos ilimitados
- No hay folders (solo prefixes que simulan folders)
Ejemplo:
Bucket name: mi-app-fotos-prod-us-east-1
Region: us-east-1
Objects dentro:
s3://mi-app-fotos-prod-us-east-1/users/123/profile.jpg
s3://mi-app-fotos-prod-us-east-1/users/123/photos/vacation.jpg
s3://mi-app-fotos-prod-us-east-1/public/logo.png3. Keys (Paths)
El key es el path completo del objeto.
NO hay folders reales en S3, solo prefixes:
Key: users/123/photos/vacation.jpg
─────┬──── ──┬── ─────┬─────
prefix prefix filename
En S3 Console se VE como folders, pero son prefixesStorage Classes (Clases de Almacenamiento)
S3 tiene diferentes storage classes para optimizar costos basados en frecuencia de acceso.
1. S3 Standard
¿Qué es? Storage para datos accedidos frecuentemente.
Características:
✅ Low latency, high throughput
✅ 99.99% availability (SLA)
✅ 11 nines (99.999999999%) durability
✅ Almacenado en ≥3 AZs
Pricing:
Storage: $0.023/GB/mes
Requests: $0.0004 per 1,000 GET
$0.005 per 1,000 PUT¿Cuándo usar?
✅ Datos accedidos frecuentemente
✅ Aplicaciones que requieren baja latencia
✅ Contenido dinámico (user uploads)
✅ Analytics en tiempo real
Ejemplo:
- Imágenes de perfil de usuarios activos
- Logs de la última semana
- Assets de aplicación web (JS, CSS)2. S3 Intelligent-Tiering
¿Qué es? Mueve automáticamente objetos entre tiers basado en patrones de acceso.
Tiers automáticos:
- Frequent Access: Para objetos accedidos regularmente
- Infrequent Access: No accedidos por 30 días
- Archive Instant Access: No accedidos por 90 días
- Archive Access: No accedidos por 90-180 días
- Deep Archive Access: No accedidos por 180-730 días
Pricing:
Storage: Similar a Standard
Monitoring fee: $0.0025 per 1,000 objects/mes
Sin retrieval fees entre tiers¿Cuándo usar?
✅ Patrones de acceso impredecibles
✅ Quieres optimización automática sin gestión manual
✅ Data sets grandes con acceso variable
Ejemplo:
- Machine learning datasets (a veces accedidos, a veces no)
- Archivos de proyectos completados (uso esporádico)3. S3 Standard-IA (Infrequent Access)
¿Qué es? Para datos accedidos pocas veces, pero que requieren acceso rápido cuando se necesitan.
Características:
✅ Same latency as Standard
✅ Lower storage cost
❌ Retrieval fee por GB accedido
✅ Almacenado en ≥3 AZs
❌ Minimum storage duration: 30 días
Pricing:
Storage: $0.0125/GB/mes (46% cheaper que Standard)
Retrieval: $0.01/GB
Requests: $0.001 per 1,000 GET¿Cuándo usar?
✅ Datos accedidos < 1 vez/mes
✅ Backups
✅ Disaster recovery
✅ Data que debe estar disponible rápidamente si se necesita
Ejemplo:
- Backups semanales (raramente restaurados)
- Imágenes de usuarios inactivos
- Archivos de auditoría (raramente consultados)
❌ NO usar para:
- Datos accedidos frecuentemente (usa Standard)
- Archivos muy pequeños (min 128KB para ser cost-effective)4. S3 One Zone-IA
¿Qué es? Como Standard-IA pero almacenado en solo 1 AZ (menor disponibilidad, menor costo).
Características:
✅ Same latency as Standard
✅ Even lower cost que Standard-IA
❌ Solo 1 AZ (si AZ falla, pierdes data)
✅ 99.5% availability (vs. 99.9% de Standard)
Pricing:
Storage: $0.01/GB/mes (56% cheaper que Standard)
Retrieval: $0.01/GB¿Cuándo usar?
✅ Data que puedes recrear fácilmente
✅ Backups secundarios
✅ Thumbnails (puedes regenerar desde original)
Ejemplo:
- Thumbnails de imágenes (puedes recrear desde full-size)
- Data procesada que puede re-generarse
- Backups no críticos
❌ NO usar para:
- Data crítica
- Compliance data
- Única copia de información importante5. S3 Glacier Instant Retrieval
¿Qué es? Para archivos accedidos muy raramente (trimestral), con acceso instantáneo cuando se necesitan.
Características:
✅ Same latency as Standard (milliseconds)
✅ Muy bajo costo de storage
❌ Higher retrieval cost
❌ Minimum storage duration: 90 días
Pricing:
Storage: $0.004/GB/mes (83% cheaper que Standard)
Retrieval: $0.03/GB¿Cuándo usar?
✅ Archivos médicos/financieros (compliance requiere mantener, rara vez accedidos)
✅ Backups anuales
✅ Data de compliance de 7+ años
Ejemplo:
- Registros médicos (deben guardarse 10 años, raramente accedidos)
- Tax records (deben guardarse 7 años)6. S3 Glacier Flexible Retrieval
¿Qué es? Para archivos raramente accedidos, con retrieval en minutos u horas.
Características:
❌ NO acceso instantáneo
✅ Retrieval en: 1-5 minutos (Expedited), 3-5 horas (Standard), 5-12 horas (Bulk)
✅ Muy bajo costo de storage
❌ Minimum storage duration: 90 días
Pricing:
Storage: $0.0036/GB/mes (84% cheaper que Standard)
Retrieval:
- Expedited: $0.03/GB + $0.01 per request
- Standard: $0.01/GB + $0.05 per 1,000 requests
- Bulk: $0.0025/GB + $0.025 per 1,000 requests¿Cuándo usar?
✅ Archivos que NO necesitas inmediatamente
✅ Backups de long-term
✅ Digital preservation
Ejemplo:
- Backups de databases de hace >1 año
- Video archives (raramente accedidos)
- Scientific data preservation7. S3 Glacier Deep Archive
¿Qué es? El storage más barato, para datos accedidos extremadamente raramente.
Características:
❌ Retrieval en 12-48 horas
✅ Costo de storage MÍN MO
❌ Minimum storage duration: 180 días
Pricing:
Storage: $0.00099/GB/mes (96% cheaper que Standard)
Retrieval:
- Standard: $0.02/GB (12 horas)
- Bulk: $0.0025/GB (48 horas)¿Cuándo usar?
✅ Data que debe guardarse por regulación
✅ Archivos accedidos < 1 vez/año
✅ Reemplazo de magnetic tape archives
Ejemplo:
- Registros financieros de 10+ años
- Compliance archives (legal requirement)
- Data histórica para disaster recovery extremo
Caso real:
Una empresa debe guardar emails por 7 años por compliance:
- Año 1: S3 Standard-IA
- Año 2-3: Glacier Instant Retrieval
- Año 4-7: Glacier Deep Archive
Ahorro: 95% vs. mantener todo en StandardComparación Visual de Storage Classes
| Class | Latency | Min Duration | Durability | AZs | Cost/GB/mes | Uso |
|---|---|---|---|---|---|---|
| Standard | ms | No | 11 nines | ≥3 | $0.023 | Frequent access |
| Intelligent-Tiering | ms | No | 11 nines | ≥3 | $0.023* | Unknown pattern |
| Standard-IA | ms | 30d | 11 nines | ≥3 | $0.0125 | Infrequent + fast |
| One Zone-IA | ms | 30d | 11 nines | 1 | $0.01 | Recreatable data |
| Glacier Instant | ms | 90d | 11 nines | ≥3 | $0.004 | Archive + instant |
| Glacier Flexible | min-hrs | 90d | 11 nines | ≥3 | $0.0036 | Archive + planned |
| Glacier Deep | 12-48h | 180d | 11 nines | ≥3 | $0.00099 | Long-term archive |
*Plus monitoring fee
Lifecycle Policies
¿Qué son? Reglas automáticas para mover o eliminar objetos basado en edad.
Ejemplo de política:
Rule 1: Archivos en /logs/
- Después de 30 días → mover a Standard-IA
- Después de 90 días → mover a Glacier Flexible
- Después de 365 días → DELETE
Rule 2: Archivos en /backups/
- Después de 7 días → mover a Standard-IA
- Después de 30 días → mover a Glacier Deep Archive
- Nunca eliminar (compliance)Configuración
{
"Rules": [
{
"Id": "Move logs to archive",
"Prefix": "logs/",
"Status": "Enabled",
"Transitions": [
{
"Days": 30,
"StorageClass": "STANDARD_IA"
},
{
"Days": 90,
"StorageClass": "GLACIER"
}
],
"Expiration": {
"Days": 365
}
}
]
}# Aplicar lifecycle policy
aws s3api put-bucket-lifecycle-configuration \
--bucket mi-bucket \
--lifecycle-configuration file://lifecycle.jsonBeneficio:
Sin lifecycle policy:
1 TB logs en Standard todo el año
Costo: $276/año
Con lifecycle policy:
- Primeros 30 días en Standard: $23
- Días 31-90 en Standard-IA: $7.50
- Días 91-365 en Glacier: $27.45
- Total: $57.95/año
Ahorro: $218/año (79%)Versioning
¿Qué es? Mantiene múltiples versiones de un objeto en el mismo bucket.
Sin versioning:
PUT photo.jpg (version 1)
PUT photo.jpg (sobrescribe version 1) ← No puedes recuperar v1
Con versioning:
PUT photo.jpg (version 1, ID: abc123)
PUT photo.jpg (version 2, ID: def456) ← v1 sigue disponible
GET photo.jpg → retorna v2 (latest)
GET photo.jpg?versionId=abc123 → retorna v1Casos de Uso
1. Protección contra eliminación accidental
# Con versioning, DELETE no elimina, solo marca como deleted
DELETE photo.jpg
→ Agrega "delete marker" (nueva version)
→ Objeto aparece como eliminado
→ Pero versiones anteriores siguen existiendo
# Recuperar:
aws s3api delete-object \
--bucket mi-bucket \
--key photo.jpg \
--version-id [delete-marker-id]
→ Objeto reaparece2. Auditoría de cambios
# Ver todas las versiones
aws s3api list-object-versions \
--bucket mi-bucket \
--prefix document.pdf
Output:
Version 3 (latest): 2025-11-16 10:00
Version 2: 2025-11-15 14:00
Version 1: 2025-11-10 09:00
# Puedes ver qué cambió y cuándo3. Rollback
# Si subes versión incorrecta, puedes volver a anterior
# Promover versión anterior a latest
aws s3api copy-object \
--bucket mi-bucket \
--copy-source mi-bucket/file.txt?versionId=abc123 \
--key file.txtCostos de Versioning
⚠️ Pagas por CADA versión almacenada
Ejemplo:
file.txt (1 GB) updated 10 veces en un mes
→ 10 GB almacenados (todas las versiones)
→ Costo: $0.23 (vs. $0.023 sin versioning)
Mitigación: Lifecycle policy para borrar old versions
{
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
}
→ Borra versiones no-current después de 30 díasReplication
¿Qué es? Copia automática de objetos entre buckets.
Cross-Region Replication (CRR)
Bucket A (us-east-1) → Bucket B (eu-west-1)
Casos de uso:
✅ Compliance (datos deben estar en región específica)
✅ Lower latency (usuarios en Europa acceden a eu-west-1)
✅ Disaster recovery (backup en otra región)
Ejemplo:
App con usuarios en US y Europa
- Write to us-east-1
- Auto-replicate to eu-west-1
- Users en EU acceden desde eu-west-1 (menor latency)Same-Region Replication (SRR)
Bucket A (us-east-1) → Bucket B (us-east-1)
Casos de uso:
✅ Agregación de logs (múltiples buckets → 1 bucket)
✅ Replicación entre accounts (prod → dev)
✅ Data backup dentro de región
Ejemplo:
Múltiples apps escriben logs a sus propios buckets
→ Replica todos a bucket centralizado de analyticsConfiguración
{
"Role": "arn:aws:iam::123456789012:role/ReplicationRole",
"Rules": [
{
"Status": "Enabled",
"Priority": 1,
"Filter": {
"Prefix": "documents/"
},
"Destination": {
"Bucket": "arn:aws:s3:::destination-bucket",
"StorageClass": "STANDARD_IA"
}
}
]
}Importante:
✅ Versioning DEBE estar habilitado en source y destination
✅ Solo replica objetos NUEVOS (después de habilitar replication)
✅ Para replicar objetos existentes: S3 Batch ReplicationSecurity
1. Bucket Policies
Control de acceso a nivel de bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mi-bucket/public/*"
},
{
"Sid": "DenyUnencrypted",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::mi-bucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
]
}Casos de uso:
✅ Hacer bucket público (website hosting)
✅ Compartir con otra AWS account
✅ Forzar encryption
✅ Restringir por IP2. ACLs (Access Control Lists)
Control de acceso a nivel de objeto (legacy, usa IAM/Bucket Policies).
3. Block Public Access
Previene buckets públicos accidentales.
# Habilitar Block Public Access (recomendado por defecto)
aws s3api put-public-access-block \
--bucket mi-bucket \
--public-access-block-configuration \
"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
Resultado:
❌ No puedes hacer bucket público
❌ No puedes agregar ACLs públicas
❌ No puedes agregar bucket policies públicas
→ Previene data leaks accidentalesEncryption
1. Encryption at Rest
Server-Side Encryption (SSE):
SSE-S3: AWS gestiona keys
- Encryption: AES-256
- AWS rota keys automáticamente
- Costo: $0 (incluido)
SSE-KMS: Tú gestionas keys con AWS KMS
- Más control sobre keys
- Auditing de uso de keys (CloudTrail)
- Costo: KMS charges
SSE-C: Tú provees las keys
- Tú gestionas keys completamente
- AWS solo usa para encrypt/decrypt# Habilitar default encryption
aws s3api put-bucket-encryption \
--bucket mi-bucket \
--server-side-encryption-configuration '{
"Rules": [{
"ApplyServerSideEncryptionByDefault": {
"SSEAlgorithm": "AES256"
}
}]
}'
# Ahora todos los objetos se encriptan automáticamenteClient-Side Encryption:
# Encriptas ANTES de subir a S3
from Crypto.Cipher import AES
def encrypt_file(file_path):
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)
return ciphertext
# Upload encrypted file
encrypted_data = encrypt_file("sensitive.pdf")
s3.put_object(Bucket='mi-bucket', Key='sensitive.pdf', Body=encrypted_data)
# AWS solo ve datos encriptados2. Encryption in Transit
Usa HTTPS/TLS para todas las transferencias:
✅ Bucket policy que fuerza HTTPS:
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::mi-bucket/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
→ Rechaza requests no-HTTPS📝 Preparación para el Examen
Puntos Clave para Memorizar
Storage Classes:
- 📌 Standard: Frequent access, low latency
- 📌 Intelligent-Tiering: Unknown/changing access patterns
- 📌 Standard-IA: Infrequent access, fast retrieval
- 📌 One Zone-IA: Infrequent + single AZ + recreatable data
- 📌 Glacier Instant: Archive + instant retrieval
- 📌 Glacier Flexible: Archive + 1-5 min to hours retrieval
- 📌 Glacier Deep Archive: Cheapest, 12-48h retrieval
Características:
- 📌 Durability: 11 nines (99.999999999%) para todas las classes
- 📌 Availability: Varía (99.99% Standard, 99.5% One Zone-IA)
- 📌 Versioning: Protege contra delete accidental
- 📌 Lifecycle: Automáticamente mueve/elimina objetos por edad
- 📌 Replication: CRR (cross-region), SRR (same-region)
Security:
- 📌 Encryption at rest: SSE-S3, SSE-KMS, SSE-C
- 📌 Encryption in transit: HTTPS/TLS
- 📌 Block Public Access: Previene buckets públicos accidentales
Preguntas de Práctica
Pregunta 1:
Una empresa necesita guardar logs que:
- Son accedidos frecuentemente los primeros 30 días
- Raramente accedidos después
- Deben mantenerse 1 año por compliance
¿Qué solución es más cost-effective?
A) S3 Standard con manual migration B) S3 Standard-IA C) S3 Standard con lifecycle policy D) S3 Glacier Deep Archive
Respuesta: C) S3 Standard con lifecycle policy
Lifecycle policy automáticamente mueve objetos:
- 0-30 días: Standard (frequent access)
- 30-365 días: Standard-IA o Glacier (infrequent access)
- Después de 365 días: DELETE (compliance cumplido)
Optimiza costos automáticamente sin gestión manual.
Pregunta 2:
¿Qué storage class tiene el menor costo de almacenamiento?
A) S3 Standard-IA B) S3 One Zone-IA C) S3 Glacier Flexible Retrieval D) S3 Glacier Deep Archive
Respuesta: D) S3 Glacier Deep Archive
$0.00099/GB/mes es el más barato. Trade-off: retrieval toma 12-48 horas.
🎓 Resumen
Lo que aprendimos:
- S3: Object storage ilimitado, 11 nines durability
- Storage Classes: 7 opciones desde frequent (Standard) a archive (Deep Archive)
- Lifecycle: Automatiza transitions entre classes y deletions
- Versioning: Protege contra deletes accidentales, mantiene history
- Replication: CRR (cross-region) y SRR (same-region)
- Security: Bucket policies, encryption at rest/transit, Block Public Access
Decisión de Storage Class:
¿Frecuencia de acceso?
├─ Diario/semanal → Standard
├─ Mensual → Standard-IA
├─ Trimestral + instant retrieval → Glacier Instant
├─ Anual + planned retrieval → Glacier Flexible
└─ Compliance/archival → Glacier Deep Archive
¿Patrón de acceso desconocido?
└─ Intelligent-Tiering
¿Data recreatable + cost-sensitive?
└─ One Zone-IA⏭️ Próximo Post
En el Post #8 exploraremos Amazon RDS y Database Services:
- Databases relacionales gestionadas
- RDS vs. EC2 + DB manual
- Multi-AZ, Read Replicas
- Aurora y otros database services
📚 Recursos
Tags: #AWS #CloudPractitioner #S3 #Storage #DataManagement #Lifecycle #Certification
Related Articles
AWS Cloud Practitioner #1: De Servidores Físicos a la Nube
Aprende qué es cloud computing y las diferencias entre IaaS, PaaS y SaaS con una metodología bottom-up que construye tu conocimiento paso a paso.
AWS Cloud Practitioner #2: Infraestructura Global AWS - Regions, AZs y Edge Locations
Descubre cómo AWS distribuye su infraestructura globalmente y aprende a elegir la región correcta para tus aplicaciones usando metodología bottom-up.
AWS Cloud Practitioner #3: Superpoderes de la Nube - Elasticity, Scalability y HA
Comprende las ventajas clave de cloud computing: elasticity, scalability, high availability y agility. Aprende cómo AWS implementa estos conceptos.
AWS Cloud Practitioner #4: Well-Architected Framework - Los 6 Pilares
Aprende los 6 pilares del AWS Well-Architected Framework: Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization y Sustainability.