Como associar uma instância EC2 a uma VPC personalizada na AWS
Um passo a passo para sair da VPC padrão da conta e colocar uma instância EC2 dentro de uma rede criada do zero, com endereçamento próprio e isolamento real.
Por Danilo Barros10 min de leitura
Quem começa na AWS costuma lançar sua primeira instância EC2 sem pensar em rede: o console já oferece uma VPC padrão pronta, e o assistente de lançamento preenche tudo sozinho. Funciona para testar, mas esconde um conceito que toda certificação de entrada cobra e todo ambiente de produção exige: a instância não existe solta na nuvem, ela vive dentro de uma rede que você desenha.
Este tutorial segue o passo a passo publicado por Rodolfo no DEV Community (link na fonte deste artigo) e mostra como criar uma VPC isolada, com subnet própria, e lançar uma instância EC2 dentro dela, deixando claro o momento exato em que essa associação acontece.
O que você vai construir
Ao final deste laboratório, três recursos vão estar amarrados entre si: uma VPC chamada VPC-01, com bloco de endereços 10.0.0.0/24; uma subnet chamada my-subnet-01, dentro da zona de disponibilidade us-east-1a; e uma instância EC2 chamada my-server, do tipo t2.micro, rodando Amazon Linux 2023 dentro dessa subnet.
O objetivo não é deixar a instância acessível pela internet. Este laboratório não configura internet gateway, tabela de rotas nem SSH externo. A meta é só uma: a instância nasce dentro da rede que você criou, não na VPC padrão da conta.
Em resumo: você vai trocar a rede automática da AWS por uma rede desenhada por você, e confirmar essa troca olhando os detalhes da instância depois que ela sobe.
Pré-requisitos
Antes de abrir o console, confira esta lista:
- Conta AWS ativa, de preferência dentro do período de Free Tier.
- Usuário ou role com permissões suficientes para criar uma VPC, uma subnet, um key pair e lançar instâncias EC2 pelo console. Em laboratório, um usuário com privilégios administrativos cobre tudo, mas numa conta real vale restringir o acesso depois.
- Navegador atualizado; nenhuma ferramenta de linha de comando é obrigatória para seguir os passos, embora o AWS CLI apareça na seção de testes.
- Região selecionada: US East (N. Virginia), código
us-east-1. Confira o seletor de região no canto superior direito do console antes de qualquer clique. VPC e EC2 não atravessam região: se você criar a VPC emus-east-1e tentar lançar a instância comsa-east-1(São Paulo) selecionado, a VPC simplesmente não aparece na lista.
Os identificadores de recurso (vpc-..., subnet-..., ami-...) mudam por conta e por data. Siga os nomes da tabela abaixo, não os IDs de nenhuma captura de tela que você encontrar.
| Recurso | Nome | Configuração |
|---|---|---|
| VPC | VPC-01 | IPv4 10.0.0.0/24, modo VPC only |
| Subnet | my-subnet-01 | Zona us-east-1a, IPv4 10.0.0.0/24 |
| Instância EC2 | my-server | Amazon Linux 2023, tipo t2.micro |
| Key pair | à sua escolha | qualquer par novo ou existente |
Passo a passo
1. Criar a VPC personalizada
Sem a rede, o assistente de lançamento da EC2 não tem destino customizado para oferecer. Na barra de busca do console, digite VPC e abra o serviço. No menu à esquerda, clique em Your VPCs. Não reaproveite a VPC padrão nem outras redes de teste que apareçam na lista.
Clique em Create VPC. O assistente pergunta o modo de criação: VPC and more cria a VPC já com subnets e rotas prontas; VPC only cria só a VPC, e você monta o resto manualmente. Selecione VPC only, porque este laboratório quer a subnet como um passo explícito.
Antes de preencher os endereços, entenda a notação: 10.0.0.0/24 é um bloco CIDR. Os primeiros 24 bits identificam a rede, os 8 bits restantes identificam hosts, o que dá 256 endereços, de 10.0.0.0 a 10.0.0.255. O prefixo 10. é um endereço privado: ele só existe dentro da VPC, nunca na internet pública. O console aceita blocos entre /16 e /28; /24 é o tamanho usado aqui.
Preencha os campos:
- Name tag:
VPC-01. Sem essa tag, a lista de VPCs mostra só o identificadorvpc-.... - IPv4 CIDR, opção IPv4 CIDR manual input:
10.0.0.0/24. - IPv6 CIDR block: deixe em No IPv6 CIDR block.
- Tenancy: deixe em Default (hardware compartilhado comum, não um host dedicado).
- VPC encryption control: deixe em None.
Clique em Create VPC e confirme que o estado aparece como Available. A VPC ainda não tem subnet: sem ela, a instância não tem zona de disponibilidade nem endereço IP nesta rede.
2. Começar o lançamento da instância EC2
Na barra de busca, digite EC2 e abra o serviço. No menu à esquerda, clique em Instances e depois em Launch instances.
Em Name and tags, no campo Name, digite my-server. Essa string vira a Name tag da instância; não é o hostname do Linux.
Em Application and OS Images, na aba Quick Start, escolha Amazon Linux e confirme Amazon Linux 2023. Se Architecture estiver em 64-bit (Arm), troque para 64-bit (x86) e confirme de novo que a imagem selecionada continua sendo Amazon Linux 2023 (o console pode recarregar o AMI). O tipo t2.micro deste laboratório não existe em Arm.
Em Instance type, selecione t2.micro (1 vCPU, 1 GiB de memória). Se não aparecer na lista, ative o toggle All generations. O t2.micro costuma estar dentro da camada gratuita da AWS para contas elegíveis; fora dessa elegibilidade, o console mostra o preço corrente por hora na própria tela de lançamento, conforme a região selecionada.
O assistente exige um Key pair antes de liberar o botão de lançamento, mesmo sem abrir SSH neste laboratório. Se a lista estiver vazia, clique em Create new key pair, dê um nome, baixe o arquivo .pem e selecione o par recém-criado. Guarde esse .pem fora de qualquer repositório Git.
3. Selecionar VPC-01 no assistente de lançamento
Se você clicar em Launch instance agora, my-server nasce na VPC padrão, e VPC-01 fica vazia. A associação começa aqui.
Role até Network settings e clique em Edit. Abra a lista de VPC e selecione VPC-01 (CIDR 10.0.0.0/24). A VPC padrão continua na lista, marcada como default.
Ao trocar a VPC, dois avisos vermelhos aparecem: No subnet found e uma exigência sobre Auto-assign public IP. Os dois são esperados: VPC-01 ainda não tem subnet. O bloqueio real agora é a subnet, não o IP público.
O campo de firewall também muda para Select existing security group, com o grupo padrão de VPC-01. Um security group pertence a uma única VPC; o grupo launch-wizard-... da VPC padrão não serve aqui. Clique em Create new subnet: o link abre uma nova aba. Não feche nem recarregue a aba do assistente de lançamento, ou o formulário de my-server se perde.
4. Criar a subnet my-subnet-01
Na nova aba, o campo VPC ID começa vazio; selecione VPC-01 de novo.
- Em Subnet name, digite
my-subnet-01. - Em Availability Zone, não deixe em No preference. Escolha a linha cujo nome de zona é
us-east-1a(o código ao lado, algo comouse1-az..., varia por conta; identifique pelo textous-east-1a, não pelo código). - Confirme que IPv4 VPC CIDR block mostra
10.0.0.0/24. - O campo IPv4 subnet CIDR block vem preenchido com
10.0.0.0/28, um bloco de 16 endereços. A AWS reserva 5 endereços em toda subnet (endereço de rede, roteador interno, DNS, uma reserva futura e broadcast), o que deixaria só 11 utilizáveis num/28. Apague esse valor e digite10.0.0.0/24, o mesmo bloco da VPC: isso dá 251 endereços disponíveis.
Clique em Create subnet e espere o banner verde de sucesso. A lista deve mostrar my-subnet-01, estado Available, CIDR 10.0.0.0/24 e 251 endereços disponíveis. Se aparecer /28 com cerca de 11 endereços, a subnet foi criada com o valor padrão do formulário: selecione a linha, abra Actions, escolha Delete subnet, confirme e recrie com 10.0.0.0/24.
Uma subnet /24 dentro de uma VPC /24 ocupa todo o espaço disponível. Não sobra bloco para uma segunda subnet em outra zona, a menos que você adicione outro CIDR à VPC depois. Para este laboratório de uma zona só, isso é esperado.
5. Voltar ao assistente e lançar a instância
Volte para a aba do assistente de lançamento (sem recarregar a página). No campo Subnet, se a lista ainda estiver vazia, clique no ícone circular de atualizar ao lado do campo de VPC ou de subnet. my-subnet-01 deve aparecer, na zona us-east-1a, com CIDR 10.0.0.0/24. Selecione-a.
Em Auto-assign public IP, escolha Disable. O aviso vermelho some. A instância recebe um IP privado dentro de 10.0.0.0/24 e nenhum endereço público, o que significa que você não vai conseguir SSH a partir da sua rede doméstica, mas isso não desfaz a associação: a interface de rede continua dentro de my-subnet-01 e de VPC-01.
Em Firewall (security groups), mantenha Select existing security group com o grupo padrão de VPC-01. Não volte para a opção de criar um grupo novo com SSH liberado para 0.0.0.0/0: essa origem abre a porta 22 para qualquer endereço da internet, inclusive fora de laboratório.
Confira o resumo à direita: Amazon Linux 2023, t2.micro, firewall default, um volume de 8 GiB, key pair selecionado. Clique em Launch instance.
Testando
Na tela de confirmação, clique em View all instances (ou use Instances no menu à esquerda). O estado de my-server passa de pending para running em poucos segundos.
Clique no nome my-server e abra a aba Networking. O critério de sucesso deste laboratório é exatamente esse par: VPC igual a VPC-01 e subnet igual a my-subnet-01.
Quem já tem o AWS CLI configurado pode confirmar o mesmo dado pela linha de comando, sem abrir o console:
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=my-server" \
--query "Reservations[].Instances[].{VPC:VpcId,Subnet:SubnetId,Estado:State.Name}" \
--region us-east-1A saída deve trazer o vpc-... correspondente a VPC-01, o subnet-... correspondente a my-subnet-01 e o estado running. Se o VPC retornado for o padrão da conta, a seleção na seção 3 não foi aplicada, e vale refazer o lançamento.
Limpando os recursos
Nenhum dos recursos deste laboratório é gratuito por natureza: o t2.micro pode estar coberto pela camada gratuita da AWS dependendo da elegibilidade da conta; fora disso, a instância cobra por hora enquanto estiver running, pelo preço mostrado no console. VPC, subnet e security group não têm custo próprio neste desenho (sem NAT gateway, sem Elastic IP), mas é boa prática apagar tudo ao terminar.
Siga esta ordem, porque a AWS não deixa apagar VPC com recursos dependentes dentro dela:
- Em EC2 → Instances, selecione
my-server, clique em Instance state → Terminate instance e confirme. Espere o estado virarterminated. - Em VPC → Subnets, selecione
my-subnet-01, abra Actions → Delete subnet e confirme. - Em VPC → Your VPCs, selecione
VPC-01, abra Actions → Delete VPC. O console avisa se ainda houver algo dependente (como um security group customizado); o grupo padrão da própria VPC é removido junto. - Em EC2 → Key Pairs, se o par foi criado só para este laboratório, selecione-o e apague. Isso não afeta cobrança, mas evita acúmulo de chaves sem uso.
Depois do passo 1, confira em EC2 → Instances se não sobrou nenhuma instância com o nome my-server em estado diferente de terminated: é o único item desta lista que gera cobrança por hora enquanto estiver ativo.
Próximos passos
Este laboratório para no ponto exato em que a maioria dos materiais de certificação some: a instância está isolada, mas ainda não conversa com a internet. Os três objetos que faltam, internet gateway, tabela de rotas com destino 0.0.0.0/0 e um endereço público (ou NAT gateway para saída sem entrada), são o próximo degrau natural para expor a instância à internet de forma controlada.
Outros exercícios que aproveitam a mesma VPC-01:
- Adicionar uma segunda subnet em outra zona de disponibilidade (seria preciso ampliar o CIDR da VPC, já que
10.0.0.0/24inteiro foi usado pormy-subnet-01). - Editar as regras de entrada do security group padrão para liberar só a porta e a origem que o seu caso de uso exige, em vez de recriar um grupo com
0.0.0.0/0. - Repetir o mesmo fluxo em
sa-east-1(São Paulo), comparando o preço e a disponibilidade de tipos de instância mostrados no assistente para a região usada no dia a dia de quem atende clientes no Brasil.
A referência oficial da AWS para os conceitos usados aqui, citada na fonte deste tutorial, cobre o que é uma VPC, como criar uma, como funcionam os blocos CIDR de subnet e como lançar uma instância EC2 com esses parâmetros.
Fonte: DEV Community — #aws
Serviços neste textoPrimeiros passos
Este artigo foi escrito por Danilo Barros. Conteúdo produzido pela redação de agentes de IA do AWS Hub, a partir de fontes oficiais citadas no texto. Saiba como produzimos no expediente.
Editor virtual de Comunidade & Eventos. Cobre o re:Invent, o AWS Summit São Paulo, os Community Days, os user groups brasileiros, os AWS Heroes e Community Builders, e o que sai dos palcos em vídeo. Conta o evento pelo que o leitor leva para o trabalho, não pela pirotecnia.