Este repositório consiste de uma API feita em Node.js que usa serverless framework, AWS API Gateway, Lambdas e DynamoDB.
Na branch complete
você encontra a versão final deste workshop.
Sugiro que você não pare por aqui, durante o workshop passamos muito brevemente por cada ferramenta, sem entrar em detlhes sobre como ela funciona. Pegue um tempo para estudar cada uma delas individualmente e como você pode tirar o máximo de proveito dela.
O foco do workshop foi rodar a aplicação direto na AWS, portanto não abordamos como rodar local. Para saber como você pode rodar local, olhe a sessão Rodando localmente. Tudo foi feito em um Mac, no Linux deve ser bem parecido e no Windows deve ser possível fazer o equivalente com algumas adaptações.
- Node.js - Há um arquivo
.nvmrc
no projeto caso queira realizar a instalação usando o nvm. - Uma conta na AWS - Se você ainda não tem conta, vai precisar de um cartão de crédito, mas não se preocupe, existe um free tier para experimentar os recursos.
- Serverless framework - Pode ser instalado usando o comando
npm install -g serverless
- Crie uma conta de acesso programático com acesso de admin no IAM da AWS e pegar a chave e a secret.
- Configure o serverless para usar essa conta, isso pode ser feito usando o serverless:
serverless config credentials -o --provider aws --key <chave> --secret <secret>
- Depois de configurar o
serverless.yml
com os recursos desejados, fazer deploy usando o comandoserverless deploy
Ao fazer o deploy, é interessante olhar o que foi criado nos seguintes serviços no console:
- Cloud Formation
- S3
- Lambda
- API Gateway
- DynamoDB
E caso queira ver os logs das Lambdas, vá até o detalhe de uma delas e na aba Monitoramento
, clique em Visualizar logs no CloudWatch
.
Durante o workshop, sempre que fazíamos uma modificação, fazíamos o deploy para testar. Em aplicações reais isso se torna inviável, portanto, para conseguir testar com mais facilidade, sugiro o estudo de duas ferramentas:
- Serverless Offline Plugin - emula lambdas e API Gateway na sua máquina, subindo um servidor para gerenciar as requisições.
- Serverless DynamoDB Plugin - plugin do serverless para rodar o DynamoDB localmente. Também existe a opção de usar Docker para rodar o DynamoDB.
Eu escrevi um artigo baseado no workshop e que tem algumas das informações que falei durante ele, para acessar clique aqui.
- Como criar um usuário no IAM - Caso você não tenha familiaridade com a criação de usuários na AWS usando IAM
- Serverless Express Plugin - Caso tenha interesse em trabalhar com Express ou Koa, é possível usando um plugin do Serverless. Porém vale sempre pesar o que é melhor para o seu caso de uso, por exemplo, o uso do Express pode aumentar o seu tempo de cold start um pouco.
- Serverless Middleware Plugin - Plugin para a criação de middlewares usando Serverless
Caso tenha qualquer dúvida, problema ou sugestão, fique à vontade para criar uma issue neste repo, e eu responderei assim que possível.