A implantação de um projeto Python com FastAPI em uma instância AWS EC2 fornece um ambiente robusto e escalável para aplicações web. Este tutorial irá orientá-lo na configuração de uma instância EC2 para um projeto FastAPI rodando com Docker, incluindo gerenciamento de banco de dados com PostgreSQL e pgAdmin, e protegendo sua aplicação com Nginx e HTTPS.
Pré-requisitos:
- Uma conta AWS
- Entendimento básico de Docker, FastAPI e comandos Linux
- Docker e Docker Compose instalados na sua máquina local
- Opcional: Clonar o repositório FastAPI-Template para utilizar como modelo da estrutura e configuração para esse tutorial.
Passo 1: Criar uma Instância AWS EC2
- Faça login no Painel AWS EC2.
- Clique em Launch Instance para criar uma nova instância EC2.
- Escolha uma Amazon Machine Image (AMI), como Ubuntu Server.
- Selecione um tipo de instância (por exemplo,
t2.micro
para o nível gratuito). - Configure os detalhes da instância conforme necessário.
- Adicione armazenamento se o padrão não for suficiente.
- Configure o grupo de segurança para adicionar regras de entrada para as portas (demarcado como Inbound Rules)
8090
,8080
e5050
para permitir tráfego. - Crie e baixe um novo par de chaves ou escolha um existente. Lembre-se de onde você salvou, pois precisará disso para se conectar via SSH à sua instância.
- Revise e inicie a instância.
Passo 2: Conectar-se à Sua Instância EC2 via SSH
Use o terminal ou prompt de comando para se conectar à sua instância:
ssh -i /caminho/para/sua-chave.pem ubuntu@{ip_publico}
Substitua {ip_publico}
pelo endereço IP público da sua instância.
Passo 3: Instalar Dependências
Atualize as listas de pacotes e instale pipenv
:
sudo apt update
sudo apt install pipenv
Passo 4: Configurar Docker
Certifique-se de que o Docker está instalado na sua instância EC2. Se não, instale o Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Adicione seu usuário ao grupo Docker para gerenciar o Docker como um usuário não root:
sudo usermod -aG docker ${USER}
Instale o Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Passo 5: Implantar Seu Aplicativo FastAPI
Clone seu projeto FastAPI (ou o repositório de template) para a instância EC2 ou transfira seus arquivos de projeto usando SCP ou SFTP.
Navegue até o diretório do seu projeto e execute seu aplicativo com o Docker Compose:
docker-compose up --build -d
Este comando constrói a imagem Docker para o seu aplicativo FastAPI e inicia os contêineres conforme definido no seu arquivo docker-compose.yml
.
Passo 6 Opcional: Configurar Nginx como um Proxy Reverso
Instale o Nginx:
sudo apt update
sudo apt install nginx
Configure o Nginx para encaminhar solicitações para o seu aplicativo FastAPI. Crie um novo arquivo de configuração em /etc/nginx/sites-available/
e vincule-o a sites-enabled/
.
Passo 7 Opcional: Proteger Seu Aplicativo com HTTPS
Instale o Certbot e o plugin Nginx para obter um certificado SSL gratuito da Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d seudominio.com
Siga as instruções do Certbot para configurar o HTTPS para o seu domínio.
Passo 8: Acessar Seu Aplicativo FastAPI
Seu aplicativo FastAPI agora deve ser acessível em http://{ip_publico}:8090/docs
para a UI do Swagger, com https://seudominio.com
servindo seu aplicativo de forma segura através do HTTPS (caso Nginx estiver configurado).
Conclusão:
Você configurou com sucesso uma instância AWS EC2 para hospedar seu projeto FastAPI com Docker, completo com um banco de dados PostgreSQL, pgAdmin para gerenciamento de banco de dados e Nginx para acesso seguro via HTTPS. Esta configuração fornece uma base sólida para a implantação de robustas aplicações web em Python.
Para instruções detalhadas e solução de problemas, consulte a documentação oficial da AWS, FastAPI e Docker.