AWS

27 abr, 2017

Meu primeiro Lambda na AWS

Publicidade

É um novo usuário da AWS e tem dúvidas sobre o Lambda? Este artigo 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 no site da Concrete Solutions tem outros artigos sobre Lambda que podem enriquecer seu conhecimento.

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:

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:

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

O Lambda trabalha com triggers, muito úteis e com integrações com outros serviços da AWS, como por exemplo o S3. Veja alguns exemplos aqui. Mas neste momento, não vamos associar a uma trigger.

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

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

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:

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

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

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

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

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

Resultado do teste:

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

Espero que o artigo 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!

***

Artigo publicado originalmente em: https://www.concretesolutions.com.br/2017/04/12/meu-primeiro-lambda/