From d336b85ea3c6bca1a18052f40c59e36291661fff Mon Sep 17 00:00:00 2001 From: gabriel Date: Tue, 17 Dec 2024 15:54:42 -0300 Subject: [PATCH] docs: serverless setup --- docs/fase_3/sls_setup.md | 155 +++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 156 insertions(+) create mode 100644 docs/fase_3/sls_setup.md diff --git a/docs/fase_3/sls_setup.md b/docs/fase_3/sls_setup.md new file mode 100644 index 00000000..c4f9cf5c --- /dev/null +++ b/docs/fase_3/sls_setup.md @@ -0,0 +1,155 @@ +### **Subindo a Aplicação com Serverless Framework** + +Este tutorial explica como fazer o **deploy** de uma aplicação com **Serverless Framework** já criada. Vamos configurar o ambiente, personalizar o arquivo `serverless.yml` e usar os comandos necessários para subir a aplicação para a AWS. + +--- + +#### **Pré-requisitos** + +Antes de começar, você precisa ter os seguintes pré-requisitos configurados: + +- **AWS CLI** configurada com credenciais (acesso à AWS): + ```bash + aws configure + ``` + Forneça sua **AWS Access Key**, **Secret Key**, região (ex.: `us-east-1`) e formato de saída (ex.: `json`). + +- **Node.js** e **Serverless Framework** instalados globalmente: + ```bash + npm install -g serverless + ``` + +--- + +#### **Passos para Subir a Aplicação com Serverless** + +1. **Acessando o diretório da aplicação** + + Entre no diretório onde a aplicação já foi criada com o Serverless Framework. + + ```bash + cd /.../auth-coffee + ``` + +2. **Configurando o arquivo `serverless.yml`** + + O arquivo **`serverless.yml`** é o arquivo principal de configuração onde você define as funções Lambda, os recursos da AWS e eventos que disparam as funções. + + ```yaml + service: tech-challenge + + frameworkVersion: '3' + + provider: + name: aws + region: sa-east-1 + ecr: + images: + tech-challenge: + path: . + . + . + . + + functions: + api: + image: + name: tech-challenge + events: + - httpApi: + path: /{proxy+} #Rota genérica, pois fará o redirecionamento para o Framework FastAPI via Magnum + method: ANY + + plugins: + - serverless-dotenv-plugin + ``` + + **Explicação:** + - **service:** Nome do serviço ou aplicação. + - **provider:** Definições do provedor de nuvem (AWS, no caso). + - **functions:** Define as funções Lambda que serão implementadas. + - **events:** O evento que aciona a função Lambda, no caso, uma requisição HTTP do API Gateway. + - **plugins:** Caso você tenha dependências específicas, como em projetos Python. + +3. **Verificando o `handler`** + + O **handler** é o arquivo onde a função Lambda é implementada. + + ```python + handler = Mangum( + app, + lifespan="off", + api_gateway_base_path='' + ) + ``` + +4. **Instalar dependências (se houver)** + + Caso você tenha dependências para o seu projeto (ex.: com `pip` no Python ou `npm` no Node.js), instale-as: + + - Execute o arquivo `requirements.txt` com pip e instale as dependencias do projeto localmente: + ```bash + pip install -r requirements.txt + ``` + +5. **Deploy da aplicação** + + Agora, com tudo configurado, basta rodar o comando para fazer o **deploy** da sua aplicação para a AWS: + + ```bash + sls deploy + ``` + + Esse comando cria e configura os recursos necessários no AWS, como a função Lambda, API Gateway, e outros serviços que você definiu. + + **Saída esperada:** + + Após o deploy ser concluído, você verá um resultado semelhante a este: + + ``` + Deploying tech-challenge to stage dev (sa-east-1) + + ✔ Service deployed to stack tech-challenge-dev (646s) + + endpoint: ANY - https://xxxxx.execute-api.sa-east-1.amazonaws.com/{proxy+} + functions: + api: tech-challenge-dev-api + + Monitor all your API routes with Serverless Console: run "serverless --console" + ``` + + O link da API gerado será exibido na saída, e você poderá acessar o endpoint da sua função Lambda através do navegador ou ferramentas como **Postman**. + +--- + +#### **Comandos Importantes do Serverless Framework** + +- **Deploy da aplicação:** + ```bash + sls deploy + ``` + +- **Visualizar as funções implantadas e recursos:** + ```bash + sls info + ``` + +- **Remover a aplicação da AWS (excluir todos os recursos):** + ```bash + sls remove + ``` + +- **Ver logs das funções Lambda:** + ```bash + sls logs -f hello + ``` + +- **Invocar a função Lambda diretamente:** + ```bash + sls invoke -f hello + ``` + +- **Testar localmente (para funções HTTP, por exemplo):** + ```bash + sls offline start + ``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index e40fa81c..1f45bce6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -107,6 +107,7 @@ nav: - Fase 3: - EKS infra: "fase_3/eks_infra_cicd.md" - CI/CD App: "fase_3/cicd_code_app.md" + - Serverless: "fase_3/sls_setup.md" - Guia: - Ambiente: "environment.md"