Skip to content

andrewmaia/comparador-avanti-lambda

Repository files navigation

Boas práticas para desenvolvimento de lambda functions

Não colocar o codigo de regra de negocio no handler da função lambda, quebrar em subrotinas e chamar a partir do handler.

Inicializar SDK's e conexões com banco de dados fora do handler.

Colocar o minimo de dependecias necessárias porque isso atrasa o carremento da função na aws.

Rodar localmente Lambda Functions

Execute:

sam build

Depois

sam local start-api --port 8080

Intruções para fazer o deploy deste projeto em uma conta AWS

Todo o passo a passo abaixo já foi realizado. Para fazer deploy deste projeto basta configurar as credencias do AWS através do aws configure e apenas rodar o comando:

sam deploy -t codepipeline.yaml --stack-name comparador-avanti-lambda-pipeline --capabilities=CAPABILITY_IAM

Importante: A primeira vez que a pipeline rodar ela irá falhar no primeiro estágio. É necessário entrar manualmente no primeiro estágio e finalizar a configuração da conexão com o GITHUB.

Infra como código para as funções Lambda

Este projeto contém funções AWS Lambda. Para o deploy da funções Lambda através de código (Infra como código) foi utilizado o AWS SAM Cli. Para utilizar o SAM Cli é necessário:

O SAM Cli gera a infraestrura como código no arquivo template.yaml. O arquivo template.yaml é gerado através do comando na raíz do repositório:

sam init

Obs: Este comando já foi executado para este projeto, por isso o arquivo template.yaml já está no repositório.

Deploy das funções Lambda de forma manual em uma conta AWS

O SAM Cli permite fazer o deploy da infra como código das funções lambda do arquivo template.yaml. Para fazer o deploy das funções lambda em um conta AWS é necessário que as credenciais aws já estejam configuradas através do comando:

aws configure

Depois rodar o build para gerar os arquivos que serão utilizados pelo SAM para criar a stack de recursos das funções lambda(Será criada uma pasta oculta chamada .aws-sam com os arquivos):

sam build

A seguir rode o comando que irá criar a pilha de recursos no Cloudformation na conta AWS:

sam deploy --guided

Obs: o atributo --guided habilita o passo a passo e salva o que você selecionar em samconfig.toml, depois de salva as configurações não é mais necessário rodar o comando sam deploy com o atributo --guided

Exclusão das funções Lambda em uma conta AWS

Depois de feito o deploy e criada a stack de recursos das funções lambda é possível excluir essa stack através do comando:

sam delete

Deploy automático de infra e código através de Pipeline

SAM Cli permite criar uma pipeline que automatiza todo o processo de deploy para que não seja necessário rodar os comandos sam build e sam deploy manualmente. Para criar a pipeline, rode o comando:

sam pipeline init --bootstrap

O comando acima irá iniciar um passo a passo para gerar um arquivo de infra como código para gerar uma pipeline na AWS. Ao final do processo é criado o arquivo de infra como código chamado codepipeline.yaml.

Também é criado uma pasta chamada pipeline onde está os arquivos com os comandos que os projetos do codebuild da pipeline irão rodar.

Depois é necessário comitar esses arquivos no repositório.

Obs: Novamente repare que esses arquivos já estão presentes no repositório porque o comando sam pipeline init já foi rodado para este projeto.

Depois rode o comando abaixo para criar a stack da pipeline:

sam deploy -t codepipeline.yaml --stack-name comparador-avanti-lambda-pipeline --capabilities=CAPABILITY_IAM

Depois de criada a stack da pipeline, qualquer alteração no código feitas no repositório das funções lambda e no código de infra do pipeline serão automáticamente atualizadas na AWS. Isso mesmo: A pipeline é capaz de se auto-atualizar.

Importante: A primeira vez que a pipeline rodar ela irá falhar no primeiro estágio. É necessário entrar manualmente no primeiro estágio e finalizar a configuração da conexão com o GITHUB.

Como funciona a pipeline criada?

O código como infra gerado em codepipeline.yaml ira gerar uma pipeline com os seguintes estágios:

Estágio 1 - Detecção de alterações no Repositório: Qualquer commit feito no repositório irá iniciar a pipeline automaticamente.

Estágio 2 - Atualização da Pipeline: É neste estágio que ocorre a auto-atualização da pipeline. Aqui são executadas ações que irão pegar o conteudo do arquivo codepipeline.yaml e republicar a stack que gera a pipeline. Assim qualquer alteração nesse arquivo resultará numa auto-atualização da pipeline.

Estágio 3 - Rodar Unit Tests: Neste estágio é executado o projeto de codebuild que roda os testes através do arquivo buildspec_unit_test.yml da pasta pipeline.

Estágio 4 - Gerar pacote de publicação: Neste estágio é executado o projeto de codebuild que gera o pacote com a stacks das funções lambda a serem publicadas através do arquivo buildspec_build_package.yml da pasta pipeline.

Estágio 5 - Publicar em Prod: Neste estágio é executado o projeto de codebuild que publica na stack de prod as funções lambda através do arquivo buildspec_deploy.yml da pasta pipeline.

Obs: No arquivo codepipeline.yaml é definido mais alguns projetos de build que não são publicados na pipeline porque estão comentados (no caso do integration test).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published