Introdução
Snapshots são cópias pontuais (point-in-time) dos volumes EBS (Elastic Block Store) associados a uma instância EC2. Em ambientes industriais que rodam servidores de supervisório, históricos de dados de produção ou aplicações críticas na AWS, o snapshot é a base de qualquer estratégia de backup e disaster recovery. Neste tutorial, vamos criar um snapshot de um volume EBS anexado a uma instância EC2, tanto pelo console quanto pela linha de comando.
Pré-requisitos
- Uma instância EC2 em execução ou parada, com pelo menos um volume EBS anexado
- AWS CLI instalado e configurado com um usuário que tenha permissão
ec2:CreateSnapshot - Conhecimento do ID da instância (ex. i-0abcd1234efgh5678) ou do ID do volume (ex. vol-0a1b2c3d4e5f67890)
Passo 1: Identificar o volume EBS da instância
Antes de criar o snapshot, é preciso saber qual volume está anexado à instância. Use o comando abaixo, substituindo o ID de exemplo pelo ID real da sua instância:
aws ec2 describe-instances --instance-ids i-0abcd1234efgh5678 --query "Reservations[].Instances[].BlockDeviceMappings"A saída traz o VolumeId associado a cada dispositivo (ex. /dev/sda1). Anote o ID do volume, algo como vol-0a1b2c3d4e5f67890.
Passo 2: Criar o snapshot via console AWS
- Acesse o console EC2 e, no menu lateral, clique em Volumes dentro da seção Elastic Block Store.
- Selecione o volume desejado marcando a caixa de seleção.
- Clique em Actions e depois em Create snapshot.
- Preencha o campo Description com um nome descritivo, por exemplo: backup-servidor-scada-pre-atualizacao.
- Adicione tags, como
Ambiente=ProducaoeProjeto=LinhaMontagem02, para facilitar a governança. - Clique em Create snapshot para iniciar o processo.
Passo 3: Criar o snapshot via AWS CLI
Para automatizar rotinas de backup, o comando create-snapshot é o mais indicado:
aws ec2 create-snapshot \
--volume-id vol-0a1b2c3d4e5f67890 \
--description "backup-servidor-scada-pre-atualizacao" \
--tag-specifications 'ResourceType=snapshot,Tags=[{Key=Ambiente,Value=Producao},{Key=Projeto,Value=LinhaMontagem02}]'O retorno inclui o SnapshotId gerado, por exemplo snap-0f1e2d3c4b5a69870, e o status inicial pending.
Acompanhando o progresso do snapshot
Snapshots grandes podem levar minutos para concluir. Para monitorar o status, use:
aws ec2 describe-snapshots --snapshot-ids snap-0f1e2d3c4b5a69870 --query "Snapshots[].State"Quando o valor retornado mudar de pending para completed, o snapshot está pronto para uso.
Passo 4: Automatizar snapshots de toda a instância
Quando a instância tem múltiplos volumes e você deseja capturar todos de uma vez, use o comando que cria snapshots de todos os volumes anexados a uma instância específica:
aws ec2 create-snapshots \
--instance-specification InstanceId=i-0abcd1234efgh5678 \
--description "backup-completo-instancia"Boas práticas
- Utilize o Amazon Data Lifecycle Manager (DLM) para automatizar a criação e a retenção de snapshots periódicos, evitando scripts manuais e reduzindo custo de armazenamento com volumes antigos.
- Sempre marque snapshots com tags claras (ambiente, projeto, data), pois isso facilita auditorias e políticas de exclusão automática.
- Para instâncias críticas, prefira parar a instância antes do snapshot quando for necessária consistência total do sistema de arquivos, embora o EBS já garanta consistência ao nível de bloco em discos em uso.
- Monitore custos: snapshots são cobrados por armazenamento incremental no S3, então snapshots antigos sem uso devem ser removidos com
aws ec2 delete-snapshot --snapshot-id snap-xxxxxxxx. - Copie snapshots críticos para outra região com
aws ec2 copy-snapshotcomo parte de uma estratégia de disaster recovery multirregional.