Organize documentos com chaves e metadados

AWSBeginner
Pratique Agora

Introdução

Uma equipe armazena documentos de finanças e RH em um único bucket S3. Você dará nomes e propriedades significativos a eles, recuperará um relatório e removerá o grupo de finanças preservando RH até a limpeza final.

Conclua primeiro Armazene e recupere arquivos no S3. Esta VM nova fornece a conexão da CLI e documentos locais; nenhum recurso anterior ou credencial pessoal é necessário. Use Terminal para comandos e a aba AWS View, ao lado, para comparar chaves, propriedades e conteúdos armazenados.

Relação com as certificações

Este laboratório oferece prática nos seguintes tópicos de exame.

Escolha chaves e envie documentos das equipes

Nesta etapa, você usará chaves de objetos significativas para separar documentos de dois departamentos em um bucket.

Um diretório local armazena arquivos na sua máquina; um bucket armazena objetos no S3. Entre no espaço de trabalho preparado com cd (mudar de diretório):

cd /home/labex/project

O diretório documents fornecido contém dois pequenos arquivos de texto. cat exibe seus conteúdos para que você saiba o que está prestes a armazenar:

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

Um arquivo CSV usa vírgulas para separar colunas. Aqui, as duas colunas são mês e receita; cada linha seguinte é um registro.

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

Crie um bucket com aws s3 mb (criar bucket). s3:// identifica uma localidade de armazenamento em vez de um caminho local:

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

O comando informa make_bucket: labex-team-documents.

A chave de finanças será finance/2026-09/revenue.csv. As barras tornam o nome fácil de agrupar, mas o S3 não cria diretórios de sistema de arquivos: a string inteira é uma única chave de objeto. Seu prefixo finance/ agrupa documentos de finanças; o prefixo mais longo finance/2026-09/ restringe o grupo a um mês.

Content-Type é um metadado padrão que descreve o formato de mídia de um arquivo. text/csv identifica texto separado por vírgulas. Metadados personalizados contêm seus próprios pares descritivos de chave e valor. Aqui, department=finance e period=2026-09 descrevem o relatório; eles não concedem permissões nem alteram seu conteúdo.

Este exemplo separa o prefixo da chave do restante do nome; os metadados pertencem ao objeto.

Chaves, prefixo e metadados

aws s3 cp copia o primeiro caminho para o segundo. --content-type define explicitamente o formato. --metadata aceita pares name=value separados por vírgulas. As aspas mantêm o argumento de metadados unido. Uma barra invertida no final de uma linha continua o mesmo comando na linha seguinte:

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'

A mensagem de envio indica a chave de destino. Envie o documento de boas-vindas com sua própria chave e propriedades. text/plain significa texto comum sem um formato de documento especializado:

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

Use ls (listar) e --recursive para exibir chaves completas em todo o bucket em vez de agrupá-las em prefixos semelhantes a pastas:

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

Duas linhas terminam em finance/2026-09/revenue.csv e hr/welcome.txt; os horários variam. AWS View mostra ambas as chaves no mesmo bucket. Você organizou objetos por nome, sem criar buckets separados para cada departamento.

Inspecione propriedades e recupere um relatório

Nesta etapa, você selecionará os objetos de um departamento, inspecionará metadados e comprovará que um relatório baixado corresponde à sua origem.

aws s3api expõe operações individuais da API do S3. Os comandos de nível mais alto aws s3 lidam com fluxos comuns de arquivos; ambos operam sobre os mesmos objetos. list-objects-v2 lista registros de objetos. --bucket indica o contêiner e --prefix limita as chaves retornadas pelo S3 às que começam com essa string:

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

Encontre finance/2026-09/revenue.csv em Contents. Não há objeto de RH nesta resposta porque hr/welcome.txt não começa com finance/. Um prefixo filtra nomes, não metadados personalizados: apenas department=finance não colocaria uma chave com outro nome neste resultado.

head-object recupera as propriedades do objeto sem baixar seu corpo. Forneça a chave completa, incluindo seu prefixo:

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

