Evento promovido pela Digital Innovation One - DIO, com patrocínio da Amazon Web Services - AWS.
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.
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.
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.
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.
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.
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.
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.