Reliez le site aux images S3 privées

AWSBeginner
Pratiquer maintenant

Introduction

Associez un rôle préparé à EC2, observez la vraie lecture d’une image privée puis retirez l’association.

Terminez les laboratoires précédents du portfolio. Cet environnement fournit ses propres ressources et les capacités antérieures nécessaires. Réutilisez les connaissances, pas les instances, fichiers ou identifiants précédents.

Lien avec la certification

Certification Tâches Pratique
AWS Certified Cloud Practitioner (CLF-C02) Task 2.3 Donner au site un rôle d’instance limité à la lecture de quatre objets.

Vue d’ensemble

Associez un rôle préparé à EC2, observez la vraie lecture d’une image privée puis retirez l’association.

Comprendre la permission manquante

Dans cette étape, vous examinerez image et politique avant d’associer le rôle. Ouvrez le portfolio : texte visible, image indisponible. Un rôle IAM fournit identité et permissions ; un instance profile l’associe à EC2. Les deux portent le nom portfolio-reader.

Entrez dans le projet.

cd /home/labex/project

Chargez et affichez le bucket de cet environnement.

source website.env
echo "$PORTFOLIO_BUCKET"

Confirmez images/aura-brand.webp dans Contents. Terminal possède une identité distincte ; ses permissions ne sont pas celles du site.

aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"

La politique autorise s3:GetObject. Le tableau Resource contient les ARN exacts des trois images et de projects.json, sans écriture ni autres objets. Un ARN identifie entièrement une ressource ; ce périmètre applique le moindre privilège.

cat read-image-policy.json

Le bucket reste privé. Le site lit l’image autorisée et la renvoie au navigateur ; l’accès public au site n’exige pas un bucket public.

Associer le rôle de lecture

Dans cette étape, vous donnerez au site son profil préparé. La SDK découvre des identifiants temporaires ; ne copiez pas de clés permanentes dans l’application.

Affichez et comparez INSTANCE_ID.

echo "$INSTANCE_ID"

Associez Name=portfolio-reader. $(...) capture le résultat, query sélectionne AssociationId et output text renvoie l’ID affiché par echo.

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"

Rechargez pour voir AURA, FORMA et ECHO. Cliquez sur une couverture : le panneau lit son titre et sa description depuis projects.json dans S3. Gardez le bucket privé ; vérifiez instance et profil si nécessaire. Le SDK obtient des identifiants temporaires via IMDSv2, sans clés copiées.

Point de contrôle réel du laboratoire ; vos identifiants peuvent varier.

Point de contrôle réel du laboratoire ; vos identifiants peuvent varier.

Retirer association et serveur

Dans cette étape, vous retirerez l’autorisation ajoutée puis terminerez l’application. Des identifiants temporaires peuvent être déjà en cache ; le retrait du profil n’assure pas leur révocation instantanée. Ne testez pas cela par une image immédiatement cassée.

Dissociez l’ID précis sauvegardé.

aws ec2 disassociate-iam-instance-profile --association-id "$ASSOCIATION_ID"

Terminez l’instance pour arrêter ses requêtes.

aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"

Attendez terminated.

aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"

Préservez rôle, stockage et références fournis. Vérifiez que le site n’est plus exécuté.

Résumé

Vous avez distingué les identités, associé le profil, vu l’image privée et nettoyé l’association et l’instance.

Références officielles : EC2 application roles, instance profiles.