A resposta inclui ContentType definido como text/csv, ContentLength (bytes armazenados) e um objeto Metadata contendo department e period. Outros campos, como horários e ETag, descrevem o objeto armazenado. Os metadados estão associados à cópia armazenada, não ao arquivo local original.

No AWS View, clique em finance/2026-09/revenue.csv. O cartão expandido mostra seu Content-Type, metadados personalizados e o conteúdo CSV efetivamente armazenado. Compare-os com a resposta da CLI.

Este exemplo mostra o objeto de finanças expandido, com propriedades e conteúdo lidos do armazenamento:

Chave de finanças, metadados e conteúdo CSV

Baixe usando a URI S3 como origem e um novo nome de arquivo local como destino. Seu nome não precisa corresponder à chave:

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

Inspecione o que você recuperou:

cat retrieved-revenue.csv

Ele deve mostrar as mesmas duas linhas CSV que você inspecionou antes. cmp compara dois arquivos locais byte a byte; não produz saída quando há correspondência. O && do shell executa a mensagem apenas quando essa comparação é bem-sucedida:

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

Isso comprova que a recuperação preservou os bytes do relatório. Seu arquivo local contém o conteúdo; use head-object quando precisar inspecionar as propriedades armazenadas no S3.

Remova apenas o prefixo de finanças

Nesta etapa, você removerá os documentos de finanças preservando o documento de RH.

Um bucket compartilhado pode conter trabalho não relacionado. Excluir o bucket inteiro ou usar sua raiz como destino de exclusão recursiva afetaria ambos os departamentos. Escolha o prefixo específico finance/. A barra final faz parte do prefixo e mantém nomes como finance-archive.csv fora desse escopo.

aws s3 rm remove objetos. --recursive aplica a operação a todas as chaves correspondentes, e --dryrun lista as operações pretendidas sem realizá-las. Primeiro, visualize o escopo exato:

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

A saída de teste indica apenas finance/2026-09/revenue.csv. Ela não deve indicar hr/welcome.txt. Os objetos ainda existem neste momento.

Remova --dryrun para realizar a operação revisada:

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

A saída confirma a exclusão da chave de finanças. Consulte o bucket novamente:

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

Resta apenas hr/welcome.txt. No AWS View, expanda esse objeto restante: sua mensagem de boas-vindas e os metadados department=hr estão inalterados. Uma listagem e leitura bem-sucedidas confirmam que você removeu o escopo pretendido preservando o documento de outro departamento.

Limpe os recursos restantes do laboratório

Nesta etapa, você removerá o documento restante que pertence ao laboratório e o bucket vazio.

O objeto de RH foi protegido durante a operação de finanças. Os recursos dos dois departamentos pertencem a este exercício, portanto agora você pode remover o objeto restante pela chave exata, sem usar um destino recursivo amplo:

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

A saída confirma a exclusão da chave de RH. Confira o conteúdo do bucket antes de remover seu contêiner:

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

O comando bem-sucedido não exibe linhas de objetos. Um bucket precisa estar vazio antes que rb (remover bucket) possa removê-lo:

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

A saída é remove_bucket: labex-team-documents. Confirme que o armazenamento ainda responde:

aws s3 ls

Não há linhas de buckets neste espaço de trabalho novo. AWS View mostra No buckets; uma mensagem Unavailable significaria que a página não consegue determinar o estado. Seus documentos locais de origem e baixados continuam disponíveis para revisão.

Resumo

Você organizou os documentos de dois departamentos com chaves completas de objetos e prefixos, atribuiu metadados padrão e personalizados, inspecionou propriedades pela API do S3 e comparou os bytes baixados com sua origem. Também visualizou uma exclusão delimitada por prefixo, preservou um documento não relacionado e limpou os recursos restantes que pertenciam ao laboratório.

Use prefixos para agrupamentos previsíveis baseados em nomes e metadados para descrever objetos. Escolha deliberadamente os escopos de exclusão e verifique os recursos que devem permanecer.