Fala pessoal! Tudo bem?
A intenção deste artigo é ajudar vocês a configurarem o Serverless Framework com o AWS Lambda e utilizarmos isso para agendarmos postagens no Jekyll num próximo artigo.
O que é serverless?
Serverless é uma arquitetura de sistema onde, como o próprio nome diz, "não há servidor".
Em outras palavras, não precisamos gerenciar uma máquina e sermos responsáveis por sua manutenção, segurança e/ou custos decorrentes do tempo que os seus recursos não estão sendo utilizados.
Nesse modelo, o provedor na nuvem é o responsável por executar pedaços de códigos com recursos alocados dinamicamente, cobrando apenas pelos recursos realmente usados na execução.
Geralmente, o código é executado em containers stateless, ou seja, esses containers não armazenam estado, sendo que sua função será executada e após a requisição ser concluída, o container em que ela estava sendo hospedada será apagado.
Esses containers podem ser ativados de diversos modos, como por exemplo:
- Requisições HTTP
- Eventos de banco de dados
- Serviços de filas
- Alertas de monitoramento
- Upload de arquivos
- Eventos agendados
E muitos outros.
Pelo fato do código enviado ao provedor ser escrito em forma de funções, muitas vezes a arquitetura serverless é referenciada como FaaS ("Functions as a Service", ou Funções como Serviço).
Entre os maiores provedores de FaaS do mercado atualmente, temos:
- AWS, com o AWS Lambda
- Microsoft Azure, com o Azure Functions
- Goodle Cloud, com o Cloud Functions
Bom, eu resumi do jeito mais simples possível, mas se quiser mais informações sobre essa arquitetura, recomendo este link aqui.
Neste tutorial, iremos configurar o Serverless Framework (um conjunto de ferramentas gratuito para construirmos aplicações serverless) para trabalhar com o AWS Lambda da Amazon.
O que é AWS?
Segundo a Wikipédia:
‘‘AWS, ou Amazon Web Services, é uma plataforma de serviços de computação em nuvem oferecida pela Amazon.com
Simples, não é? Pois bem, o AWS Lambda, que iremos configurar a seguir, é o serviço de serverless oferecido pela plataforma.
Se ficou curioso por informações mais detalhadas sobre o serviço, recomendo este link.
Passo a passo
Antes de começarmos, saiba que o passo a passo que fiz é baseado na documentação oficial do Serverless Framework.
Outra coisa importante é que você irá precisar de um cartão de crédito para criar uma conta na AWS, mas relaxa, nada será cobrado, pois o AWS Lambda faz parte do Free Tier oferecido pela Amazon. 🙃
Então vamos lá:
1. Crie uma conta na AWS
Acesse este link, preencha o formulário, e quando for pedido para escolher o plano, selecione o Basic Plan (o gratuito).
2. Crie um usuário e atribua as permissões
2.1. Com o painel da AWS aberto, clique em Serviços, no canto superior esquerdo:
2.2. No menu, vá para Security, Identity, & Compliance > IAM
2.3. Na tela seguinte, clique no botão Add User
2.4. Crie um username para identificar o usuário que irá usar o serviço e marque o tipo de acesso para Programmatic access. Depois clique em Next
2.5. Na tela seguinte você vai precisar criar uma política de permissões para este usuário.
Clique em Attach existing policies directly, depois em Create policy.
2.6. Na janela que se abrir, clique na aba JSON, copie e cole o conteúdo desse gist.
2.7. Revise os dados. Aqui você pode dar um nome pra essa política de permissões e clicar em Create Policy.
2.8. Volte a tela para adicionar usuário, procure pela política de permissões que você acabou de criar, selecione e clique em Next
2.9. Aqui pode deixar tudo em branco e clicar em Next
2.10. Revise tudo e clique em Create user
2.11. Finalmente, copie o Access key ID e a Secret access key para algum lugar temporário.
‘‘Nota: Você não conseguirá voltar para ver essa tela novamente, por isso tenha certeza de que copiou os dados corretamente. Caso os perca, deverá criar um novo usuário mais uma vez.
Feche a janela, e pronto! Seu usuário está configurado. Moleza 😄 #sqn
3. Adicione as chaves de usuário nas variáveis de ambiente
Como último passo para termos o Serverless Framework configurado com a AWS, precisamos adicionar as chaves geradas nas variáveis de ambiente:
1$ export AWS_ACCESS_KEY_ID=<access-key-id> 2$ export AWS_SECRET_ACCESS_KEY=<secret-access-key>
Antes de ir embora
Um desabafo, faz tempo que não publico nada por aqui e estava sentindo falta disso. Por isso, se algo não ficou claro o suficiente ou se surgir algo com que eu possa ajudar, é só comentar aqui embaixo.
Espero que tenham gostado, e no próximo artigo pretendo ensinar a como usar essas configurações para fazer deploy de uma função que publica posts agendados no Jekyll.
Até breve!
‘‘O homem superior atribui a culpa a si próprio; o homem comum aos outros.— Confúcio