Organiza documentos con claves y metadatos

AWSBeginner
Practicar Ahora

Introducción

Un equipo almacena documentos de finanzas y HR en un bucket de S3. Les darás nombres y propiedades significativos, recuperarás un informe y eliminarás el grupo de finanzas conservando HR hasta la limpieza final.

Completa primero Almacena y recupera archivos en S3. Esta VM nueva proporciona la conexión de la CLI y los documentos locales; no se necesitan recursos anteriores ni credenciales personales. Utiliza Terminal para los comandos y la pestaña AWS View, a su lado, para comparar claves, propiedades y contenidos almacenados.

Relación con las certificaciones

Este laboratorio ofrece práctica para los siguientes temas de examen.

Elige claves y sube documentos de equipo

En este paso, utilizarás claves de objetos significativas para separar los documentos de dos departamentos en un bucket.

Un directorio local almacena archivos en tu máquina; un bucket almacena objetos en S3. Entra en el espacio de trabajo preparado con cd (cambiar de directorio):

cd /home/labex/project

El directorio documents proporcionado contiene dos pequeños archivos de texto. cat muestra su contenido para que sepas qué vas a almacenar:

cat documents/revenue.csv
month,revenue
2026-09,42000

Un archivo CSV utiliza comas para separar columnas. Aquí las dos columnas son mes e ingresos; cada línea posterior es un registro.

cat documents/welcome.txt
Welcome to the reporting team.

Crea un bucket con aws s3 mb (crear bucket). s3:// identifica una ubicación de almacenamiento en lugar de una ruta local:

aws s3 mb s3://labex-team-documents

El comando informa de make_bucket: labex-team-documents.

La clave de finanzas será finance/2026-09/revenue.csv. Las barras facilitan agrupar el nombre, pero S3 no crea directorios de sistema de archivos: toda la cadena es una clave de objeto. Su prefijo finance/ agrupa documentos de finanzas; el prefijo más largo finance/2026-09/ limita el grupo a un mes.

Content-Type es un metadato estándar que describe el formato de un archivo. text/csv identifica texto separado por comas. Los metadatos personalizados contienen tus propios pares descriptivos de clave y valor. Aquí department=finance y period=2026-09 describen el informe; no conceden permisos ni cambian su contenido.

Este ejemplo separa el prefijo de la clave del resto del nombre; los metadatos pertenecen al objeto.

Claves, prefijo y metadatos

aws s3 cp copia la primera ruta a la segunda. --content-type establece el formato explícitamente. --metadata acepta pares name=value separados por comas. Las comillas mantienen unido el argumento de metadatos. Una barra invertida al final de una línea continúa el mismo comando en la línea siguiente:

aws s3 cp documents/revenue.csv s3://labex-team-documents/finance/2026-09/revenue.csv \
  --content-type text/csv \
  --metadata 'department=finance,period=2026-09'

El mensaje de subida indica la clave de destino. Sube el documento de bienvenida con su propia clave y propiedades. text/plain significa texto normal sin un formato de documento especializado:

aws s3 cp documents/welcome.txt s3://labex-team-documents/hr/welcome.txt \
  --content-type text/plain \
  --metadata 'department=hr'

Utiliza ls (listar) y --recursive para mostrar las claves completas de todo el bucket en lugar de agruparlas en prefijos con apariencia de carpetas:

aws s3 ls s3://labex-team-documents/ --recursive

Dos líneas terminan en finance/2026-09/revenue.csv y hr/welcome.txt; las marcas de tiempo varían. AWS View muestra ambas claves en el mismo bucket. Has organizado objetos por nombre sin crear buckets separados para cada departamento.

Inspecciona las propiedades y recupera un informe

En este paso, seleccionarás los objetos de un departamento, inspeccionarás los metadatos y demostrarás que un informe descargado coincide con su origen.

aws s3api expone operaciones individuales de la API de S3. Los comandos de nivel superior aws s3 gestionan flujos habituales de archivos; ambos operan sobre los mismos objetos. list-objects-v2 enumera registros de objetos. --bucket indica el contenedor y --prefix limita las claves devueltas por S3 a las que comienzan por esa cadena:

aws s3api list-objects-v2 --bucket labex-team-documents --prefix finance/

Busca finance/2026-09/revenue.csv en Contents. No hay ningún objeto de HR en esta respuesta porque hr/welcome.txt no comienza por finance/. Un prefijo filtra nombres, no metadatos personalizados: department=finance por sí solo no incluiría en este resultado una clave con otro nombre.

head-object recupera las propiedades del objeto sin descargar su cuerpo. Proporciona la clave completa, incluido su prefijo:

aws s3api head-object --bucket labex-team-documents --key finance/2026-09/revenue.csv

La respuesta incluye ContentType establecido en text/csv, ContentLength (bytes almacenados) y un objeto Metadata que contiene department y period. Otros campos, como las marcas de tiempo y ETag, describen el objeto almacenado. Los metadatos están asociados a la copia almacenada, no al archivo local original.

En AWS View, haz clic en finance/2026-09/revenue.csv. La tarjeta desplegada muestra su Content-Type, sus metadatos personalizados y el contenido CSV realmente almacenado. Compáralos con la respuesta de la CLI.

Este ejemplo muestra el objeto de finanzas desplegado, con propiedades y contenido leídos del almacenamiento:

Clave de finanzas, metadatos y contenido CSV

Descarga utilizando el URI de S3 como origen y un nuevo nombre de archivo local como destino. Su nombre no tiene que coincidir con la clave:

aws s3 cp s3://labex-team-documents/finance/2026-09/revenue.csv retrieved-revenue.csv

Inspecciona lo recuperado:

cat retrieved-revenue.csv

Debería mostrar las mismas dos líneas CSV que inspeccionaste antes. cmp compara dos archivos locales byte a byte; no produce salida si coinciden. El operador && del shell ejecuta el mensaje solo cuando esa comparación tiene éxito:

cmp documents/revenue.csv retrieved-revenue.csv && echo 'Report content matches'
Report content matches

Esto demuestra que la recuperación conservó los bytes del informe. Tu archivo local tiene el contenido; utiliza head-object cuando necesites inspeccionar las propiedades almacenadas en S3.

Elimina únicamente el prefijo de finanzas

En este paso, vaciarás los documentos de finanzas conservando el documento de HR.

Un bucket compartido puede contener trabajo ajeno a la tarea. Eliminar todo el bucket o utilizar su raíz como destino de eliminación recursiva afectaría a ambos departamentos. Elige en su lugar el prefijo concreto finance/. La barra final forma parte del prefijo y mantiene nombres como finance-archive.csv fuera de este alcance.

aws s3 rm elimina objetos. --recursive aplica la operación a todas las claves coincidentes y --dryrun enumera las operaciones previstas sin realizarlas. Primero revisa el alcance exacto:

aws s3 rm s3://labex-team-documents/finance/ --recursive --dryrun

La salida de la simulación indica únicamente finance/2026-09/revenue.csv. No debe indicar hr/welcome.txt. Los objetos todavía existen en este momento.

Quita --dryrun para realizar la operación revisada:

aws s3 rm s3://labex-team-documents/finance/ --recursive

La salida confirma la eliminación de la clave de finanzas. Consulta de nuevo el bucket:

aws s3 ls s3://labex-team-documents/ --recursive

Solo queda hr/welcome.txt. En AWS View, despliega ese objeto restante: su mensaje de bienvenida y los metadatos department=hr no han cambiado. Una lista y una lectura correctas establecen que eliminaste el alcance previsto conservando el documento de otro departamento.

Limpia los recursos restantes del laboratorio

En este paso, eliminarás el documento restante perteneciente al laboratorio y el bucket vacío.

El objeto de HR estaba protegido durante la operación de finanzas. Los recursos de ambos departamentos pertenecen a este ejercicio, así que ahora puedes eliminar el objeto restante por su clave exacta, sin utilizar un destino recursivo amplio:

aws s3 rm s3://labex-team-documents/hr/welcome.txt

La salida confirma la eliminación de la clave de HR. Comprueba el contenido del bucket antes de eliminar su contenedor:

aws s3 ls s3://labex-team-documents/ --recursive

El comando correcto no muestra filas de objetos. Un bucket debe estar vacío antes de que rb (eliminar bucket) pueda eliminarlo:

aws s3 rb s3://labex-team-documents

La salida es remove_bucket: labex-team-documents. Confirma que el almacenamiento sigue respondiendo:

aws s3 ls

No hay filas de buckets en este espacio de trabajo nuevo. AWS View muestra No buckets; un mensaje Unavailable significaría que la página no puede establecer el estado. Tus documentos locales de origen y descargados siguen disponibles para revisarlos.

Resumen

Organizaste los documentos de dos departamentos con claves de objetos completas y prefijos, asignaste metadatos estándar y personalizados, inspeccionaste propiedades mediante la API de S3 y comparaste los bytes descargados con su origen. También revisaste una eliminación delimitada por prefijo, conservaste un documento ajeno a la tarea y limpiaste los recursos restantes pertenecientes al laboratorio.

Utiliza prefijos para agrupar de forma predecible por nombre y metadatos para describir los objetos. Elige deliberadamente el alcance de las eliminaciones y verifica los recursos que deben permanecer.