ℹ️ 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.
- 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)
- 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 comandoaws ec2 run-instancesvia 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
- Script de inicialização dos dados do usuário:
UserData.txt - Documentação AWS CLI para o comando run-instances: AWS CLI Run-Instances Reference
- Documentação SSM Parameter Store: AWS Systems Manager Parameter Store
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 Hostusando a AMI Amazon Linux 2, tipot3.microe sem par de chaves - 🤖 2. Em Configurações de Rede, selecione a
Lab VPC, aSub-rede públicae crie um grupo de segurança chamadoBastion security grouppermitindo tráfego SSH (porta 22) - 🤖 3. Na seção Detalhes avançados, atribua o perfil de instância IAM
Bastion-Rolee conclua o lançamento da instância
- 🤖 4. Selecione a instância
Bastion Hoste 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)
- 🤖 7. Faça o download do arquivo de dados do usuário (
UserData.txt) que instala e configura o servidor Apache:
- 🤖 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
- 🤖 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
📹 Demonstração em Vídeo: Assista ao passo a passo completo da execução do laboratório acelerado no YouTube:
- 🤖 11. Cole o endereço DNS em seu navegador para validar o funcionamento do site institucional implantado:
Ismael Medeiros
GitHub
|
LinkedIn
|
Instagram
|




