Introdução
Assim como no Windows, criar uma AMI a partir de uma instância Linux permite capturar um estado configurado do sistema operacional, aplicações e dependências para reutilização em novos lançamentos de instância. Em ambientes de TI industrial que utilizam gateways IoT, servidores de coleta de dados (historians) ou middlewares baseados em Linux, esse processo é fundamental para escalar horizontalmente e recuperar ambientes rapidamente após falhas. Este tutorial cobre a criação de uma AMI a partir de uma instância Linux (Amazon Linux, Ubuntu ou similares) rodando no EC2.
Pré-requisitos
- Uma instância EC2 Linux em execução, com aplicações e configurações já aplicadas
- Acesso SSH à instância para preparação prévia
- AWS CLI configurado com permissões
ec2:CreateImage - ID da instância de origem (ex. i-0a1b2c3d4e5f67890)
Passo 1: Preparar a instância Linux
Conecte-se via SSH à instância e realize a limpeza recomendada antes de gerar a imagem:
ssh -i minha-chave.pem [email protected]Dentro da instância, limpe logs, histórico de comandos e caches desnecessários:
sudo rm -rf /var/log/*.log
history -c
sudo yum clean all # ou sudo apt-get clean, em distribuicoes baseadas em Debian/UbuntuSe a instância usa o Cloud-Init, também é recomendável limpar o estado dele para que a nova instância gere identificadores próprios corretamente:
sudo cloud-init clean --logsPasso 2: Criar a AMI via console AWS
- No console EC2, acesse Instances e selecione a instância Linux de origem.
- Clique em Actions > Image and templates > Create image.
- Defina um nome, por exemplo: ubuntu2204-gateway-iot-v1.
- Preencha a descrição com detalhes da aplicação instalada, versão do agente MQTT ou middleware SCADA, por exemplo.
- Revise os volumes EBS incluídos e clique em Create image.
Passo 3: Criar a AMI via AWS CLI
aws ec2 create-image \
--instance-id i-0a1b2c3d4e5f67890 \
--name "ubuntu2204-gateway-iot-v1" \
--description "AMI com agente MQTT e coletor Modbus configurados" \
--no-rebootO retorno traz imediatamente o ImageId gerado, como ami-0fedcba9876543210.
Verificando o status da imagem
aws ec2 describe-images --image-ids ami-0fedcba9876543210 --query "Images[].{Status:State,Nome:Name}"Aguarde o status mudar de pending para available antes de utilizar a AMI em produção.
Passo 4: Compartilhar ou copiar a AMI entre contas e regiões
Para réplicas de disaster recovery em outra região, use:
aws ec2 copy-image \
--source-image-id ami-0fedcba9876543210 \
--source-region sa-east-1 \
--region us-east-1 \
--name "ubuntu2204-gateway-iot-v1-dr"Para compartilhar a AMI com outra conta AWS (por exemplo, do cliente final), modifique a permissão de lançamento:
aws ec2 modify-image-attribute \
--image-id ami-0fedcba9876543210 \
--launch-permission "Add=[{UserId=123456789012}]"Boas práticas
- Sempre teste a AMI lançando uma instância de validação antes de promovê-la a produção.
- Utilize convenções de nomenclatura consistentes incluindo distribuição, versão e propósito (ex. ubuntu2204-gateway-iot-v1).
- Combine a criação de AMIs com o EC2 Image Builder para pipelines automatizados de hardening e atualização de patches de segurança.
- Evite manter credenciais, chaves SSH privadas ou arquivos
.envdentro da instância antes de gerar a imagem. - Exclua AMIs obsoletas com
aws ec2 deregister-image --image-id ami-xxxxxxxxe remova os snapshots associados para controlar custos de armazenamento no S3.