Armazene e recupere arquivos no S3

AWSBeginner
Pratique Agora

Introdução

Um relatório diário precisa de uma cópia armazenada que os colegas possam recuperar mesmo após alterações no arquivo local. O primeiro laboratório de S3 acompanha um relatório no envio, na substituição e na recuperação, depois ensina por que os objetos são excluídos antes do bucket.

O Amazon S3 armazena arquivos como objetos dentro de um bucket; cada objeto tem uma chave que o identifica nesse bucket.

Conclua primeiro Primeiros passos com AWS no LabEx. A conexão da CLI e report.txt estão preparados nesta VM nova; nenhum login pessoal na AWS ou recurso anterior é necessário. Use Terminal para comandos e AWS View na parte superior para observar o armazenamento deste laboratório.

Relação com as certificações

Certificação Tarefa do exame Prática
Cloud Practitioner (CLF-C02) Tarefa 3.6 Armazenamento de objetos S3, uploads, atualizações e downloads.
Solutions Architect – Associate (SAA-C03) Tarefa 3.1 Armazenamento de objetos S3, uploads, atualizações e downloads.
Developer – Associate (DVA-C02) Tarefa 1.3 Armazenamento de objetos S3, uploads, atualizações e downloads.
Data Engineer – Associate (DEA-C01) Tarefa 1.1 Prática dos fundamentos: Armazenamento de objetos S3, uploads, atualizações e downloads.

Visão geral do laboratório

Diagrama conceitual: a AWS CLI envia e substitui report.txt em um bucket S3 e baixa o objeto armazenado para comparação; a AWS View consulta o armazenamento.

Crie seu bucket de armazenamento

Nesta etapa, você criará um bucket para um relatório diário de vendas e o observará no AWS View.

Vá ao espaço de trabalho. cd muda o diretório atual do terminal; todos os arquivos locais deste laboratório usam esse diretório.

cd /home/labex/project

Confirme a versão preparada da CLI oficial:

aws --version

A saída começa com aws-cli/2.37.12. A imagem já fornece as ferramentas para que você possa se concentrar nas operações de armazenamento.

Amazon S3 armazena conteúdos de arquivos como objetos. Um bucket contém esses objetos, e uma chave dá nome a um objeto dentro dele. Primeiro, você criará o contêiner; depois, enviará o relatório.

Crie labex-backups. Em aws s3 mb, s3 seleciona armazenamento de objetos e mb significa criar bucket. O prefixo s3:// identifica uma localidade de armazenamento, não uma pasta local.

aws s3 mb s3://labex-backups

Saída esperada:

make_bucket: labex-backups

Liste os buckets com ls, que significa listar:

aws s3 ls

Você deve ver uma linha terminando em labex-backups; a data e a hora variam. Na pré-visualização do AWS View, um cartão labex-backups aparece sem objetos. As setas mostram como a CLI se conecta ao armazenamento; o nó do bucket reflete uma consulta efetiva ao recurso.

Envie e inspecione o relatório

Nesta etapa, você armazenará um relatório como objeto S3 e lerá seu conteúdo efetivamente armazenado pela pré-visualização.

O arquivo local e sua cópia armazenada são separados; envio e download conectam ambos.

Cópias local e armazenada

Inspecione o arquivo local preparado. cat exibe o conteúdo de um arquivo de texto:

cat report.txt

Saída esperada:

Daily sales: 120 orders

cp significa copiar. O primeiro caminho abaixo é a origem local e o segundo é o destino. A parte após o nome do bucket, report.txt, é a chave do objeto.

aws s3 cp report.txt s3://labex-backups/report.txt

A saída informa um envio de report.txt para s3://labex-backups/report.txt.

Liste os objetos do bucket:

aws s3 ls s3://labex-backups/

A linha de report.txt mostra sua hora de modificação, tamanho e chave. Um envio cria uma cópia armazenada separada: editar apenas o arquivo local não a alteraria.

