Skip to content

BiancaMalta/Projeto-AWS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto-AWS

Projeto Flask Dockerizado com MySQL e Integração com Amazon S3


Descrição do Projeto

Este projeto consiste em uma aplicação Flask dockerizada que utiliza um banco de dados MySQL para armazenar dados e integra-se com a Amazon S3 para armazenamento de arquivos. A aplicação permite o upload de arquivos, armazenamento de informações de relatórios no banco de dados e exibição dos relatórios enviados pelos usuários. Além disso, inclui uma função Lambda que é acionada por eventos do CloudWatch EventBridge para desligar a instância EC2.

Estrutura do Projeto

O projeto é composto por cinco partes principais:

  1. Aplicação Flask (Python):

    • Contém a lógica de negócios da aplicação, incluindo rotas, lógica de processamento de arquivos e interações com o banco de dados.
    • Hospedada em um contêiner Docker.
    • Responsável por servir páginas da web dinâmicas, lidar com solicitações HTTP e gerenciar o fluxo de dados.
  2. Banco de Dados MySQL:

    • Armazena informações de relatórios enviados pelos usuários, como nome do arquivo e nome de usuário.
    • Hospedado em um contêiner Docker.
    • A aplicação Flask interage com este banco de dados para acessar e armazenar dados.
  3. EC2 Instance:

    • Uma instância EC2 na AWS que hospeda a aplicação Flask e o banco de dados MySQL.
    • A instância EC2 está conectada ao bucket S3 para upload e download de arquivos.
    • Foi necessário alterar o grupo de segurança da instância EC2 para expor a porta 5000 e permitir o acesso de qualquer IP.
  4. Amazon S3 Bucket:

    • Utilizado para armazenar arquivos enviados pelos usuários.
    • A aplicação Flask faz upload e download de arquivos para este bucket.
  5. Lambda Function:

    • Uma função Lambda AWS que é acionada por eventos do CloudWatch EventBridge.
    • Responsável por desligar a instância EC2 em horários pré-determinados para reduzir custos operacionais.

image

Como Executar o Projeto

  1. Pré-requisitos:

    • Certifique-se de ter o Docker e o Docker Compose instalados em sua máquina.
    • Tenha as credenciais da Amazon S3 disponíveis para autenticação.
    • Configure a função Lambda e o CloudWatch EventBridge na AWS.
    • Crie uma Role no IAM com as permissões necessárias para acessar a Amazon S3, a instância EC2 e outros recursos relevantes.
    • Lembre-se de alterar o grupo de segurança da instância EC2.
  2. Configuração:

    • Clone este repositório em sua máquina local.
    • Configure as variáveis de ambiente necessárias, como as credenciais da Amazon S3 e as configurações do MySQL, no arquivo .env.
  3. Execução:

    • Abra um terminal na pasta raiz do projeto.
    • Execute o comando docker-compose up para construir e iniciar os contêineres da aplicação Flask e do banco de dados MySQL.
    • Configure e implante a função Lambda e o CloudWatch EventBridge na AWS.
    • Inicie a instância EC2 na AWS e altere o grupo de segurança para permitir o acesso na porta 5000 de qualquer IP.
  4. Utilização:

    • Faça login na aplicação Flask com as credenciais de administrador (padrão: username=admin, password=admin).
    • Faça upload de arquivos através da interface da aplicação.
    • Visualize e gerencie os relatórios enviados pelos usuários.
    • Observe o agendamento e desligamento automático da instância EC2 pela função Lambda.

Documentações Importantes:

  1. Documentação do Flask
  2. Documentação do MySQL
  3. Documentação do Amazon S3
  4. Documentação do Docker
  5. Documentação do Docker Compose
  6. Documentação da AWS EC2
  7. Documentação da AWS Lambda
  8. Documentação do AWS IAM
  9. Documentação do AWS EventBridge (CloudWatch Events)

Ferramentas Utilizadas

  • Figma: Utilizado para prototipagem e design da interface da aplicação.
  • Docker e Docker Compose: Proporcionou um ambiente de desenvolvimento e implantação consistente e portátil.
  • AWS: Garantiu uma escalabilidade, automação, durabilidade e facilidade de integração.
  • Git: Utilizado para gerenciar e controlar as versões do código-fonte.
  • Visual Studio Code (VSCode): Excelente suporte para linguagens de programação como Python e SQL, o que facilitou o desenvolvimento, depuração e manutenção do código-fonte do projeto.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir um pull request ou relatar problemas.

About

Último Projeto do Programa <Dev>ª - DevOps B3

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published