Skip to content

About

Provisionamento de instâncias Amazon EC2 via Console e AWS CLI, usando Bastion Host, SSM Parameter Store e User Data.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

☁️ Creating Amazon EC2 Instances (Console, CLI & Bastion Host)

ℹ️ NOTE: Este é o repositório desenvolvido por Ismael Santos de Medeiros.

Projeto com o objetivo de praticar o provisionamento e o gerenciamento de instâncias Amazon EC2 utilizando duas abordagens: o Console de Gerenciamento da AWS para implantar um Bastion Host e a AWS Command Line Interface (AWS CLI) para automatizar a inicialização de um Servidor Web Apache através de User Data.

Utilizei técnicas de conexão segura via EC2 Instance Connect, busca de parâmetros dinâmicos de AMI via AWS Systems Manager Parameter Store e configuração de controle de acesso de rede com VPC e Security Groups.


💻 Tecnologias utilizadas no projeto

  • Amazon EC2 — Provisionamento de instâncias virtuais (Bastion Host e Web Server)
  • AWS CLI — Automação de comandos e inicialização programática de recursos
  • AWS Systems Manager (SSM) — Consulta de parâmetros dinâmicos no Parameter Store para obtenção da AMI mais recente
  • EC2 Instance Connect — Acesso SSH seguro via navegador web sem necessidade de par de chaves públicas
  • Amazon VPC & Security Groups — Segmentação de rede pública e controle de tráfego (portas SSH 22 e HTTP 80)
  • Linux / Bash — Instalação do servidor Apache via script de Shell (User Data)

✨ Como foi feito ?

  • Lançamento de uma instância EC2 Amazon Linux 2 (t3.micro) configurada como Bastion Host via Console de Gerenciamento da AWS
  • Atribuição do perfil de IAM (Bastion-Role) para conceder permissões operacionais à instância
  • Conexão segura ao Bastion Host utilizando o EC2 Instance Connect
  • Captura dinâmica da AMI mais recente do Amazon Linux 2 consultando o AWS Systems Manager Parameter Store via AWS CLI
  • Resolução e consulta de IDs de sub-rede pública (Public Subnet) e grupo de segurança (WebSecurityGroup) utilizando filtros CLI
  • Download e validação do script de inicialização de dados do usuário (UserData.txt) para automação da instalação do Apache
  • Inicialização programática do Servidor Web (Web Server) executando o comando aws ec2 run-instances via AWS CLI
  • Monitoramento do status da instância até a transição para o estado running via comandos de consulta CLI
  • Validação final do Servidor Web através do endpoint do DNS Público IPv4 no navegador

📚 Materiais


🛠️ Instruções de execução

Para replicar o resultado e implantar o Bastion Host e o Servidor Web, siga o passo a passo abaixo.

  • 🤖 1. No Console da AWS, navegue até o painel do EC2 e inicie uma instância chamada Bastion Host usando a AMI Amazon Linux 2, tipo t3.micro e sem par de chaves
  • 🤖 2. Em Configurações de Rede, selecione a Lab VPC, a Sub-rede pública e crie um grupo de segurança chamado Bastion security group permitindo tráfego SSH (porta 22)
  • 🤖 3. Na seção Detalhes avançados, atribua o perfil de instância IAM Bastion-Role e conclua o lançamento da instância

Lançamento do Bastion Host via Console

  • 🤖 4. Selecione a instância Bastion Host e clique em Conectar-se utilizando a opção EC2 Instance Connect
  • 🤖 5. No terminal da sessão, exporte a região e recupere a AMI mais recente executando:

AZ=curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone export AWS_DEFAULT_REGION=${AZ::-1} AMI=$(aws ssm get-parameters --names /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 --query 'Parameters[0].[Value]' --output text) echo $AMI

  • 🤖 6. Recupere os IDs da Sub-rede Pública e do Grupo de Segurança da Web:

SUBNET=$(aws ec2 describe-subnets --filters 'Name=tag:Name,Values=Public Subnet' --query Subnets[].SubnetId --output text) SG=$(aws ec2 describe-security-groups --filters Name=group-name,Values=WebSecurityGroup --query SecurityGroups[].GroupId --output text)

Captura dos parâmetros de infraestrutura via AWS CLI

  • 🤖 7. Faça o download do arquivo de dados do usuário (UserData.txt) que instala e configura o servidor Apache:

wget https://aws-tc-largeobjects.s3.us-west-2.amazonaws.com/CUR-TF-100-RSJAWS-1-23732/171-lab-JAWS-create-ec2/s3/UserData.txt

  • 🤖 8. Inicie a nova instância do Servidor Web via AWS CLI executando:

INSTANCE=$(aws ec2 run-instances
--image-id $AMI
--subnet-id $SUBNET
--security-group-ids $SG
--user-data file:///home/ec2-user/UserData.txt
--instance-type t3.micro
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Web Server}]'
--query 'Instances[*].InstanceId'
--output text) echo $INSTANCE

Lançamento do Servidor Web via AWS CLI

  • 🤖 9. Monitore a transição de estado da instância até que ela esteja pronta (running):

aws ec2 describe-instances --instance-ids $INSTANCE --query 'Reservations[].Instances[].State.Name' --output text

  • 🤖 10. Obtenha o DNS público IPv4 gerado para a instância do Servidor Web:

aws ec2 describe-instances --instance-ids $INSTANCE --query Reservations[].Instances[].PublicDnsName --output text

Validação do status e obtenção do DNS Público

📹 Demonstração em Vídeo: Assista ao passo a passo completo da execução do laboratório acelerado no YouTube:

Assistir Demonstração no YouTube

  • 🤖 11. Cole o endereço DNS em seu navegador para validar o funcionamento do site institucional implantado:

Aplicação Web no ar rodando na instância EC2


👨‍💻 Expert

   Ismael Medeiros
    GitHub  |  LinkedIn  |  Instagram  | 



About

Provisionamento de instâncias Amazon EC2 via Console e AWS CLI, usando Bastion Host, SSM Parameter Store e User Data.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors