Skip to content

Aplicação serverless para CRUD no AWS DynamoDB. Desenvolvida em python utilizando o Serverless Framework para integrar funções Lambda, API Gateway e DynamoDB

License

Notifications You must be signed in to change notification settings

crobertocamilo/Serverless-CRUD-AWS-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio 3 do Bootcamp Cloud AWS

Evento promovido pela Digital Innovation One - DIO, com patrocínio da Amazon Web Services - AWS.

logo bootcamp

Desafio

Infraestrutura como código: Desenvolver uma aplicação serverless para operações básicas (CRUD) numa tabela no AWS DynamoDB. O projeto deve considerar a criação da tabela, criação das rotas da API e permissões necessárias. Utilizar o Serverless Framework para a implementação, com livre escolha da linguagem de programação e tema/esquema da tabela.


Objetivo

Desenvolver uma API serverless para criar uma tabela e realizar operações básicas num banco de dados (inserir item, consultar, atualizar e deletar) na AWS. A aplicação deve implementar a solução através do Serverless Framework (sem utilizar o console da AWS) e funções Lambda, em python, para integrar os serviços API Gateway e DynamoDB.


Desenvolvimento da solução:

A solução foi desenvolvida utilizando funções Lambda em python, uma função para cada tipo de operação sobre a tabela, sendo o código das funções apresentado na pasta src.

Estrutura de serviços na AWS
Integração da API com o bando de dados através de função Lambda.



A integração entre os serviços da AWS é realizada através do Serverless Framework. O arquivo serverless.yml define a estrutura de recursos (API Gateway, Lambda, DynamoDB) e é utilizado para a criação de uma estrutura de serviços (stack) no CloudFormation, compreendendo também criação das permissões necessárias no IAM e registro de logs no CloudWatch.


Implementando a solução:

Requisitos:

  • Serverless Framework instalado (tutorial oficial aqui);
  • AWS-CLI instalado e configurado com as credenciais da conta (Access Key e Secret Key) na AWS. Para mais informações, clique aqui.



Para o deploy deste projeto na AWS, clone este repositório e acesse a pasta raiz pelo terminal. Digite:

serverless deploy

Se a estrutura de serviços for construída com sucesso em sua conta da AWS, será exibido no terminal uma mensagem como a mostrada abaixo, onde são listados os endpoints criados para cada método/operação no banco de dados.

Os links mostrados na imagem são apenas exemplos e não estão mais disponíveis.

Estrutura de serviços na AWS

Utilizando a API:

Como este projeto não compreende o desenvolvimento de um front-end, a interação com os endpoints da API deve ser feita através de um navegador (GET) ou utilizando uma ferramenta para testar APIs, como por exemplo o Postman.

O DynamoBD é um banco de dados NoSQL do tipo chave-valor, por isso seus objetos seguem a estrutura "nomeChave": "valorAtributo". Não é necessário que todos os registros tenham obrigatoriamente todos os atribuitos pois as tabelas no DynamoBD não possuem um esquema rígido.

> Criação da tabela

Ao fazer o deploy a tabela Cities é criada automaticamente (caso não exista). O único campo obrigatório para um registro é Cidade, que á chave primária da tabela (partition key) e o id dos registros.



> Inserindo itens (insertItem)

Inserindo um registro
Inserindo um novo registro na tabela.



Novo registro inserido na tabela
Novo registro salvo no DynamoDB.



> Pesquisando item pelo id (getItem)

Pesquisando pelo id - Sucesso
Pesquisando um registro pelo id (uma Cidade pelo nome): SUCESSO.



Pesquisando pelo id - Erro
Pesquisando um registro pelo id: ERRO.



> Listando os itens da tabela (fetchItems)

Listando itens da tabela
Lista (trecho) dos itens salvos da tabela.



> Alterando um registro (updateItem)

Modificando registro 1 Modificando registro 2
Modificando registros da tabela.



Pesquisando pelo id - Erro
Tabela atualizada com as alterações.



> Removendo um registro (deleteItem)

Deletando um registro
Deletando um registro.

About

Aplicação serverless para CRUD no AWS DynamoDB. Desenvolvida em python utilizando o Serverless Framework para integrar funções Lambda, API Gateway e DynamoDB

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages