Como rodar AWS Lambda localmente

Com IntelliJ IDE (JAVA + Spring Cloud Function)

Image for post
Image for post

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”:

Image for post
Image for post

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

Comando: SAM –version no CMD

2. Instalando o Plugin AWS no IntelliJ

No canto superior esquerdo, clique em File -> Settings. Com isso , vai abrir a seguinte janela:

Image for post
Image for post

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:

Image for post
Image for post

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.

Image for post
Image for post

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.

Image for post
Image for post

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:

Image for post
Image for post

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

Image for post
Image for post

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

Image for post
Image for post

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:

Image for post
Image for post

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

Image for post
Image for post

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.

Image for post
Image for post

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

Image for post
Image for post

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:

Image for post
Image for post

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.

Image for post
Image for post
Image for post
Image for post

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

Image for post
Image for post

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…

Diogenes Victor Medeiros Rabelo

Written by

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

Concrete

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

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