No meu último artigo eu compartilhei com vocês um dos meus objetivos do ano de 2019, mas isso não me faz descartar o que já vinha fazendo, então só para não deixar a peteca cair, resolvi criar algo que me ajudasse e talvez ajudasse outras pessoas. Nessa pegada acabei criando uma lambda function para me avisar se estou indo bem nos meus objetivos financeiros.
Há algum tempo eu uso um aplicativo para me informar onde está acontecendo a minha fuga de dinheiro, se estou gastando muito com comida, ou saindo muito. Isso me ajuda a permanecer nos meus objetivos, já que na economia atual acho que quando eu for me aposentar só vão apertar a minha mão e agradecer.
O aplicativo se chama Organizze – ele tem umas features bem legais. Eu uso a versão free do app, mas estou quase migrando para versão paga. Bem que eles podiam me dar uma conta. Não sou blogueiro, mas mereço, hein!
Eles possuem uma api rest onde eu posso, através de uma autenticação basic auth, consumir serviços, buscar minhas despesas mensais e outras coisas mais. Neste artigo só vou me ater a esse ponto sobre a api.
Juntando tudo em um lambda só
O código da aplicação que foi criado é muito simples, e utilizando serverless deixa ainda mais. O uso de golang com lambda functions é recente – você pode ler um pouco mais sobre isso nos links abaixo:
- https://aws.amazon.com/blogs/compute/announcing-go-support-for-aws-lambda/
- https://serverless.com/blog/framework-example-golang-lambda-support/
No segundo artigo você pode ver como é simples fazer o deploy da sua primeira lambda. Basicamente eu utilizei o lambda com um agendamento. Isso pode ser feito de duas formas no serverless, usando rate e usando cron.
No print abaixo você pode dar uma olhada no meu serverless.yml. Como eu quero receber apenas um e-mail por dia, eu utilizei a feature rate.
Diariamente, quando essa lambda for executada, eu recupero todo o meu gasto no dia – se existiu e faço alguns cálculos para verificar se inda continuo no caminho ou se estou distante X por cento.
Integrando meu código a uma lambda
Quando você desenvolve interfaces pensando que ela pode ser integrada com qualquer coisa, você acaba concebendo seu código de uma forma mais organizada. Acabei não falando, mas o nome do projeto é “Tio Patinhas“, já que o foco é juntar grana.
No print abaixo você pode ver a implementação que foi feita (não quis criar um gist). Todo o código está no meu repositório.
Mandando tudo para aws
O serverless possui muitas features que não preciso usar agora, mas ele é uma mão na roda, para eu não me preocupar com aquilo que não faz parte do meu escopo, eu só quero meu código rodando.
Nesse ponto do meu processo, eu só preciso digitar o comando a baixo, mas para você que vai fazer isso tudo pela primeira vez, você precisa seguir alguns passos de configuração. Vou deixar aqui um link para facilitar a sua vida, mas para mim, que já estou com tudo pronto, basta digitar:
$ serverless deploy
Depois de alguns segundos, basta você acessar a AWS e verificar tudo configurado direitinho.
Na documentação do projeto eu explico tudo passo a passo do que precisa ser feito além do serverless. Eu utilizei a sendgrid para fazer o disparo do e-mail – é de graça, mas talvez eu mude para a própria Amazon.
Na documentação da Organizze você consegue facilmente criar a sua chave de autenticação e sair desenvolvendo suas próprias apis.
Se você tiver alguma abortagem técnica que gostaria de fazer sobre golang ou serverless, não se sinta acanhado a fazer. Sanar uma dúvida me ajuda a conhecer cada vez mais.
Se você chegou até aqui, obrigado pela atenção!
Links úteis:
- https://medium.com/@purplecones/serverless-environment-variables-4ec818f67388
- https://github.com/sendgrid/sendgrid-go
Aos 45 do segundo tempo o amigo Raffael Tancman mandou um link legal! Já vou deixo aqui para dar uma estudada: