Skip to content

Commit

Permalink
Merge pull request #79 from software-architecture-fiap/docs/serverless
Browse files Browse the repository at this point in the history
docs: serverless setup
  • Loading branch information
venancio0 authored Dec 17, 2024
2 parents 6c02ab7 + d336b85 commit e211b35
Show file tree
Hide file tree
Showing 2 changed files with 156 additions and 0 deletions.
155 changes: 155 additions & 0 deletions docs/fase_3/sls_setup.md
Original file line number Diff line number Diff line change
@@ -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
```
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"

0 comments on commit e211b35

Please sign in to comment.