Demo en vivo: Amazon S3 — Flujo completo
Qué van a ver los estudiantes
El ciclo completo de S3: crear bucket → subir objetos → controlar acceso → organizar con carpetas → configurar versionamiento → lifecycle policy → eliminar.
PASO 1 — Crear el bucket
- Consola AWS → S3 → Create bucket
- Bucket name:
demo-s3-[tus-iniciales]-2026(debe ser globalmente único) - Region: la tuya habitual
- Block all public access: déjalo activado por ahora
- Versioning: Disable por ahora (lo activamos después)
- Create bucket
💬 “El nombre del bucket es globalmente único en todo AWS — no solo en tu cuenta. Es como registrar un dominio. Si alguien ya tomó ese nombre, no puedes usarlo.”
PASO 2 — Subir objetos
Prepara de antemano en tu computadora:
- Un archivo de texto:
bienvenida.txtcon cualquier contenido - Una imagen pequeña (cualquier .jpg o .png)
En la consola:
- Entra al bucket → Upload
- Add files → selecciona ambos archivos
- Upload
💬 “En S3 no hay carpetas reales — todo son objetos con una llave (key). Lo que parece una carpeta es solo un prefijo en el nombre del objeto.”
PASO 3 — Explorar el objeto
- Click en
bienvenida.txt - Muestra las propiedades: Storage class (Standard por defecto), Object URL, tamaño, fecha
- Click en Object URL — obtendrás un 403 Access Denied
💬 “El objeto existe pero está bloqueado. S3 es privado por defecto. Para acceder necesitamos o hacer el objeto público, o usar una URL firmada (pre-signed URL), o autenticarnos.”
PASO 4 — Hacer un objeto público (y entender las consecuencias)
Primero hay que permitir acceso público al bucket:
- Bucket → Permissions → Block public access → Edit
- Desactiva Block all public access → Save
- Confirma escribiendo
confirm
Luego en el objeto:
- Selecciona
bienvenida.txt→ Actions → Make public using ACL - Make public
- Copia la Object URL y pégala en el navegador
Ahora carga correctamente.
💬 “¿Ven la diferencia? El mismo objeto, mismo URL, pero ahora accesible. En producción, los buckets con datos sensibles NUNCA deben tener acceso público. AWS incluso te avisa con un banner naranja cuando un bucket es público.”
PASO 5 — Crear una “carpeta” y entender prefijos
- En el bucket → Create folder
- Nombre:
imagenes - Sube la imagen dentro de esa carpeta
Muestra la URL del objeto dentro de la carpeta:
https://[bucket].s3.[region].amazonaws.com/imagenes/foto.jpg
💬 “La ‘carpeta’ imagenes/ es solo un prefijo en el nombre del objeto. S3 no tiene jerarquía real de directorios — es un espacio de nombres plano. Pero la consola lo presenta como carpetas para que sea intuitivo.”
PASO 6 — Activar versionamiento
- Bucket → Properties → Bucket Versioning → Edit
- Enable → Save
Ahora modifica bienvenida.txt en tu computadora (agrega una línea) y súbelo de nuevo con el mismo nombre.
- Click en
bienvenida.txt - Activa el toggle Show versions
- Muestra las dos versiones con sus Version IDs distintos
- Descarga la versión anterior — tiene el contenido original
💬 “Con versionamiento activado, S3 nunca sobreescribe un objeto — guarda todas las versiones. Esto protege contra borrado accidental. La desventaja: pagas por cada versión almacenada.”
PASO 7 — Borrar un objeto y recuperarlo
- Selecciona
bienvenida.txt→ Delete - Confirma
- El objeto desaparece de la vista normal
Activa Show versions:
- Aparece un Delete marker encima de las versiones anteriores
- Las versiones originales siguen ahí
Selecciona el Delete marker → Delete → el objeto “vuelve a existir”
💬 “El borrado en S3 con versionamiento es reversible. No borra el objeto — pone una marca encima. Para borrar permanentemente hay que eliminar todas las versiones individualmente.”
PASO 8 — Mostrar Storage Classes
- Selecciona un objeto → Actions → Edit storage class
- Muestra las opciones disponibles: Standard, Intelligent-Tiering, Standard-IA, One Zone-IA, Glacier, Glacier Deep Archive
- No cambies nada — solo que los vean
💬 “Cada clase tiene diferente costo y latencia de acceso. No tienes que elegir al subir el objeto — puedes cambiarlo después, o dejar que una Lifecycle Policy lo haga automáticamente.”
PASO 9 — Crear una Lifecycle Policy
- Bucket → Management → Lifecycle rules → Create lifecycle rule
- Rule name:
mover-a-glacier - Scope: Apply to all objects
- Acepta el warning
- Lifecycle rule actions: activa Move current versions of objects between storage classes
- Transition: S3 Glacier Flexible Retrieval after 30 days
- Create rule
💬 “Esta regla automáticamente mueve cualquier objeto a Glacier después de 30 días sin que nadie tenga que hacerlo manualmente. Así es como las empresas gestionan el costo de almacenamiento a escala.”
PASO 10 — Limpieza
Para borrar el bucket, S3 exige que esté vacío:
- Bucket → Empty → escribe
permanently delete→ Empty - Bucket → Delete → escribe el nombre del bucket → Delete
💬 “S3 no te cobra por el bucket vacío, solo por los objetos almacenados. Pero si tienes versionamiento activado, recuerden que hay que eliminar también todas las versiones anteriores — el Empty bucket lo hace por ustedes.”
Tiempo estimado
| Segmento | Tiempo |
|---|---|
| Pasos 1–3 (crear, subir, explorar) | ~8 min |
| Pasos 4–5 (acceso público, prefijos) | ~6 min |
| Pasos 6–7 (versionamiento) | ~8 min |
| Pasos 8–9 (storage classes, lifecycle) | ~6 min |
| Limpieza + discusión | ~4 min |
| Total | ~32 min |
Segmento adicional: Hosting de sitio web estático en S3
Insértalo entre el Paso 5 (carpetas/prefijos) y el Paso 6 (versionamiento) de la guía anterior.
Preparación previa — Crea estos dos archivos en tu computadora
index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Demo S3 - Cloud Foundations</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; margin-top: 80px; background: #f0f4f8; }
h1 { color: #232f3e; }
p { color: #555; font-size: 1.2em; }
.badge { background: #ff9900; color: white; padding: 8px 20px; border-radius: 4px; font-weight: bold; }
</style>
</head>
<body>
<h1>🚀 Sitio web servido desde Amazon S3</h1>
<p>Este archivo vive en un bucket de S3, no en un servidor web.</p>
<p><span class="badge">AWS Academy Cloud Foundations</span></p>
</body>
</html>error.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Página no encontrada</title>
</head>
<body>
<h1>404 - Página no encontrada</h1>
<p>Esta es la página de error personalizada servida por S3.</p>
</body>
</html>PASO 5A — Subir los archivos HTML
- En el bucket → Upload
- Sube
index.htmlyerror.html - Upload
PASO 5B — Habilitar Static Website Hosting
- Bucket → Properties → scroll hasta el fondo
- Static website hosting → Edit
- Selecciona Enable
- Hosting type: Host a static website
- Index document:
index.html - Error document:
error.html - Save changes
Aparece el Bucket website endpoint al fondo de la sección. Cópialo — se ve así:
http://demo-s3-abc-2026.s3-website-us-east-1.amazonaws.com
💬 “S3 nos acaba de dar una URL de sitio web. Pero si la abren ahora van a ver un 403. ¿Por qué? Porque los objetos siguen siendo privados. El hosting está activo, pero el contenido está bloqueado.”
PASO 5C — Hacer el bucket públicamente legible con una Bucket Policy
- Bucket → Permissions → Block public access → Edit
- Desactiva Block all public access → Save → Confirm
- Bucket → Permissions → Bucket Policy → Edit
- Pega esta policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::NOMBRE-DE-TU-BUCKET/*"
}
]
}Reemplaza NOMBRE-DE-TU-BUCKET con el nombre real de tu bucket.
- Save changes
PASO 5D — Verificar en el navegador
- Abre el Bucket website endpoint en el navegador
- Carga
index.htmlautomáticamente - Agrega
/pagina-inexistente.htmlal final de la URL → cargaerror.html
💬 “Tenemos un sitio web funcional sin ningún servidor. Sin EC2, sin Apache, sin Nginx — solo objetos en S3. ¿Para qué sirve esto en producción? Sitios estáticos, landing pages, frontends de Single Page Applications, documentación técnica. Netflix, Airbnb y muchas empresas sirven sus frontends desde S3 + CloudFront.”
PASO 5E — Mostrar la diferencia entre Object URL y Website Endpoint
Abre los dos en el navegador lado a lado:
| URL | Resultado |
|---|---|
https://s3.amazonaws.com/bucket/index.html | Descarga o muestra el archivo crudo |
http://bucket.s3-website-region.amazonaws.com | Renderiza como sitio web, maneja index y errores |
💬 “Son dos formas distintas de acceder al mismo objeto. La URL de objeto es acceso directo al archivo. El website endpoint es un mini servidor web que S3 emula — maneja rutas, documentos de índice y páginas de error.”
Puntos clave para el examen que refuerza este segmento
- S3 puede hospedar sitios web estáticos — sin server-side processing (no PHP, no Python, no bases de datos)
- Requiere que el bucket sea público — es uno de los pocos casos legítimos para desactivar Block Public Access
- El endpoint es HTTP, no HTTPS — para HTTPS se necesita CloudFront adelante (fuera del scope del módulo 7)
- Es significativamente más barato que EC2 para contenido estático
Tiempo adicional estimado
| Segmento | Tiempo |
|---|---|
| Preparar archivos + subir | ~3 min |
| Configurar static hosting + policy | ~5 min |
| Demo en navegador + discusión | ~4 min |
| Total adicional | ~12 min |
La demo completa con este segmento queda en aproximadamente 44 minutos.