Skip to main content

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.

Objetivos do Laboratório
  • 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​

  1. Faça login no Console de Gerenciamento da AWS.
  2. No menu superior, certifique-se de que está na região definida para o laboratório (ex: us-east-1).
  3. Clique no ícone do AWS CloudShell (ícone de terminal >_) na barra superior do console.
  4. Aguarde o carregamento do ambiente.
Autenticação Automática

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)​

Atenção à Zona de Disponibilidade (AZ)

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
Conclusão

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.