Восстановите перезаписанное изображение портфолио

AWSBeginner
Практиковаться сейчас

Введение

Включите версии S3, опубликуйте неверный черновик, верните прежние байты и удалите только свои версии.

Сначала выполните предыдущие работы портфолио. Среда предоставляет собственные ресурсы и необходимые возможности прежних этапов. Переносите знания, а не экземпляры, файлы или учётные данные.

Связь с сертификацией

Сертификация Задачи Практика
AWS Certified Cloud Practitioner (CLF-C02) Task 3.6 Сохранять и восстанавливать содержимое с версиями S3.

Обзор

Включите версии S3, опубликуйте неверный черновик, верните прежние байты и удалите только свои версии.

Сохраните правильную версию

На этом шаге вы включите версии и сохраните VersionId. Сначала проверьте AURA. Обычное чтение возвращает актуальную версию, VersionId выбирает определённую. Проверьте косметическую упаковку на обложке AURA. Четыре начальные версии имеют ID null; новые версии создаются только для images/aura-brand.webp.

Перейдите в проект.

cd /home/labex/project

Загрузите и покажите bucket.

source website.env
echo "$PORTFOLIO_BUCKET"

Включите Status=Enabled.

aws s3api put-bucket-versioning --bucket "$PORTFOLIO_BUCKET" --versioning-configuration Status=Enabled

Прочитайте Enabled. Ранее созданный объект сохраняет null; включение не выдаёт ему новый ID задним числом.

aws s3api get-bucket-versioning --bucket "$PORTFOLIO_BUCKET"

put-object загружает файл body; сохраните и покажите ORIGINAL_VERSION. Обратная косая черта в конце переносит продолжение той же команды на следующую строку.

ORIGINAL_VERSION=$(aws s3api put-object \
  --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp \
  --body portfolio-assets/images/aura-brand.webp --content-type image/webp \
  --query VersionId --output text)
echo "$ORIGINAL_VERSION"

Проверьте косметическую упаковку на обложке AURA. Четыре начальные версии имеют ID null; новые версии создаются только для images/aura-brand.webp.

Наблюдайте неверное обновление

На этом шаге вы опубликуете намеренно неправильный черновик под тем же Key.

Загрузите aura-draft.webp и сохраните DRAFT_VERSION.

DRAFT_VERSION=$(aws s3api put-object \
  --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp \
  --body aura-draft.webp --content-type image/webp \
  --query VersionId --output text)
echo "$DRAFT_VERSION"

aura-draft.webp содержит изображение пластинки ECHO. После загрузки в Key AURA карточка показывает пластинку вместо косметики. FORMA и ECHO остаются прежними; правильная ранняя версия сохраняется в S3. Список содержит версии бакета. Проверяйте строки с Key images/aura-brand.webp; три остальных Key сохраняют null.

aws s3api list-object-versions --bucket "$PORTFOLIO_BUCKET"

aura-draft.webp содержит изображение пластинки ECHO. После загрузки в Key AURA карточка показывает пластинку вместо косметики. FORMA и ECHO остаются прежними; правильная ранняя версия сохраняется в S3.

Реальный контрольный пример лаборатории; ваши идентификаторы могут отличаться.

Верните прежнее изображение

На этом шаге вы получите сохранённую версию и опубликуете её байты как текущие.

get-object с version-id выбирает ORIGINAL_VERSION; последнее имя — локальное назначение.

aws s3api get-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$ORIGINAL_VERSION" recovered-aura.webp

cmp без вывода подтверждает совпадение байтов.

cmp portfolio-assets/images/aura-brand.webp recovered-aura.webp

Загрузите восстановленный файл и сохраните RESTORED_VERSION.

RESTORED_VERSION=$(aws s3api put-object \
  --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp \
  --body recovered-aura.webp --content-type image/webp \
  --query VersionId --output text)
echo "$RESTORED_VERSION"

Обновите: AURA снова показывает косметику. Скачивание само не меняет текущую версию; публикация восстановленных байтов создаёт RESTORED_VERSION. FORMA, ECHO и projects.json сохраняются.

Реальный контрольный пример лаборатории; ваши идентификаторы могут отличаться.

Удалите учебные версии

На этом шаге вы удалите ровно три новые версии, сохранив null. Удаление Key без ID может добавить delete marker, а не удалить исторические байты.

Удалите только RESTORED_VERSION.

aws s3api delete-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$RESTORED_VERSION"

Удалите только DRAFT_VERSION.

aws s3api delete-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$DRAFT_VERSION"

Удалите только ORIGINAL_VERSION из первого шага.

aws s3api delete-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$ORIGINAL_VERSION"

Убедитесь, что остался лишь null. Список содержит версии бакета. Проверяйте строки с Key images/aura-brand.webp; три остальных Key сохраняют null.

aws s3api list-object-versions --bucket "$PORTFOLIO_BUCKET"

Завершите временный сервер.

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

Дождитесь конечного состояния.

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

Сохраните bucket, исходный null и контрольные данные. Версии остаются включены. Следующая работа независима.

Резюме

Вы вернули изображение из сохранённой версии и удалили только созданные в упражнении версии.

Официальные источники: S3 Versioning, retrieving object versions.