Введение
Назначьте EC2 подготовленную роль, проверьте реальное чтение закрытой картинки и удалите связь.
Сначала выполните предыдущие работы портфолио. Среда предоставляет собственные ресурсы и необходимые возможности прежних этапов. Переносите знания, а не экземпляры, файлы или учётные данные.
Связь с сертификацией
| Сертификация | Задачи | Практика |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 2.3 | Дать сайту роль экземпляра для чтения четырёх определённых объектов. |
Обзор

Поймите недостающее разрешение
На этом шаге вы изучите объект и политику до назначения роли. Откройте сайт: текст доступен, картинка нет. Роль IAM даёт идентичность и права, instance profile связывает её с EC2. Оба называются portfolio-reader.
Перейдите в проект.
cd /home/labex/project
Загрузите и покажите bucket этой среды.
source website.env
echo "$PORTFOLIO_BUCKET"
Подтвердите images/aura-brand.webp в Contents. У Terminal собственная идентичность; приложение не наследует её права.
aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"
Политика разрешает s3:GetObject. Массив Resource содержит точные ARN трёх изображений и projects.json, без записи и других объектов. ARN полностью идентифицирует ресурс; такой предел соответствует минимальным привилегиям.
cat read-image-policy.json
Bucket закрыт. Авторизованный сайт читает картинку и возвращает браузеру; доступ к сайту не требует публичного bucket.
Назначьте роль чтения
На этом шаге вы дадите приложению подготовленный профиль. SDK обнаруживает временные учётные данные; не копируйте постоянные ключи.
Покажите и проверьте INSTANCE_ID.
echo "$INSTANCE_ID"
Назначьте Name=portfolio-reader. $(...) получает вывод, query выбирает AssociationId, output text возвращает ID, 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"
Обновите до появления AURA, FORMA и ECHO. Нажмите на обложку: её заголовок и описание читаются из projects.json в S3. Сохраните bucket приватным; при необходимости проверьте экземпляр и профиль. SDK получает временные данные через IMDSv2, без копирования ключей.


Удалите связь и сервер
На этом шаге вы снимете назначение и завершите приложение. Временные данные могли попасть в кеш; удаление связи не гарантирует мгновенного отзыва всех существующих данных. Немедленно сломанная картинка не доказывает отзыв.
Удалите точный сохранённый ID связи.
aws ec2 disassociate-iam-instance-profile --association-id "$ASSOCIATION_ID"
Завершите экземпляр, чтобы остановить новые запросы.
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
Дождитесь terminated.
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
Сохраните подготовленные роль, bucket и контрольные данные. Сайт больше не выполняется.
Резюме
Вы различили идентичности, назначили профиль, получили закрытое изображение и очистили связь и сервер.
Официальные источники: EC2 application roles, instance profiles.



