É 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/