Recupera una imagen sobrescrita del portafolio

AWSBeginner
Practicar Ahora

Introducción

Activa versiones de S3, publica un borrador incorrecto, recupera los bytes anteriores y elimina solo tus versiones.

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 3.6 Preservar y recuperar contenido de aplicación con versiones S3.

Vista general

Activa versiones de S3, publica un borrador incorrecto, recupera los bytes anteriores y elimina solo tus versiones.

Conserva una versión correcta

En este paso, activarás versionado y guardarás un VersionId. Abre el sitio y confirma AURA. Una lectura normal devuelve la versión actual; especificar VersionId elige otra versión. Confirma la portada AURA con los envases de cosmética. Las cuatro versiones iniciales son null; solo crearás nuevas versiones de images/aura-brand.webp.

Entra en el proyecto.

cd /home/labex/project

Carga y muestra el bucket de este entorno.

source website.env
echo "$PORTFOLIO_BUCKET"

Activa Status=Enabled en su configuración de versiones.

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

Lee Status y confirma Enabled. Los objetos anteriores conservan la versión null; la activación no les crea IDs nuevos retroactivamente.

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

put-object sube el archivo de body; guarda el VersionId de la imagen correcta y muéstralo. Una barra invertida al final continúa el mismo comando en la línea siguiente.

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"

Confirma la portada AURA con los envases de cosmética. Las cuatro versiones iniciales son null; solo crearás nuevas versiones de images/aura-brand.webp.

Observa la actualización incorrecta

En este paso, publicarás aura-draft.webp, un borrador intencionadamente erróneo, bajo la misma Key.

Sube el borrador y guarda 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 contiene la imagen del disco ECHO. Tras subirla a la Key de AURA, recarga: la tarjeta AURA muestra el disco en vez de cosmética. FORMA y ECHO conservan sus imágenes. La versión correcta anterior permanece en S3. La lista contiene las versiones del bucket. Revisa las filas con Key images/aura-brand.webp; las otras tres Keys conservan null.

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

aura-draft.webp contiene la imagen del disco ECHO. Tras subirla a la Key de AURA, recarga: la tarjeta AURA muestra el disco en vez de cosmética. FORMA y ECHO conservan sus imágenes. La versión correcta anterior permanece en S3.

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

Recupera la imagen anterior

En este paso, descargarás la versión correcta guardada y publicarás sus bytes como versión actual.

get-object con version-id elige ORIGINAL_VERSION; el último nombre es el destino local.

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

Compara con cmp; sin salida significa bytes idénticos.

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

Sube el archivo recuperado y guarda 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"

Recarga: AURA vuelve a mostrar cosmética. Descargar una versión no cambia la actual; publicar los bytes recuperados crea la nueva versión RESTORED_VERSION. FORMA, ECHO y projects.json permanecen intactos.

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

Limpia tus versiones de práctica

En este paso, quitarás las tres versiones creadas y conservarás la original null. Eliminar una Key sin VersionId puede añadir un delete marker en vez de borrar historial.

Elimina solo RESTORED_VERSION.

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

Elimina solo DRAFT_VERSION.

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

Elimina solo ORIGINAL_VERSION creado en el primer paso.

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

Lee el historial y confirma que queda únicamente null. La lista contiene las versiones del bucket. Revisa las filas con Key images/aura-brand.webp; las otras tres Keys conservan null.

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

Termina el servidor desechable.

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

Espera terminated.

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

Conserva bucket, imagen null y datos de referencia. El versionado queda activado. El próximo laboratorio proporciona su propia instancia.

Resumen

Conservaste una versión, observaste el borrador, recuperaste la imagen real y limpiaste versiones por ID exacto.

Referencias oficiales: S3 Versioning, retrieving object versions.