Auto Scaling Group na AWS: lance EC2 com Docker e pague só pelo uso
No fim deste texto você vai saber montar um Auto Scaling Group que lança várias EC2 sozinho, já com Docker instalado, distribuídas em duas zonas de disponibilidade. E vai saber ajustar a quantidade de máquinas quando precisar, até zerar, para pagar só pelo poder computacional que está ligado.
O que o Auto Scaling Group resolve
Muita gente aprende a lançar uma EC2 num tutorial e para aí. Fica a dúvida de como isso funciona em produção. A escala automática é uma das respostas: você diz quantas máquinas quer, e a AWS lança, distribui e mantém essas máquinas para você.
O Auto Scaling Group não tem custo próprio. Você paga pelo poder computacional que ele lança, por segundo de uso. Se aumenta ou diminui a quantidade de instâncias, a cobrança acompanha.
O desenho do laboratório é este: uma região, a VPC padrão da conta, duas zonas de disponibilidade (A e B) e quatro máquinas distribuídas entre elas. Duas zonas ajudam a manter a aplicação disponível se uma delas tiver problema.
Para a máquina já nascer pronta, o grupo se apoia num Launch Template. Ele guarda o modelo da instância: a role, o security group e o script de preparação.
1Conferir os pré-requisitos
Eu preciso de duas peças prontas antes do Launch Template.
- Uma role para acesso por SSM. A minha se chama
role-acesso-ssme tem a policyAmazonSSMManagedInstanceCore. É por ela que eu entro na máquina depois, sem SSH. O SSM é mais seguro que o SSH, e o acesso não depende de porta aberta. - Um security group. O meu se chama
bia-deve tem uma regra de entrada liberando HTTP na porta 80. Ela é opcional: como a conexão é por SSM, não preciso dela, e você pode deixar o grupo sem porta aberta. Se a sua aplicação precisar de porta, libere o que fizer sentido para ela.
No console do IAM, abra a role e confirme a policy. No console do EC2, abra os security groups e confirme o grupo.
2Preparar o script de user data
O user data é um script de shell que roda quando a instância liga. Aqui ele deixa a máquina pronta para trabalhar com containers. O script que eu uso instala:
- Docker e Git, e coloca os usuários
ec2-useressm-userno grupodocker; - ativa e inicia o serviço do Docker;
- Docker Compose, como plugin (v2.23.3 no script);
- uma configuração de swap;
- Node e npm.

Ele está no repositório do projeto Bia, no meu GitHub. Copie o conteúdo do script, porque você vai colá-lo no Launch Template. Se a sua realidade pede outras ferramentas, ajuste o script. O importante é o grupo lançar todas as máquinas já preparadas.
3Criar o Launch Template
No console do EC2, abra Launch Templates e crie um novo. Eu usei um nome de aula, com versão 1. Os campos que preenchi:
- Resource tags: nenhuma. Eu queria nomear as instâncias, mas o nome só entrou depois, no grupo.
- Imagem: Amazon Linux 2023.
- Tipo da instância: deixei em branco, para escolher na tela do grupo.
- Key pair: nenhum, porque não uso chave.
- Security group: o
bia-dev. - Storage: o padrão.
- Advanced details, IAM instance profile:
role-acesso-ssm. - User data: o script do passo anterior, colado no final da página.
Clique em Create launch template.
4Criar o Auto Scaling Group
No console do EC2, abra Auto Scaling Groups e crie um grupo. O fluxo:
- Dê um nome ao grupo e escolha o Launch Template. A versão pode ser a última.
- No tipo de instância, tire as opções extras e deixe só a
t3.micro, que entra no Free Tier da conta. - Em rede, escolha a VPC e marque duas zonas. Na minha conta, na região
us-east-1, foram aus-east-1ae aus-east-1b.
4. Pule para a revisão com Skip to review. As etapas do meio têm valores padrão que não precisei mexer.
5. Clique em Create Auto Scaling group.
Por padrão, o grupo nasce com uma instância. Na aba Activity você acompanha o lançamento, e na lista de instâncias a máquina aparece.
5Ajustar a capacidade para quatro
Quatro máquinas foi o escopo que eu me propus. Abra o grupo, clique em Edit e ajuste a capacidade: mínima, desejada e máxima em 4.
Na mesma tela, em Tags, adicione a tag Name. Clique em Update.
O grupo atualiza a capacidade e lança as três instâncias que faltam, já com a tag. A que existia antes não é renomeada: o grupo só lança as novas. Filtre a lista de instâncias pelo nome e pelo estado running e você vê as quatro distribuídas entre a zona A e a zona B, sem precisar escolher nada.

6Conectar e conferir a preparação
Agora vem a prova de que o user data funcionou. Selecione uma das instâncias, clique em Connect e entre pela sessão do SSM. Como a role está associada, a conexão abre sem chave e sem depender de porta aberta.
Troque para o usuário ec2-user (sudo su ec2-user) e rode:
docker --version
Em seguida, o Compose:
docker compose version
Os dois responderam: Docker 25.0.3 e Docker Compose v2.23.3. Clonei o repositório do projeto Bia (git clone https://github.com/henrylle/bia), entrei na pasta bia e rodei docker compose up -d. Ele começou a baixar as imagens como eu precisava.
Isso vale para as quatro máquinas, porque todas nasceram do mesmo template.
7Reduzir ou zerar para não pagar à toa
A capacidade do grupo não é fixa. Para reduzir, volte em Edit e mude os valores. Por exemplo, mínimo 2 e máximo 4: o grupo passa a trabalhar com duas máquinas e desliga as outras.
Quando terminar o laboratório, você pode zerar a capacidade. Sem instâncias, não há cobrança do que o grupo lança, porque o Auto Scaling Group em si não é cobrado.
Neste laboratório eu ajustei tudo na mão. O grupo também aceita gatilhos para aumentar ou diminuir a quantidade de máquinas sozinho, mas isso fica para outro texto.
Checklist
- Crie ou confira a role com a policy
AmazonSSMManagedInstanceCore. - Crie ou confira o security group que a instância vai usar.
- Copie o script de user data que prepara Docker, Docker Compose, Git e Node.
- Crie o Launch Template com a role, o security group e o user data.
- Crie o Auto Scaling Group com o template, o tipo
t3.microe as zonas A e B. - Ajuste mínima, desejada e máxima para o número de máquinas que você quer.
- Conecte pelo SSM e rode
docker --versionpara provar que o user data funcionou. - Reduza ou zere a capacidade ao terminar, para não pagar por máquina ligada.
O Auto Scaling Group lança, distribui e mantém as máquinas por você, e a conta acompanha só o que está ligado. O Launch Template é a peça que garante que cada uma nasce pronta.
O que os alunos dizem

“Hoje recebo oportunidades 100% remoto e finalmente me sinto recolocada no mercado.”
Patrícia Prado, Desenvolvedora Back-end
Ver depoimento
“A Formação AWS me mostrou o caminho, me deu prática de verdade e mudou minha vida.”
Rodrigo Raspinola, Analista Cloud / SRE
Ver depoimento
“Eu queria voltar para a área técnica, mas aprender AWS sozinho só me deixava frustrado.”
William Santos, Tech Lead
Ver depoimento
Formação AWS
Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.
Agende uma conversaPrefere assistir?
A aula completa (23 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

