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

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.

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.

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.



