Concrete Logo
Hamburger button

Meu primeiro Lambda na AWS

  • Blog
  • 12 de Abril de 2017
Share

É um novo usuário da AWS e tem dúvidas sobre o Lambda? Este post vai te ajudar.

Que tal começarmos explicando ‘O que é Lambda?’

Para resumir, é uma plataforma “Server-less” da AWS que executa funções de código sem a necessidade de ter uma infraestrutura. Ou seja, seu código só será executado quando for invocado, e quando isso acontecer teremos a chamada “Função do Lambda”, usada como serviço stateless. No blog têm outros posts sobre Lambda que podem enriquecer seu conhecimento.

Tá bom, mas quando usar?

É o ideal no caso de uma arquitetura baseada em microsserviços, mas fica uma recomendação: verifique se seu código está coeso e se atende aos requisitos mínimos de patterns e modularização. Nossa! Agora complicou, né?! 

Calma! Resumindo, podemos quebrar nossa aplicação e colocar algum módulo no Lambda. Por exemplo: a granularidade pode separar o módulo de login, mas será que é necessário este serviço rodar 24 x 7 x 360 em uma VM?! Isso é desperdício de recurso, dinheiro gasto sem necessidade. Para resolver podemos usar um Lambda, mas lembre-se: devemos tratá-lo como serviço stateless.

Por se tratar de um serviço gerenciado pela AWS, faz sentido usar o Lambda quando não queremos nos preocupar com infraestrutura e escalabilidade, sem esquentar com a atualização de Sistema Operacional, bugs etc. Você só precisa determinar a quantidade de memória e o Lambda cuida do resto: CPU, Disco e IO.

OBS: Obtenha métricas ou levante todos os requisitos necessários para determinar a melhor arquitetura.

Dois exemplos simples de uma arquitetura usando Lambda:

image02

image01

Se quiser ver alguns cases de sucesso clique aqui.

E o custo?

Isso é o mais interessante. Muitas vezes esse serviço será gratuito. Sério? Sim. A AWS disponibiliza para alguns serviços um “nível gratuito”, no caso do Lambda é até um milhão de execuções (invocação) e 400.000 GB/segundo de tempo de memória usada por mês. Excedendo o “nível gratuito” você paga pelo tempo de execução, que não soma com o tempo de iniciar a “instância” e sim a partir do momento e que seu código inicia e termina. É demais!! Mas lembre-se: seu código tem que ficar armazenado em algum lugar e o Lambda armazena no s3, o que pode gerar um custo baixo. Para saber mais detalhes clique aqui.

Nossa, marotão!
Mas o que eu preciso para criar um Lambda?

Aqui tem uma parte chatinha, mas muito importante. Você deve criar policies e associar a uma role, com os níveis de permissões necessários, o que garante ainda mais segurança e deixa uma arquitetura muito mais justa. Quer mais detalhes? Clique aqui.

Como nada é perfeito, vejamos alguns contras:

– Não tem suporte para todas linguagens;
– Não está disponível em todas regiões da AWS;
– Possui limite de memória e isso pode implicar diretamente na performance dependendo da sua aplicação.

Criando meu primeiro Lambda

Acesse o console da AWS e localize o serviço Lambda:

image09

A AWS fornece “blueprint” e templates para auxiliar. Selecione “Blank Function”:

image14

O Lambda trabalha com triggers, muito úteis e com integrações com outros serviços da AWS, como por exemplo o S3. No nosso blog têm alguns exemplos, é só clicar aqui. Mas neste momento não vamos associar a uma trigger.

image10

Adicione as configurações necessárias conforme exemplo abaixo:

image11

Coloque o código (disponibilizado no repositório) conforme exemplo:

image05

Na última release da AWS o Lambda recebeu algumas funcionalidades, e uma delas é a variável de ambiente. Selecione a Role (criada para o Lambda), quantidade de memória e tempo para execução do código, com limite até cinco minutos. Exemplo:

essa

“DLQ Resource”: pode ser usado para falhas. Neste caso, ela será encaminhada para uma fila para ser reprocessada mais tarde ou você poderá receber uma notificação por e-mail.

Network: selecione a VPC criada para exibir as subnets. É recomendado adicionar duas subnets privadas e de zona de disponibilidade diferentes. Também é importante lembrar que o Lambda é um recurso usado em back-end, por isso não é necessário adicionar subnet pública. Selecione um ou mais “Security Groups”:

essa

Integração com KMS: é possível criptografar as variáveis de ambiente. Você pode associar um KMS em uso na conta, finalizado a configuração aperte “Next”:

essa

Valide as configurações e selecione “Create Function”:

essa

Após criado, podemos testar nosso código. Na opção “Actions”, selecione “Configure test event”:

essa

Coloque os dados abaixo e selecione a opção “Save and test”:

essa

Resultado do teste:

essa

Faça outro teste com seu nome e sobrenome e verifique o resultado. 

Espero que o post tenha ajudado os iniciantes no mundo do cloud computing com o Lambda AWS! Tem alguma dúvida ou contribuição a dar? Aproveite os campos abaixo!

É DevOps e quer trabalhar em um time ágil e multidisciplinar? Clique aqui.