Skip to content

Lab 05 — Cómputo: EC2, instance profile y cierre IAM → EC2 → S3#12

Merged
maxflorentin merged 1 commit into
mainfrom
lab-05-ejemplo
Jun 18, 2026
Merged

Lab 05 — Cómputo: EC2, instance profile y cierre IAM → EC2 → S3#12
maxflorentin merged 1 commit into
mainfrom
lab-05-ejemplo

Conversation

@maxflorentin

Copy link
Copy Markdown
Owner

Resumen

Cuarta y última entrega de la cadena. Lleva a `main` el lab 05: aprovisionamiento de EC2 con instance profile que reutiliza el rol del lab 04 — cierra el círculo IAM → EC2 → S3.

Bloques principales

Templates EC2

  • `ec2/security_group.json` — SG molde con ingress 80 (público) y 22 (restringido a IP del alumno)
  • `ec2/user_data.sh` — bootstrap que instala nginx, baja archivo de S3 usando IMDSv2 (sin claves en disco) y publica una página
  • `ec2/README.md` — explica cada archivo del directorio

Script demo

  • `scripts/ec2_demo.py` — orquesta el flujo completo: key pair → security group → instance profile (envuelve `app-role` del lab 04) → `run-instances` con user-data → `describe-instances`. Idempotente al nivel correcto: instance profile, SG y key pair se reusan; instancias se crean nuevas (cattle, not pets).

Docs

  • `docs/lab-05.md` — guía paso a paso (10 pasos) con tabla de qué hace LocalStack vs AWS real al final

Configuración

  • `compose.yaml` — agrega `ec2` a `SERVICES` de LocalStack

El cierre IAM → EC2 → S3

  1. Lab 04 dejó el rol `app-role` con `s3:GetObject` sobre `course-data-raw`.
  2. Lab 05 crea `app-instance-profile` que envuelve ese rol — el wrapper que EC2 necesita.
  3. La instancia se lanza con ese profile adjuntado.
  4. En AWS real, el `user_data.sh` usaría IMDSv2 para obtener credenciales temporales y bajar contenido de S3 — sin access keys en disco.

En LocalStack Community el flujo CLI/API es completo; el user-data se almacena pero no se ejecuta. Para ver `nginx` servir contenido bajado de S3, hay que correr el lab contra Learner Lab (Mod 5 de AWS Academy).

Commits

```
78834d6 add lab 05
```

Notas para el merge

  • El diff plano muestra archivos del lab-04 también (mismo efecto que en PR Lab 04 — IAM: identidad, privilegio mínimo y credenciales temporales #11). El PR de GitHub usa lógica de merge correcta y va a mostrar solo las adiciones de lab-05.
  • Smoke test: `ec2_demo.py` corre end-to-end e idempotente, `iam_demo.py` sigue idempotente, 50 unit tests pasan.
  • Último de la cadena 01 → 02 → 04 → 05. Después de este merge, `main` queda al día con todo el curso hasta hoy.

@maxflorentin maxflorentin merged commit fe54922 into main Jun 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant