Conecta el sitio a imágenes privadas de S3

AWSBeginner
Practicar Ahora

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

Asocia un rol preparado a EC2, comprueba la lectura real de una imagen privada y elimina la asociación.

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.

Punto de control real del laboratorio; tus identificadores pueden ser diferentes.

Punto de control real del laboratorio; tus identificadores pueden ser diferentes.

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.