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!

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade…

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Diogenes Victor Medeiros Rabelo

Written by

Desenvolvedor web — Cristão — Casado — Aprendendo sempre.

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store