No AWS View, o cartão do bucket mostra 1 objeto. Clique em report.txt no cartão para expandir seu conteúdo. A pré-visualização deve mostrar Daily sales: 120 orders. Ela lê o objeto armazenado, não o arquivo de origem local.

Relatório armazenado e topologia S3 — O exemplo abaixo mostra o relatório enviado expandido no cartão do bucket. O conteúdo é lido do armazenamento.

Atualize e recupere a cópia armazenada

Nesta etapa, você substituirá o relatório, baixará a versão armazenada atual e comprovará que o conteúdo foi preservado no envio e download.

O relatório atualizado contém 145 pedidos. printf escreve texto; \n adiciona uma quebra de linha. O operador > do shell substitui o conteúdo do arquivo local indicado.

printf 'Daily sales: 145 orders\n' > report.txt

Observe a pré-visualização do relatório antes de enviar novamente. Ela ainda mostra 120 orders porque a cópia armazenada não mudou.

Envie para a mesma chave para substituir seu conteúdo atual:

aws s3 cp report.txt s3://labex-backups/report.txt

A pré-visualização agora mostra 145 orders, enquanto a quantidade de objetos permanece 1. Reutilizar uma chave atualiza esse objeto; não cria um segundo objeto com nome neste laboratório.

Baixe invertendo a direção de cp: o caminho S3 agora é a origem, e downloaded.txt é um novo destino local.

aws s3 cp s3://labex-backups/report.txt downloaded.txt

Inspecione o arquivo baixado:

cat downloaded.txt

Saída esperada:

Daily sales: 145 orders

cmp compara dois arquivos byte a byte. Ele não exibe nada e termina com sucesso quando são idênticos. && executa o comando seguinte apenas se essa comparação for bem-sucedida.

cmp report.txt downloaded.txt && echo 'Round trip verified'

Saída esperada:

Round trip verified

Essa comparação comprova que o conteúdo recuperado corresponde à sua origem atualizada. O verificador da etapa lê o S3 de forma independente e compara os conteúdos armazenado e baixado.

Limpe seu armazenamento

Nesta etapa, você aprenderá por que um bucket não vazio não pode ser removido e, depois, excluirá os objetos e o bucket deste laboratório.

rb significa remover bucket. Primeiro, tente removê-lo enquanto o relatório ainda existe:

aws s3 rb s3://labex-backups

Espera-se que este comando falhe com BucketNotEmpty. A falha ensina uma dependência entre recursos: um bucket contém objetos, portanto remova esses objetos antes de remover seu contêiner. O bucket e o objeto devem permanecer visíveis na pré-visualização.

rm remove um objeto no caminho S3 exato:

aws s3 rm s3://labex-backups/report.txt

A saída confirma delete: s3://labex-backups/report.txt. O objeto desaparece da pré-visualização; o bucket permanece vazio.

Agora remova o bucket vazio:

aws s3 rb s3://labex-backups

Saída esperada:

remove_bucket: labex-backups

Confirme que o serviço ainda responde e não lista nenhum bucket restante:

aws s3 ls

O comando termina sem linhas de buckets. AWS View mostra No buckets sem cartões de recursos. Esse estado vem de uma consulta bem-sucedida ao serviço; uma página desconectada não comprovaria a limpeza. Seus arquivos locais de relatório continuam disponíveis, enquanto os recursos de armazenamento foram removidos.

Armazenamento vazio após a limpeza — A visualização de limpeza abaixo mostra que não há cartões de buckets restantes após uma consulta bem-sucedida do estado.

Resumo

Você usou a AWS CLI oficial para criar um bucket, enviar e substituir um objeto, baixá-lo, comparar conteúdos de arquivos e remover os recursos de armazenamento. AWS View conectou seus comandos a mudanças observáveis nos recursos, e a pré-visualização mostrou conteúdo efetivamente armazenado.

Você praticou um fluxo completo de armazenamento de relatórios: organizar arquivos em um bucket, distinguir cópias locais e armazenadas, verificar um download e remover objetos antes de excluir seu bucket.

Para aprofundar o tema, consulte a documentação da AWS: Buckets, objetos e chaves do S3.