Eae, bora falar um pouco sobre Lambdas em Go?
A AWS recentemente depreciou o runtime go1.x e recomenda a todos migrarem para o provided.al2. Link
Com isso em mente resolvi criar um projetinho simples fazendo desde o Github Actions, provisionamento de infra com o Terraform e o deploy da Lambda em ARM64.
A primeira coisa que eu fiz foi criar o código da Lambda em Go. Um código bem simples apenas para printar um hello world.
Depois de criado o código da Lambda, é necessário rodar o comando para criar o módulo Go.
Os arquivos go.mod e go.sum foram criados.
Depois de criada a Lambda, vamos partir para o Terraform.
Vamos utilizar ele para provisionar a infra do projeto.
Repare que utilizamos o runtime provided.al2023, que é o runtime mais novo criado pela AWS e também o architecture arm64.
Depois do arquivo de terraform criado, vamos criar o Github Actions para funcionar como nosso CI/CD.
Crie um arquivo chamado pipeline.yml dentro da pasta .github/workflows.
Como vamos usar uma Lambda em ARM64, temos algumas peculiaridades no momento de fazer o build. Temos que passar as variáveis GOOS=linux GOARCH=arm64.
Agora no job de deploy vamos fazer o terraform init, format check, validate, plan e apply, para validar se tudo está correto e realmente provisionar a infra.
Outro ponto importante, para conseguirmos fazer todo o provisionamento na AWS precisamos passar para o Terraform algumas chaves de acesso. Como não é nada recomendado deixar as chaves no arquivo do Actions, Eu acabei deixando elas no secret do Github.
Depois do push com as alterações a pipeline vai ficar assim:
Caso tudo funcione perfeitamente(eu sei, eu sei... nada funciona de primeira rsrs) a Lambda será criada na AWS.
E... voilà, Lambda funcionando!
Todo o código está nesse repo: https://github.com/FRSiqueiraBR/go-terraform-lambda
Criei essa Lambda pra usar de base para outros projetos pessoais, esperam que tenham gostado, deixem sugestões e melhorias nos comentários ✋. Bye!
Top comments (2)
Curti que vai direto ao ponto! Vou deixar como referência para futuros projetos e futuros estudos! Valeu por compartilhar, mano!!
Muito bom e direto. Curti demais. Parabéns.