Concrete Logo
Hamburger button

Lambda function com go

  • Blog
  • 13 de Fevereiro de 2019
Share

Este ano o meu objetivo é estudar um pouco mais do mundo .NET, mas em 2018 eu me aprofundei um tanto em golang, então decidi criar algo que me ajudasse e que talves ajude mais alguém: uma lambda function para avisar do meu progresso nos meus objetivos financeiros.

Há algum tempo eu uso um aplicativo que me diz para onde o meu dinheiro está fugindo, por exemplo se estou gastando muito com comida ou saindo muito. Isso me ajuda a focar nos meus objetivos, já que é bom pensar na aposentadoria, né? 😃 O app é o organizze e tem umas features bem legais. Eu uso a versão free, mas estou quase migrando para versão paga. Eles possuem uma API rest na qual eu posso, por meio de uma autenticação basic auth, consumir serviços, buscar minhas despesas mensais e algumas outras coisas. Neste post só vou me ater a esse ponto sobre a API, ok?

Juntando tudo em um lambda só

O código da aplicação que criei é muito simples e com o serverless fica ainda mais fácil. O uso de golang com lambda functions é recente, e se você quise saber mais pode ler 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/

Basicamente eu utilizei o lambda com um agendamento. Isso pode ser feito de duas formas no serverless, usando o rate ou o cron. No print abaixo você pode dar uma olhada no meu serverless.yml. Como eu quero receber apenas um email por dia, eu utilizei a feature rate.

Diariamente, quando essa lambda for executada, eu recupero todo o meu gasto no dia (se existiu). Aí eu faço alguns cálculos para verificar se ainda continuo no caminho ou se estou distante e a porcentagem.

Integrando meu código a uma lambda

Quando você desenvolve interfaces pesando 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 fiz. Eu não quis criar um gist, eu sei que facilita a vida na hora de copiar e colar, mas se você quiser todo o código está no meu repositório.

Mandando tudo para AWS

O serverless tem muitas features que não preciso usar agora, mas ele é uma mão na roda para não precisarmos nos preocupar com aquilo que não faz parte do escopo, afinal só queremos nosso código rodando.

Nesse ponto do meu processo eu só preciso digitar o comando abaixo, mas para você que vai fazer isso tudo pela primeira vez é preciso seguir alguns passos de configuração. Vou deixar aqui um link para facilitar a sua vida. Depois dessa configuração, é só digitar:

Já se foi o disco voador!

🕐 Depois de alguns segundos, é só acessar a aws e você vai ver tudo configurado direitinho.

Na documentação do projeto eu explico passo a passo o 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 bem facilmente criar a sua chave de autenticação e sair desenvolvendo as suas próprias APIs.

Se você tiver alguma abortagem técnica sobre golang ou serverless, fique à vontade! Sanar uma dúvida me ajuda a conhecer cada vez mais.

Se você chegou até aqui, obrigado pela atenção! Aproveite os campos abaixo e até a próxima!

Se você quiser saber mais, aqui tem alguns links úteis:
– Serverless Environment Variables (Medium)

– Sendgrid Go 

Obs: aos 45 do segundo tempo o amigo Raffael Tancman mandou um bizu legal! http://apex.run/, já vou deixar aqui para dar uma estudada.