EC2 na prática: Gerenciamento de instâncias e volumes via AWS CLI
Este guia ensina como utilizar a AWS CLI através do AWS CloudShell para criar, consultar, gerenciar instâncias EC2 e manipular volumes EBS adicionais.
- Utilizar o terminal AWS CloudShell integrado ao console.
- Consultar e filtrar recursos existentes via CLI.
- Subir instâncias EC2 utilizando chave e Security Group pré-configurados.
- Criar e realizar o hot-attach de volumes EBS adicionais.
- Gerenciar o ciclo de vida e encerramento das instâncias.
📌 Pré-requisitos do Laboratório
Antes de iniciar a execução dos comandos, garanta que os seguintes recursos pré-existentes já estão disponíveis na sua região do laboratório:
- Chave SSH (Key Pair):
mark01-teste - Security Group:
mark01-lab
1. Acessando o AWS CloudShell
- Faça login no Console de Gerenciamento da AWS.
- No menu superior, certifique-se de que está na região definida para o laboratório (ex:
us-east-1). - Clique no ícone do AWS CloudShell (ícone de terminal
>_) na barra superior do console. - Aguarde o carregamento do ambiente.
No CloudShell, as credenciais IAM temporárias do seu usuário já vêm injetadas no terminal. Não é necessário executar o comando aws configure.
2. Coletando Informações da Infraestrutura
Para subir a instância via CLI, precisamos identificar os IDs do Security Group mark01-lab e de uma Subnet pública ativa na VPC.
A. Consultar o ID do Security Group mark01-lab
aws ec2 describe-security-groups \
--group-names mark01-lab \
--query "SecurityGroups[0].GroupId" \
--output text
Exemplo de saída: sg-0123456789abcdef0 (Anote este valor)
B. Consultar o ID de uma Subnet Pública
aws ec2 describe-subnets \
--query "Subnets[0].SubnetId" \
--output text
Exemplo de saída: subnet-0123456789abcdef0 (Anote este valor)
C. Buscar a AMI Mais Recente (Amazon Linux 2023)
Obtenha o ID da Imagem oficial mais recente da Amazon:
aws ec2 describe-images \
--owners amazon \
--filters "Name=name,Values=al2023-ami-2023.*-x86_64" "Name=state,Values=available" \
--query "reverse(sort_by(Images, &CreationDate))[0].ImageId" \
--output text
Exemplo de saída: ami-0c55b159cbfafe1f0 (Anote este valor)
3. Criando a Instância EC2
Com os dados coletados, execute a criação da instância t3.micro utilizando a chave mark01-teste e o Security Group mark01-lab.
Substitua os valores SEU_SG_ID e SUA_SUBNET_ID pelos IDs obtidos no Passo 2:
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type t3.micro \
--key-name mark01-teste \
--security-group-ids <SEU_SG_ID> \
--subnet-id <SUA_SUBNET_ID> \
--associate-public-ip-address \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=lab-ec2-aluno}]'
4. Consultando o Status da Instância
Execute o comando abaixo para verificar o ID gerado, o estado de execução e o IP público atribuído:
aws ec2 describe-instances \
--filters "Name=tag:Name,Values=lab-ec2-aluno" "Name=instance-state-name,Values=running,pending" \
--query "Reservations[*].Instances[*].{ID:InstanceId,Type:InstanceType,State:State.Name,PublicIP:PublicIpAddress,AZ:Placement.AvailabilityZone}" \
--output table
Atente-se ao InstanceId (ex: i-0123456789abcdef0) e à AvailabilityZone (ex: us-east-1a)
5. Operações de Gerenciamento (Ciclo de Vida)
Substitua INSTANCE_ID pelo ID da sua instância em cada comando:
Pausar / Parar Instância (Stop)
aws ec2 stop-instances --instance-ids <INSTANCE_ID>
Iniciar Instância (Start)
aws ec2 start-instances --instance-ids <INSTANCE_ID>
Reiniciar Instância (Reboot)
aws ec2 reboot-instances --instance-ids <INSTANCE_ID>
6. Criando e Anexando um Volume EBS Adicional (5GB)
Volumes EBS só podem ser anexados a instâncias localizadas na mesma Zona de Disponibilidade (AZ).
A. Obter a AZ da Instância
Se não anotou no Passo 4, confirme a AZ da máquina:
aws ec2 describe-instances \
--instance-ids <INSTANCE_ID> \
--query "Reservations[0].Instances[0].Placement.AvailabilityZone" \
--output text
B. Criar Volume EBS do tipo gp3 com 5GB
Substitua SUA_AZ pela zona onde sua instância está alocada (ex: us-east-1a):
aws ec2 create-volume \
--volume-type gp3 \
--size 5 \
--availability-zone <SUA_AZ> \
--tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=lab-disk-aluno}]' \
--query "VolumeId" \
--output text
Exemplo de saída: vol-0123456789abcdef0 (Anote este VolumeId)
C. Anexar o Volume à Instância
Substitua VOLUME_ID e INSTANCE_ID:
aws ec2 attach-volume \
--volume-id <VOLUME_ID> \
--instance-id <INSTANCE_ID> \
--device /dev/sdb
D. Validar o Anexo do Volume
Verifique se o volume assumiu o estado in-use:
aws ec2 describe-volumes \
--volume-ids <VOLUME_ID> \
--query "Volumes[0].{ID:VolumeId,State:State,Instance:Attachments[0].InstanceId,Device:Attachments[0].Device}" \
--output table
7. Desmontagem e Limpeza do Volume EBS
Antes de encerrar o laboratório, faça a desconexão e exclusão do volume criado:
1. Desanexar o volume da instância
aws ec2 detach-volume --volume-id <VOLUME_ID>
2. Excluir o volume EBS
aws ec2 delete-volume --volume-id <VOLUME_ID>
8. Encerrando e Limpando a Instância (Terminate)
Para finalizar a prática e liberar todos os recursos consumidos:
aws ec2 terminate-instances --instance-ids <INSTANCE_ID>
Acompanhe até que o status mude para terminated:
aws ec2 describe-instances \
--instance-ids <INSTANCE_ID> \
--query "Reservations[*].Instances[*].State.Name" \
--output text
Parabéns! Você concluiu a criação de instâncias EC2, anexação de volumes EBS e gerenciamento de infraestrutura utilizando a AWS CLI diretamente no CloudShell.