Lab: O Cofre Automatizado - Gerenciando Armazenamento com CLI e Scripts
O Cenário (A "User Story")
Como um engenheiro de operações (SysOps), EU QUERO automatizar a criação e a limpeza de backups (Snapshots) do meu servidor e sincronizar seus dados com um bucket S3, PARA QUE eu possa garantir a proteção dos dados, otimizar custos de armazenamento e ter uma cópia segura dos arquivos na nuvem.
A Dor que o Lab Resolve
- Backups Manuais: Criar snapshots manualmente é um processo propenso ao esquecimento, o que coloca os dados em risco.
- Acúmulo de Custos: Esquecer de deletar snapshots antigos pode levar a custos de armazenamento inesperados e crescentes.
- Recuperação de Arquivos: Deletar um arquivo por engano pode ser catastrófico se não houver um plano de recuperação.
Este laboratório mostra como usar scripts e a AWS CLI para resolver essas dores, criando um sistema de gerenciamento de armazenamento robusto e automatizado.
Objetivos de Aprendizado
Ao final deste laboratório, você será capaz de: * [ ] Criar snapshots de um volume EBS usando a AWS CLI. * [ ] Usar o cron
do Linux para agendar a criação de snapshots. * [ ] Usar um script Python para automatizar a limpeza de snapshots antigos. * [ ] Sincronizar arquivos entre uma instância EC2 e um bucket S3. * [ ] Habilitar o versionamento no S3 e recuperar um arquivo deletado.
Duração
- Aproximadamente 45 minutos.
O Passo a Passo
Tarefa 1: Preparando o Ambiente
- Crie o "Depósito" (Bucket S3): No console da AWS, vá para o S3 e crie um bucket com um nome globalmente único (ex:
desafio-sincronizacao-renato-123
). - Dê Permissões à Instância: Vá para o console do EC2, selecione a instância
Processor
, e em Ações (Actions) > Segurança (Security) > Modificar função do IAM (Modify IAM role), anexe aFunção (Role)
chamadaS3BucketAccess
. > O "Porquê": Estamos dando um "crachá" para a instânciaProcessor
que a autoriza a "conversar" com o S3.
Tarefa 2: Gerenciando os Backups (Snapshots) via CLI
Analogia: Vamos programar um "robô fotógrafo" para tirar fotos (snapshots) do nosso "HD" (volume EBS) e depois um "robô faxineiro" para jogar fora as fotos antigas.
- Conecte-se ao
Host de Comando (Command Host)
usando o EC2 Instance Connect. - Identifique o Alvo: Primeiro, precisamos saber qual volume "fotografar". > Anote o
aws ec2 describe-instances --filter 'Name=tag:Name,Values=Processor' --query 'Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.VolumeId' --output text
VolumeId
retornado. - Crie o Snapshot Inicial (Manual):
- Obtenha o ID da instância
Processor
.aws ec2 describe-instances --filters 'Name=tag:Name,Values=Processor' --query 'Reservations[0].Instances[0].InstanceId' --output text
- Pare a instância para garantir um backup consistente.
aws ec2 stop-instances --instance-ids <ID_DA_INSTANCIA_PROCESSOR> aws ec2 wait instance-stopped --instance-ids <ID_DA_INSTANCIA_PROCESSOR>
- Crie o snapshot.
aws ec2 create-snapshot --volume-id <ID_DO_SEU_VOLUME> --description "Backup Inicial Manual"
Anote o
SnapshotId
retornado e aguarde a conclusão.aws ec2 wait snapshot-completed --snapshot-id <ID_DO_SEU_SNAPSHOT>
- Inicie a instância novamente.
aws ec2 start-instances --instance-ids <ID_DA_INSTANCIA_PROCESSOR>
- Obtenha o ID da instância
- Agende os Backups Automáticos (O Robô Fotógrafo):
- Vamos usar o
cron
, o agendador de tarefas do Linux, para criar um snapshot a cada minuto (para fins de teste).echo "* * * * * aws ec2 create-snapshot --volume-id <ID_DO_SEU_VOLUME> --description 'Backup Automatico' &>> /tmp/cronlog" > cronjob crontab cronjob
Aguarde alguns minutos. Vários snapshots serão criados.
- Vamos usar o
- Limpe os Backups Antigos (O Robô Faxineiro):
- Interrompa o agendador de backups:
crontab -r
- Execute o script Python que já está no host para deletar todos, exceto os 2 snapshots mais recentes.
python3 /home/ec2-user/snapshotter_v2.py
- Verificação: Verifique quantos snapshots restaram.
aws ec2 describe-snapshots --filters "Name=volume-id,Values=<ID_DO_SEU_VOLUME>" --query 'Snapshots[*].SnapshotId' --output text | wc -l
A saída deve ser
2
.
- Interrompa o agendador de backups:
Tarefa 3: Desafio - Sincronizando e Recuperando Arquivos com S3
- Conecte-se à instância
Processor
via EC2 Instance Connect. - Baixe e Descompacte os Arquivos de Teste:
wget [https://aws-tc-largeobjects.s3.us-west-2.amazonaws.com/CUR-TF-100-RSJAWS-3-124627/183-lab-JAWS-managing-storage/s3/files.zip](https://aws-tc-largeobjects.s3.us-west-2.amazonaws.com/CUR-TF-100-RSJAWS-3-124627/183-lab-JAWS-managing-storage/s3/files.zip) unzip files.zip
- Ative a "Máquina do Tempo" (Versionamento do S3):
aws s3api put-bucket-versioning --bucket <NOME_DO_SEU_BUCKET_S3> --versioning-configuration Status=Enabled
- Sincronize os Arquivos para o S3:
aws s3 sync files/ s3://<NOME_DO_SEU_BUCKET_S3>/files/
- Simule um Desastre (Delete um Arquivo Localmente):
rm files/file1.txt
- Sincronize a Exclusão para o S3: > O comando
aws s3 sync files/ s3://<NOME_DO_SEU_BUCKET_S3>/files/ --delete
sync --delete
espelha o diretório local. Se um arquivo foi deletado localmente, ele também será deletado no S3. - A Operação de Resgate (Recuperar o Arquivo):
- Encontre a versão antiga: Primeiro, liste todas as versões do arquivo deletado.
aws s3api list-object-versions --bucket <NOME_DO_SEU_BUCKET_S3> --prefix files/file1.txt
- Anote o
VersionId
da versão que não é umDeleteMarker
. - Restaure o arquivo: Baixe a versão antiga de volta para sua máquina.
aws s3api get-object --bucket <NOME_DO_SEU_BUCKET_S3> --key files/file1.txt --version-id <ID_DA_VERSAO_ANTIGA> files/file1.txt
- Encontre a versão antiga: Primeiro, liste todas as versões do arquivo deletado.
- Verificação Final: Execute
ls files/
. Ofile1.txt
está de volta!
Conclusão
Parabéns! Você atuou como um verdadeiro administrador de nuvem. Você automatizou o ciclo de vida de backups para proteger seus volumes e otimizar custos, e aprendeu a usar o poder do S3 e do versionamento para criar um sistema de arquivos sincronizado e à prova de erros humanos.
Meu Diário de Bordo: Ensinando a Nuvem a Lembrar e a Esquecer
No mundo da tecnologia, gerenciar dados de forma responsável é tudo. Não basta apenas guardá-los; é preciso protegê-los (lembrar) e, ao mesmo tempo, otimizar os custos (esquecer o que não é mais necessário). O laboratório de hoje no AWS re/Start foi uma aula prática sobre exatamente isso.
A missão foi criar um sistema de backup automatizado para nossos "HDs virtuais" (volumes EBS) e, em seguida, construir um espelho seguro dos nossos arquivos no Amazon S3.
A Jornada em 3 Atos
Ato 1: O Fotógrafo Robô (Automatizando os Snapshots)
- A Dor: Fazer backups manuais é a receita para o desastre. Um dia você esquece, e é exatamente nesse dia que o servidor falha.
- O Que Eu Fiz: Usei o
cron
, o agendador de tarefas do Linux, para dar uma ordem simples à AWS CLI. - O "Aha!" Moment:
- Analogia: Eu programei um "robô fotógrafo". A ordem era clara: "A cada minuto, tire uma 'foto' (um Snapshot) do meu 'HD' (volume EBS)". Ver os snapshots aparecendo sozinhos no console, de forma automática, foi a prova de como a automação pode ser simples e poderosa.
Ato 2: O Faxineiro Robô (Automatizando a Limpeza)
- A Dor: Backups automáticos são ótimos. Mas se eu criar um snapshot por minuto, em um dia terei mais de 1400 snapshots ocupando espaço e gerando custos. Gerenciar isso manualmente é inviável.
- O Que Eu Fiz: Executei um script Python que tinha uma lógica de retenção.
- O "Aha!" Moment:
- Analogia: Eu soltei um "robô faxineiro". A regra dele era simples: "Não importa quantos backups existam, mantenha apenas os 2 mais recentes e jogue o resto fora". Ver a lista de snapshots diminuir automaticamente foi uma lição poderosa sobre como a automação é crucial para a otimização de custos.
Ato 3: O Cofre com Máquina do Tempo (S3 Sync e Versionamento)
- A Dor: Eu preciso de uma cópia dos meus arquivos de trabalho em um local super seguro e acessível, e também de proteção contra o clássico "ops, deletei o arquivo errado".
- O Que Eu Fiz: Sincronizei uma pasta local com um bucket S3 onde eu havia ativado o Versionamento.
- O "Aha!" Moment:
- Analogia: Primeiro, usei o
aws s3 sync
para criar um "espelho" perfeito da minha pasta no S3. Depois, ativei a "máquina do tempo" (o Versionamento) no meu "cofre" (o bucket). - O teste final foi deletar um arquivo localmente e rodar o
sync --delete
. O arquivo sumiu do S3, como esperado. Mas, graças à máquina do tempo, a versão antiga não foi realmente apagada; ela estava apenas "escondida". Com alguns comandos da CLI, eu pude "viajar no tempo", pegar a versão antiga e restaurá-la. É a rede de segurança definitiva contra erro humano.
- Analogia: Primeiro, usei o
A Grande Lição
O lab de hoje foi sobre o ciclo de vida completo dos dados. Não basta apenas criar e guardar. Um profissional de nuvem precisa pensar em: 1. Proteção: Como automatizar os backups? (Snapshots com cron
). 2. Otimização de Custos: Como limpar o que não é mais necessário? (Scripts de retenção). 3. Resiliência a Erros: Como me recuperar de uma exclusão acidental? (S3 Sync + Versionamento).
Este foi um dos labs mais "próximos da realidade" até agora. Lidar com backups e recuperação de arquivos é o pão com manteiga de qualquer equipe de operações. Ter construído automações que resolvem exatamente essas dores me deu uma visão clara de como a nuvem transforma tarefas complexas em processos gerenciáveis e inteligentes.