Almacenamiento con Amazon S3

Lectura
20 min~8 min lectura

📦 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.

CONCEPTO CLAVE
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 ---|
📌 NOTA IMPORTANTE
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% $
💡 CONSEJO PRÁCTICO
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

  1. IAM Policies: Controla acceso a buckets mediante políticas de IAM (recomendado para usuarios y servicios)
  2. Bucket Policies: Políticas JSON aplicadas directamente al bucket
  3. Access Control Lists (ACLs): Control granular, menos usado actualmente
  4. 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

CONCEPTO CLAVE
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.
⚠️ ADVERTENCIA
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
📌 NOTA
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.

Ver más sobre S3 Select

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
💡 OPTIMIZACIÓN DE COSTOS
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

  1. Hosting de sitios estáticos: S3 puede servir sitios web estáticos (HTML, CSS, JS) con configuración很简单
  2. Almacenamiento de datos de aplicaciones: Imágenes de perfil, documentos subídos, logs
  3. Backup y archivo: Soluciones de backup con políticas de ciclo de vida
  4. Data Lakes: Base para arquitecturas de data lake en AWS
  5. Distribución de contenido: Combinado con CloudFront para CDN
  6. 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

  1. Crear un bucket: Ve a la consola de S3 y haz clic en "Crear bucket". Elige región, nombre único, y configuración inicial.
  2. 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/
  3. Habilitar versionado: En propiedades del bucket, activa versionado para protección contra eliminación.
  4. Crear política de ciclo de vida: Automatiza la transición a clases más económicas.
  5. Configurar Static Website Hosting: Para servir contenido estático públicamente.
📌 LÍMITES IMPORTANTES
  • 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

PUNTOS FUNDAMENTALES
  • 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

🧠 Quiz: Amazon S3

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%
✅ Respuesta: C) 99.999999999% (once nueves). Esto significa que si guardas 10 mil millones de objetos, podrías perder uno cada 10,000 años en promedio.

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
✅ Respuesta: C) S3 Standard-IA. Diseñada para datos accedidos menos de una vez al mes, con menor costo que Standard pero acceso inmediato.

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
✅ Respuesta: C) Los prefijos son parte de la key del objeto y son puramente lógicos. S3 no tiene carpetas reales, solo las muestra así en la consola para facilitar la navegación.

📚 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
💡 SIGUIENTE PASO
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.