Este projeto provisiona automaticamente uma infraestrutura completa na AWS usando Terraform, configurando um servidor web estático com Nginx, monitoramento via script CloudWatch e alertas por e-mail/Discord.
- Infraestrutura como código com Terraform
- Configuração automática do Nginx via User Data com Bash Script
- Rede segmentada com subnets públicas e privadas
- Alertas automáticos via CloudWatch, SNS (e-mail) e WebHook
- Deploy simples e direto na AWS
- AWS (EC2, VPC, Subnets, Security Groups, CloudWatch, SNS, Gateway)
- Terraform (user_data)
- Shell Script
- Nginx
- VPC customizada com 4 sub-redes:
- 2 públicas (com acesso à Internet)
- 2 privadas (sem acesso direto à Internet)
- Instância EC2 t2.micro configurada via User Data
- Security Groups controlando o tráfego HTTP (porta 80) e SSH (porta 22)
- Alarmes configurados com CloudWatch + SNS para notificações
Para utilizar este projeto, você terá que configurar alguns parâmetros:
Na pagina profile, você tera que inserir o nome do seu Profile definido para realizar uma conexão sso:

Por padrão, o servidor está configurado para iniciar na Por padrão, o servidor está configurado para iniciar na região "us-east-1". Caso deseje utilizar outra região, será necessário modificar os seguintes pontos:
- A região no bloco provider
- A variável availability_zone, localizada no arquivo variables.tf
Você precisará configurar o caminho e o nome da sua chave SSH pública.
Por padrão, ela está localizada na pasta ./ssh, dentro do diretório home do Linux. Essa chave pública será enviada para a instância EC2, permitindo a autenticação via SSH e o acesso remoto à máquina.

Email de Notificação
Não se esqueça de configurar o e-mail para receber as notificações do CloudWatch.
No arquivo de variáveis, substitua o valor "[email protected]" pelo e-mail do usuário que deve receber os alertas.

Além das configurações em Terraform, também é necessário alterar alguns parâmetros nos scripts Bash:
O servidor foi integrado a um script que envia uma mensagem de erro sempre que ele detecta que o serviço caiu. Além disso, uma mensagem com a data e hora da queda é armazenada em log.
Para utilizar a função de WebHook, você precisará substituir a seguinte linha:

Essa linha está localizada dentro do arquivo script.sh, dentro da pasta configurações/.
Para exibir sua própria página HTML no servidor Nginx, altere o link raw usado no script de instalação.
No arquivo setup-nginx.sh, localizado dentro do diretório Scripts, substitua o link atual por um link raw válido para a página HTML de sua escolha, como por exemplo:

- Site acessível pelo navegador
- Parada forçada do Nginx detectada pelo monitoramento
- Alerta enviado corretamente (e-mail e Discord)
- Instância provisionada via Terraform com User Data funcional
Após as alterações, você só ira precisar do Terraform. Caso ja tenha, você só precisa rodar estes comandos
terraform init
terraform plan
terraform apply --auto-approve
Caso queira derrubar o sistema, você precisara rodar apennas este comando terraform destroy --auto-approve
Para verificar os Logs, você primeiro tem que entrar via ssh. Para fins de facilitar este passo, logo quando a instancia sobe pelo terraform, ela retorna o IP Publico da Instancia EC2
ssh [email protected] # O ip"0.0.0.0" subistitua pelo ip que retorna após subir a instancia pelo terraform
Para verificar o logs de Monitoramento, se o servidor caiu e em qual momento caiu, você executa o comando
cat /var/log/monitoramento.log
O script user_data.sh instala um serviço que:
- Verifica se o Nginx está online (via curl)
- Gera logs em /var/log/monitoramento.log
- Envia alertas por e-mail ou webhook (ex: Discord)
- Esse script é executado a cada minuto usando cron ou systemd timer (dependendo da distro).
Caso tenha dúvidas, sinta-se à vontade para entrar em contato:
Entre em contato: [email protected] Linkedin