Esse projeto é a resposta do desafio técnico para desenvolvedor backend, cuja inteção é construir uma API REST que rode baseada em AWS Lambda functions, as especificações estão descritas no link abaixo:
A API REST foi estruturada com base nas linguagens e ferramentas resumidas abaixo:
- AWS API Gateway
- AWS Serverless Application Model
- AWS S3
- AWS Toolkit for Visual Studio Code
- Node.js 14.x
A API está implantada no API Gateway na URL abaixo:
Para implementação dos endpoints da API no API Gateway usamos o SAM Template, que consta nesse repositório.
A API contém os seguinte endpoints/métodos:
-
/categorias:
- get:
- post:
-
/categorias/{id}:
- get:
- put:
- delete:
- patch:
-
/marcas:
- get:
- post:
-
/marcas/{id}:
- get:
- put:
- delete:
- patch:
-
/produtos:
- get:
- post:
-
/produtos/{id}:
- get:
- put:
- delete:
- patch:
Os métodos GET aceitam paginação com base nas seguintes query string (opcionais):
- offset - Quantidade de registros a avançar da resposta - padrão: 0;
- limit - Quantidade de registros a devolver - padrão: 100;
Para os recursos Marcas e Categorias o método GET aceita as seguintes querystring: nome;
Para Produtos o método GET aceita as seguintes querystring: marca, categoria, descricao;
O filtro por descrição pode ser parcial, buscando a string passada em qualquer posição da descrição do produto.
Os métodos POST, por permitirem envio de imagens, devem ter como Content-type: multipart/form-data.
Para armazenamento dos recursos: Marca, Categoria e Produto, assim como suas imagens anexadas, optou-se por usar arquivo JSON gravados no S3.
Para desenvolver a solução usamos o VSCode. Abaixo seguem algumas orientações e softwares que usamos para o projeto:
- Ter uma conta na AWS.
- Por questão de boas práticas não devemos usar nossa conta root;
- Instalar o AWS CLI:
- AWS CLI - Install AWS CLI
- Instalar o AWS SAM CLI:
- SAM CLI - Install the SAM CLI
- Configurar suas credencias:
$> aws configure
- Instalar o AWS Toolkit for Visual Studio Code - Install Toolkit
- Node.js - Install Node.js 14
- Docker - Install Docker community edition
O Docker é útil para invocação local das Lambda functions.
Após a instalação dos pré-requisitos acima, clonar o repositório e dentro da pasta do projeto, executar:
sam build
sam deploy --guided
O primeiro comand irá executar um build da aplicação. O segundo fará o deploy da aplicação para a AWS.
Para esse primeiro deploy é interessante usarmos a opção --guided.
Teremos uma série de perguntas:
- Stack Name: Nome da stack a criad ano CloudFormation. Deve ser único para sua conta e região, uma sugestão seria o nome do projeto.
- AWS Region: Região da AWS para onde seu projeto dever ser enviado.
- Confirm changes before deploy: Se sim, serão exibidas as alterações antes de serem gravadas.
- Allow SAM CLI IAM role creation: Informa se permite que os papéis necessários sejam automaticamente criado.
- Save arguments to samconfig.toml: Se sim, suas escolhas serão gravadas em um arquivo de configuração sendo usado nos demais deploy, bastando executar sam deploy.
No repositório temos o arquivo:
- DesafioBackendCM-app-Prod-swagger-apigateway.yaml Esse arquivo foi gerado a partir do Insomnia e contém requests de exemplo de chamadas à API para todos os endpoints disponibilizados. Para usa-lo basta instalar o Insomnia e realizar a importação. Será criada uma workspace e nela conterá dos os endpoints.