0. Datos del alumno

En progreso

Introduce tu nombre y apellidos para iniciar el laboratorio.

Mínimo 5 caracteres y al menos un espacio.

🪣 Tarea 2: Crear bucket S3 con tags

Bloqueada

Crea un bucket S3 siguiendo las convenciones de nomenclatura de AWS y añade etiquetas (tags) para organización y seguimiento de costos. Los tags son fundamentales en entornos empresariales.

Reglas estrictas:
• 3-63 caracteres, solo minúsculas (a-z), números (0-9) y guiones (-)
• Debe empezar con letra o número
• No puede terminar en guión ni contener ".."
• Debe incluir tu apellido o identificador único (mínimo 11 caracteres en total)
• Recomendado: proyecto-TIPO-YYYY-identificador
La región determina dónde se almacenan físicamente tus datos. Considera latencia y regulación.
Los tags deben tener clave y valor no vacíos. Claves sugeridas: Environment, Project, Owner, CostCenter.

🔐 Tarea 3: Configurar versionado y cifrado

Bloqueada

El versionado protege contra borrados accidentales y el cifrado garantiza seguridad de datos en reposo. Ambas son características esenciales para buckets de producción según AWS Well-Architected Framework.

💡 Concepto clave: El versionado mantiene múltiples versiones de cada objeto. Útil para recuperación de datos y cumplimiento normativo.

🌐 Tarea 4: Activar hosting estático

Bloqueada

Configura el bucket para servir contenido web estático. Debes especificar documentos de índice y error, además de configurar opciones de redirección si es necesario.

Archivo que se sirve por defecto. Debe ser exactamente "index.html".
Archivo que se muestra en errores 4xx. Debe ser "error.html" o "404.html".
En producción real, HTTPS es obligatorio para seguridad.

📄 Tarea 5: Subir index.html y error.html

Bloqueada

Sube los archivos HTML de tu sitio web. Ambos deben ser válidos y contener estructura HTML5 completa. El index.html será tu página principal y error.html se mostrará cuando haya errores.

📝 index.html (Página principal)

Requisitos obligatorios:
• Declaración <!DOCTYPE html>
• Etiquetas: <html>, <head>, <body>, <title>, <h1>, <meta charset>
• Mínimo 200 caracteres
• Debe incluir al menos un <p> con contenido descriptivo
• Atributo lang en <html>

⚠️ error.html (Página de error)

Requisitos obligatorios:
• Misma estructura que index.html
• Título debe mencionar "Error" o "404"
• <h1> debe indicar que la página no existe
• Mínimo 150 caracteres

🌍 Tarea 6: Configurar CORS (Cross-Origin Resource Sharing)

Bloqueada

CORS permite que tu sitio web cargue recursos desde otros dominios de forma segura. Configura las reglas CORS en formato JSON según las especificaciones de AWS.

💡 ¿Por qué CORS? Si tu sitio carga APIs, fuentes, o recursos desde otros dominios, necesitas configurar CORS para que los navegadores permitan estas peticiones.
Requisitos de validación:
• JSON válido sintácticamente
• Debe contener el array "CORSRules"
• Al menos una regla con: AllowedOrigins, AllowedMethods, AllowedHeaders
• AllowedMethods debe incluir al menos "GET"
• AllowedOrigins puede ser ["*"] o dominios específicos
• MaxAgeSeconds debe estar entre 0 y 86400

🔓 Tarea 7: Establecer permisos de acceso público

Bloqueada

Configura el Block Public Access y los permisos ACL del bucket. Debes balancear accesibilidad con seguridad según las mejores prácticas de AWS.

⚠️ Advertencia de seguridad crítica: Permitir acceso público expone tu contenido. Asegúrate de no subir información sensible, credenciales o datos personales.
Para hosting público, TODAS deben estar DESMARCADAS. En producción empresarial, se recomienda mantenerlas activadas y usar CloudFront.

📜 Tarea 8: Crear política de bucket (Bucket Policy)

Bloqueada

Escribe una política de bucket en JSON que defina permisos granulares. Esta es la forma más potente y recomendada de gestionar permisos en S3.

💡 Política vs ACL: Las políticas de bucket son más flexibles que los ACLs. Permiten condiciones, múltiples principals, y control detallado por acción.
Validaciones estrictas:
• JSON sintácticamente válido
• Version = "2012-10-17" (versión actual de IAM)
• Statement debe ser un array no vacío
• Cada statement necesita: Sid, Effect, Principal, Action, Resource
• Effect = "Allow" (no "Deny" para este lab)
• Principal = "*" (acceso público)
• Action = "s3:GetObject" (lectura de objetos)
• Resource = "arn:aws:s3:::NOMBRE-DE-TU-BUCKET/*" (con el nombre real de tu bucket)
• El ARN debe terminar en "/*" para aplicar a todos los objetos

♻️ Tarea 9: Configurar ciclo de vida (Lifecycle Policy)

Bloqueada

Las reglas de ciclo de vida automatizan la transición de objetos entre clases de almacenamiento y la eliminación de versiones antiguas, optimizando costos.

Identificador único para esta regla (ej: DeleteOldVersions, ArchiveToGlacier).
Aplica la regla solo a objetos con este prefijo. Dejar vacío aplica a todo el bucket.
Mover objetos a almacenamiento de acceso infrecuente (Standard-IA) tras N días. Mínimo: 30.
Archivar en Glacier para almacenamiento de largo plazo. Debe ser mayor que transición a IA.
Eliminar objetos automáticamente tras N días. Útil para logs temporales.

📊 Tarea 10: Habilitar logging y métricas

Bloqueada

El logging de acceso y las métricas de CloudWatch son esenciales para monitorización, auditoría y troubleshooting en entornos de producción.

📝 Server Access Logging

📈 CloudWatch Métricas

🧪 Tarea 11: Pruebas de funcionamiento

Bloqueada

Realiza pruebas exhaustivas para verificar que todas las configuraciones funcionan correctamente. Este paso simula QA (Quality Assurance) antes de despliegue a producción.

Lista de verificación de pruebas

Debes aprobar las 6 pruebas para continuar.

📋 Tarea 12: Documentación y verificación final

Bloqueada

Documenta tu configuración completa y realiza la verificación final del laboratorio. La documentación es crítica para mantenimiento y auditorías.

📊 Resumen de tu configuración

Bucket:-
Región:-
URL del sitio:-
Versionado:-
Cifrado:-
CORS:-
Logging:-
Lifecycle:-
Mínimo 100 caracteres. Explica el propósito y alcance del proyecto.
Mínimo 80 caracteres. Menciona cifrado, políticas, permisos, etc.
Estimación basada en tráfico esperado.
Mínimo 80 caracteres. Reflexión personal sobre el proceso.