Introducción
Crea un bucket privado, sube imágenes y proyectos, recupera una copia idéntica y limpia tus recursos.
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 | Usar almacenamiento de objetos S3 separado del cómputo EC2. |
Vista general

Crea almacenamiento privado
En este paso, crearás un bucket y bloquearás acceso público. EC2 ejecuta la aplicación; S3 guarda archivos como objetos dentro de buckets, evitando una única copia en el servidor.
Entra en la carpeta preparada.
cd /home/labex/project
Carga y muestra PORTFOLIO_BUCKET: es un nombre único preparado, pero el bucket aún no existe. En AWS los nombres deben ser únicos globalmente dentro de una partición.
source website.env
echo "$PORTFOLIO_BUCKET"
s3 mb crea el bucket y s3:// identifica una ubicación S3. La conexión usa us-east-1.
aws s3 mb "s3://$PORTFOLIO_BUCKET"
Lee private-access.json: los cuatro valores true activan Block Public Access para evitar permisos públicos accidentales.
cat private-access.json
s3api permite aplicar esta configuración con una operación directa.
aws s3api put-public-access-block --bucket "$PORTFOLIO_BUCKET" --public-access-block-configuration file://private-access.json
Lee el ajuste guardado para confirmar los cuatro true.
aws s3api get-public-access-block --bucket "$PORTFOLIO_BUCKET"
AWS View debe mostrar tu bucket sin objetos. Conserva el bucket de referencia y su keep.txt. El almacenamiento nuevo es privado por defecto; estos ajustes añaden protección frente a ACL o políticas públicas.
Sube y recupera materiales
En este paso, guardarás los cuatro archivos preparados del sitio: images/aura-brand.webp, images/forma-chair.webp, images/echo-record.webp y projects.json. WebP es un formato de imagen. El JSON aporta textos y referencias a las imágenes de los paneles. El código, la fuente y Tailwind compilado ya están preparados.
cp con --recursive copia todos los archivos dentro de portfolio-assets/. Sus rutas relativas se convierten en Keys: images/ es un prefijo de nombre, no una carpeta real en S3. Espera cuatro líneas upload.
aws s3 cp portfolio-assets/ "s3://$PORTFOLIO_BUCKET/" --recursive
Lee Contents y confirma exactamente las cuatro Keys; AWS View debe mostrar las mismas.
aws s3api list-objects-v2 --bucket "$PORTFOLIO_BUCKET"
Invierte la dirección para descargar la portada AURA con otro nombre local.
aws s3 cp "s3://$PORTFOLIO_BUCKET/images/aura-brand.webp" downloaded-aura.webp
cmp compara los bytes de la original y la descargada; si coinciden no muestra salida.
cmp portfolio-assets/images/aura-brand.webp downloaded-aura.webp
El almacenamiento privado está completo. El sitio sigue usando sus materiales locales. En el próximo laboratorio darás permiso al sitio para leer las tres imágenes y la lista de S3; no hagas público el bucket.

Limpia solo tus recursos
En este paso, quitarás los dos objetos y el bucket vacío, y terminarás el servidor.
rm --recursive elimina los cuatro objetos del bucket propio que acabas de inspeccionar. No sustituyas su nombre por el de referencia.
aws s3 rm "s3://$PORTFOLIO_BUCKET/" --recursive
rb elimina ese bucket cuando está vacío.
aws s3 rb "s3://$PORTFOLIO_BUCKET"
Muestra el ID del servidor.
echo "$INSTANCE_ID"
Termina solo esa instancia.
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
Espera terminated.
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
Tu bucket debe desaparecer y keep.txt debe permanecer. Conserva la red; los próximos laboratorios no necesitan estos recursos.
Resumen
Creaste almacenamiento privado, subiste y recuperaste materiales y preservaste los datos ajenos al limpiar.
Referencias oficiales: S3 objects, AWS CLI S3 file commands, Block Public Access.



