Introducción
Asocia un rol preparado a EC2, comprueba la lectura real de una imagen privada y elimina la asociación.
Completa antes los laboratorios anteriores del portafolio. Este laboratorio proporciona sus propios recursos y las capacidades de las etapas previas. Conserva conocimientos, no servidores, archivos ni credenciales anteriores.
Relación con la certificación
| Certificación | Tareas | Práctica |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 2.3 | Dar al sitio lectura de cuatro objetos específicos mediante un rol de instancia. |
Vista general

Comprende el permiso que falta
En este paso, examinarás la imagen y el permiso antes de asociar el rol. Abre el sitio: el texto funciona, pero la imagen no. Un rol IAM proporciona identidad y permisos; un instance profile permite asociarlo a EC2. Ambos se llaman portfolio-reader.
Entra en el proyecto.
cd /home/labex/project
Carga y muestra el nombre del bucket propio de este laboratorio.
source website.env
echo "$PORTFOLIO_BUCKET"
Confirma images/aura-brand.webp en Contents. Tu identidad de Terminal puede listarlo; el sitio es otro solicitante y no hereda esos permisos.
aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"
Lee la política: s3:GetObject permite lectura y el array Resource contiene los ARN exactos de las tres imágenes y projects.json. No permite escritura ni otros objetos. ARN identifica un recurso completo; limitar estos cuatro objetos aplica mínimo privilegio.
cat read-image-policy.json
Mantén el bucket privado. La aplicación autorizada leerá la imagen y la devolverá al navegador; acceso al sitio no equivale a acceso público al bucket.
Asocia el rol de lectura
En este paso, darás a la aplicación su perfil preparado. No copies claves de acceso al servidor. La SDK encontrará credenciales temporales de la instancia.
Muestra y verifica INSTANCE_ID.
echo "$INSTANCE_ID"
Asocia Name=portfolio-reader. $(...) captura la salida, query selecciona AssociationId y output text devuelve el ID que echo muestra.
ASSOCIATION_ID=$(aws ec2 associate-iam-instance-profile --instance-id "$INSTANCE_ID" --iam-instance-profile Name=portfolio-reader --query 'IamInstanceProfileAssociation.AssociationId' --output text)
echo "$ASSOCIATION_ID"
Recarga hasta que aparezcan AURA, FORMA y ECHO. Haz clic en una portada: su panel lee el título y la descripción de projects.json en S3. Conserva el bucket privado; confirma instancia y perfil si no aparecen. La SDK usa credenciales temporales de IMDSv2, no claves copiadas.


Quita asociación y servidor
En este paso, eliminarás la autorización añadida y terminarás el proceso que la usa. Las credenciales temporales pueden estar en caché; separar el perfil no garantiza revocación instantánea. No uses una imagen rota inmediata como prueba de revocación.
Desasocia mediante el ID exacto guardado.
aws ec2 disassociate-iam-instance-profile --association-id "$ASSOCIATION_ID"
Termina la instancia para que ya no pueda solicitar objetos.
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
Espera su terminación.
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
Comprueba terminated y la página no disponible. Conserva rol, bucket y referencias preparados.
Resumen
Distinguiste identidad de Terminal y aplicación, asociaste el perfil y viste la imagen privada antes de limpiar.
Referencias oficiales: EC2 application roles, instance profiles.



