AMI - Amazon Machine Images
O que é uma AMI?
Uma AMI (Amazon Machine Image) é um modelo que contém a configuração de software necessária para iniciar uma instância EC2. É como um "snapshot" ou uma "imagem de disco" de um sistema completo.
┌─────────────────────────────────────────────────────────────┐
│ AMI │
├─────────────────────────────────────────────────────────────┤
│ │
│ "Uma AMI = O DNA da sua instância" │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AMI │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Sistema Operacional │ │ │
│ │ │ (Linux, Windows, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Configuração do Sistema │ │ │
│ │ │ (usuários, permissões, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Softwares Pré-instalados (opcional) │ │ │
│ │ │ (Apache, MySQL, Docker, etc.) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ Configuração de Armazenamento │ │ │
│ │ │ (tamanho do disco, tipo EBS) │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ AMI ─────► Instância 1 │
│ └───► Instância 2 (Todas idênticas no início) │
│ └───► Instância 3 │
│ │
└─────────────────────────────────────────────────────────────┘
Analogia Simples
┌─────────────────────────────────────────────────────────────┐
│ ANALOGIA: AMI = FORMA DE BOLO │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🧁 CONFEITARIA 💻 AWS │
│ ───────────── ───── │
│ │
│ Forma de bolo = AMI │
│ (formato, tamanho) (SO, config) │
│ │
│ Bolos produzidos = Instâncias EC2 │
│ (todos iguais) (todas idênticas) │
│ │
│ Decoração após = Configuração pós- │
│ assar inicialização │
│ │
│ Uma forma → vários = Uma AMI → várias │
│ bolos idênticos instâncias idênticas │
│ │
└─────────────────────────────────────────────────────────────┘
Tipos de AMI
1. AMI Públicas AWS
AMIs oficiais fornecidas pela Amazon, gratuitas (você paga apenas pela instância).
┌─────────────────────────────────────────────────────────────┐
│ AMI PÚBLICAS AWS │
├─────────────────────────────────────────────────────────────┤
│ │
│ Amazon Linux 2023 │
│ ├── Otimizada para AWS │
│ ├── Leve e performática │
│ ├── Atualizações automáticas │
│ └── Suporte gratuito via fóruns │
│ │
│ Amazon Linux 2 (LTS) │
│ ├── Suporte até 2025 │
│ ├── Muito estável │
│ └── Amplamente documentada │
│ │
│ Ubuntu Server │
│ ├── 20.04 LTS, 22.04 LTS, 24.04 LTS │
│ ├── Popular, grande comunidade │
│ └── Bom para desenvolvedores │
│ │
│ Red Hat Enterprise Linux (RHEL) │
│ ├── Suporte corporativo │
│ └── Pago (licença inclusa no preço) │
│ │
│ Windows Server │
│ ├── 2019, 2022 │
│ └── Licença Windows inclusa (mais caro) │
│ │
└─────────────────────────────────────────────────────────────┘
2. AMI AWS Marketplace
AMIs com softwares pré-instalados, geralmente pagas (licença).
Exemplos:
• WordPress pré-configurado
• Servidor LAMP completo
• Jenkins CI/CD
• Splunk
• Palo Alto Firewall
• E milhares de outros...
💰 Custo = Preço da instância + Preço da licença do software
3. AMI Comunitárias
AMIs criadas e compartilhadas por outros usuários AWS.
⚠️ ATENÇÃO:
• Qualidade variável
• Segurança não garantida
• Pode conter malwares
• Use com cautela!
✅ Prefira AMIs de fontes conhecidas
4. AMI Personalizadas (Privadas)
AMIs que você mesmo cria a partir de uma instância configurada.
┌─────────────────────────────────────────────────────────────┐
│ CRIAÇÃO DE AMI PERSONALIZADA │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Inicie uma instância com AMI base │
│ └── Amazon Linux 2023 │
│ │
│ 2. Configure a instância │
│ └── Instale Apache, PHP, MySQL │
│ └── Configure os arquivos │
│ └── Adicione seus aplicativos │
│ │
│ 3. Crie uma AMI a partir da instância │
│ └── Actions → Image → Create Image │
│ │
│ 4. Use sua AMI para novas instâncias │
│ └── Todas as instâncias já estarão pré-configuradas! │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Instância│ → │ AMI │ → │Instâncias│ │
│ │configurada│ │Pessoal │ │idênticas │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Componentes de uma AMI
Estrutura Interna
AMI
├── Root Volume Template
│ └── Snapshot EBS do volume raiz
│ └── Sistema operacional
│ └── Aplicações instaladas
│
├── Launch Permissions
│ └── Pública (todo mundo)
│ └── Privada (sua conta)
│ └── Compartilhada (contas específicas)
│
├── Block Device Mapping
│ └── Quais volumes EBS anexar
│ └── Tamanhos e tipos de volumes
│ └── Delete on Termination?
│
└── Metadata
└── Arquitetura (x86_64, arm64)
└── Virtualização (hvm, pv)
└── Nome, descrição
ID de uma AMI
Formato: ami-0123456789abcdef0
Exemplos:
• ami-0c55b159cbfafe1f0 (Amazon Linux 2 us-east-1)
• ami-0747bdcabd34c712a (Ubuntu 22.04 us-east-1)
⚠️ IMPORTANTE: Os IDs são diferentes por região!
A mesma AMI "Amazon Linux 2" tem um ID diferente
em us-east-1 e eu-west-1
Comparação das AMIs Linux Populares
| AMI | Caso de Uso | Vantagens | Desvantagens |
|---|---|---|---|
| Amazon Linux 2023 | Produção AWS | Otimizada AWS, gratuita | Específica AWS |
| Amazon Linux 2 | Legado, estável | Muito estável | Fim do suporte 2025 |
| Ubuntu 22.04 LTS | Desenvolvimento | Popular, docs | Um pouco mais pesada |
| Debian | Servidores | Muito estável | Menos suporte AWS |
| RHEL | Corporativo | Suporte oficial | Pago |
| CentOS Stream | Dev RHEL | Gratuito | Menos estável que RHEL |
AMI e Regiões
┌─────────────────────────────────────────────────────────────┐
│ AMI E REGIÕES │
├─────────────────────────────────────────────────────────────┤
│ │
│ As AMIs são REGIONAIS! │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ us-east-1 │ │ eu-west-1 │ │
│ │ │ │ │ │
│ │ ami-abc123... │ ≠ │ ami-xyz789... │ │
│ │ (Amazon Linux 2) │ │ (Amazon Linux 2) │ │
│ │ │ │ │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ Mesmo SO, mas ID diferente! │
│ │
│ Para usar uma AMI em outra região: │
│ → Copie a AMI (Actions → Copy AMI) │
│ │
│ AMI Pessoal AMI Copiada │
│ us-east-1 ─────────────────► eu-west-1 │
│ ami-abc123 ami-def456 │
│ │
└─────────────────────────────────────────────────────────────┘
Criar uma AMI (Processo)
A partir de uma Instância Existente
┌─────────────────────────────────────────────────────────────┐
│ CRIAÇÃO DE AMI - ETAPAS │
├─────────────────────────────────────────────────────────────┤
│ │
│ PREPARAÇÃO │
│ 1. Pare a instância (recomendado para consistência) │
│ 2. Ou crie com "No reboot" (risco de inconsistência) │
│ │
│ CRIAÇÃO │
│ 3. Console → EC2 → Instâncias │
│ 4. Selecione a instância │
│ 5. Actions → Image and templates → Create image │
│ │
│ CONFIGURAÇÃO │
│ 6. Nome: "minha-app-v1.0" │
│ 7. Descrição: "Servidor web com Apache e PHP 8" │
│ 8. Volumes: manter ou modificar │
│ 9. Tags: adicionar para organização │
│ │
│ ESPERA │
│ 10. A AMI muda de "pending" para "available" │
│ 11. Pode levar alguns minutos │
│ │
│ USO │
│ 12. Inicie novas instâncias com esta AMI │
│ │
└─────────────────────────────────────────────────────────────┘
Comando AWS CLI
# Criar uma AMI a partir de uma instância
aws ec2 create-image \
--instance-id i-0123456789abcdef0 \
--name "minha-app-v1.0" \
--description "Servidor web configurado" \
--no-reboot
# Ver suas AMIs
aws ec2 describe-images --owners self
# Excluir uma AMI
aws ec2 deregister-image --image-id ami-0123456789abcdef0
Boas Práticas AMI
1. Nomeação Consistente
Formato recomendado:
<aplicação>-<versão>-<data>-<ambiente>
Exemplos:
• webapp-v2.1-20241218-prod
• api-server-v1.0-20241218-staging
• bastion-v1.0-20241218-shared
2. Versionar suas AMIs
webapp-v1.0 → webapp-v1.1 → webapp-v2.0
│ │ │
└── Pequena └── Bug fix └── Nova
release funcionalidade
3. Automatizar a Criação
┌─────────────────────────────────────────────────────────────┐
│ PIPELINE AMI AUTOMATIZADA │
├─────────────────────────────────────────────────────────────┤
│ │
│ Code ──► Build ──► Test ──► Create AMI ──► Deploy │
│ │ │
│ └── Ferramenta: Packer │
│ │
│ Packer = Ferramenta da HashiCorp para criar AMIs │
│ automaticamente e de forma reprodutível │
│ │
└─────────────────────────────────────────────────────────────┘
4. Segurança
✅ FAÇA:
• Remova chaves SSH pessoais
• Remova arquivos temporários
• Limpe o histórico do bash
• Atualize os pacotes antes de criar
❌ EVITE:
• Senhas em texto claro em arquivos
• Chaves de API no código
• Dados sensíveis não criptografados
Custo das AMIs
┌─────────────────────────────────────────────────────────────┐
│ CUSTO DAS AMIs │
├─────────────────────────────────────────────────────────────┤
│ │
│ A própria AMI: GRATUITA │
│ │
│ O que custa: │
│ • Armazenamento dos snapshots EBS subjacentes │
│ • ~$0.05/GB/mês │
│ │
│ Exemplo: │
│ AMI com volume root de 20 GB │
│ → Custo: ~$1/mês pelo armazenamento │
│ │
│ AMI Marketplace: │
│ • Custo de licença além do armazenamento │
│ • Verifique o preço ANTES de iniciar │
│ │
└─────────────────────────────────────────────────────────────┘
Resumo
| Conceito | Descrição |
|---|---|
| AMI | Imagem de máquina para iniciar instâncias |
| AMI AWS | Oficiais, gratuitas, recomendadas |
| AMI Marketplace | Com softwares, geralmente pagas |
| AMI Pessoal | Criadas por você, privadas |
| Regional | Cada região tem suas próprias AMIs |
| Snapshot | AMI armazenada como snapshot EBS |
Quiz de Validação
- O que é uma AMI?
- Qual AMI Linux é otimizada para AWS?
- As AMIs são as mesmas em todas as regiões?
- Como criar uma AMI personalizada?
- O que gera custo com as AMIs?
- Por que criar suas próprias AMIs?
Próxima seção: Tipos de Instâncias