Como rodar AWS Lambda localmente
Com IntelliJ IDE (JAVA + Spring Cloud Function)

Durante o processo de testes para a AWS Lambda, eu tive alguns problemas, tipo:
· Configuração complexa;
· Demora no deploy do arquivo jar;
· Problemas que só aparecem em “produção”;
· Dependendo da implementação, não há como testar localmente;
Se você também já passou por isso, vem comigo que vou tentar mostrar um tutorial de como passei por esses obstáculos. Bora lá?
Pré-requisitos para fazer esse tutorial:
· Ter instalado o IntelliJ IDEA;
· Ter instalado o Docker;
· Ter implementado a segunda parte do tutorial sobre como criar AWS Lambda com Spring Cloud Function, neste post;
· Ter credenciais válidas AWS (accessKey, secretKey e/ou sessionToken);
Passo a passo:
1. Instalando o SAM CLI
O AWS SAM fornece uma ferramenta de linha de comando, a AWS SAM CLI, para facilitar a criação e o gerenciamento de aplicativos sem servidor. Você precisa instalar e configurar algumas coisas para usar a CLI da AWS SAM. Para instalar o SAM CLI no Windows é muito simples: basta acessar este link e ir até o “Step 4” na página. Depois, clicar no link “64 bits”:

Com isso, o download do arquivo executável deve iniciar e, depois dele finalizado é só clicar no arquivo e executá-lo. Siga os os passos (NNF — next, next, finish) e, se tudo ocorrer bem, ele vai estar pronto para uso.
Para testar, basta abrir o terminal de comandos (CMD) e executar o seguinte comando:
SAM –version

2. Instalando o Plugin AWS no IntelliJ
No canto superior esquerdo, clique em File -> Settings. Com isso , vai abrir a seguinte janela:

Como na imagem, clique em Plugins e, na barra de pesquisa, digite AWS Toolkit e instale. Depois dessa instalação é recomendável que reiniciemos a IDE para que o plugin possa funcionar corretamente.
3. Configurando o arquivo de acesso à AWS
No canto inferior direito temos um menu “dropdown” da seguinte maneira:

Com o clique e a expansão do menu, clique no botão “All Credentials” -> “Edit AWS Credential file(s)” ou somente “Edit AWS Credential file(s)”, dependendo se uma configuração já foi feita anteriormente ou não.

Neste momento, a própria IDE vai abrir o arquivo config, que se encontra na pasta do usuário (para Windows) -> .aws (Ex.: C:\Users\{usuário}\.aws). Ao abrir o arquivo podemos inserir nossas credenciais AWS.

Depois de inserir as credenciais, agora temos que escolher a região. No mesmo menu “dropdown” que acessamos para configurar as credencias, clique e selecione uma região, como demonstramos na imagem abaixo:

Pronto, agora temos nossa configuração feita e pronta para uso.
4. Dando permissão ao Docker
Ainda precisamos dar permissão ao Docker para montar contêineres a partir do nosso diretório e seus subdiretórios, pois a AWS Toolkit vai montar contêiner com nosso projeto.
Ao abrir o Docker (presumo que já esteja logado) vamos clicar na engrenagem

(Settings). No modal que abrir, clique em “Resources” -> “FILE SHARING”.

Agora é só clicar no botão de adicionar (botão azul com um sinal de + no centro) e selecionar o diretório no qual está o nosso projeto. Veja o exemplo:

Após selecionar a pasta, basta clicar no botão “Apply & Restart” para aplicar essa permissão.

Quase tudo pronto para nosso teste local! Agora vamos configurar a chamada do Lambda.
5. Configurando a chamada ao Lambda
Vamos abrir nosso projeto e nossa classe Hanlder. Se você não sabe do que estou falando, veja o GetViaCepHandler do nosso projeto feito neste post aqui.

Vamos expandir esse menu (sublinhado de vermelho na imagem) e clicar em “Edit Configurations…”

Nossa configuração já vem pré-configurada, já com Runtime e o Handler configurados. Precisamos apenas informar nosso input, na parte inferior. Para isso, é só clicar em Text e informar o nosso Json (equivalente ao objeto que esperamos receber). Segue o exemplo:

Agora clicamos em “Apply” e depois em “OK”.
6. Executando o AWS Lambda
Agora é só executar o nosso Lambda. Você pode clicar no botão de execução ao lado nome da classe ou no menu superior.


Se tudo ocorrer bem, teremos um resultado parecido com esse:

E é isso! Ficou alguma dúvida ou tem alguma sugestão de passo que não está nesse tutorial? Aproveite e deixe um comentário. Ou se você quiser aprender na prática esse tipo de conteúdo aqui com a gente na Concrete é só saber mais sobre a gente neste link e se candidatar a uma de nossas vagas. Vamos aprender juntos!