An Interest In:
Web News this Week
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
Criando uma AWS lambda com Serverless framework
O que so AWS Lambda?
As lambda da AWS so funes orientadas a eventos por exemplo: voc pode executar a funo atravs de uma requisio HTTP, voc pode executar ela atravs de outros servios da AWS como S3 Bucket, existem vrias maneiras de executar essas funes.
A Lambda executada sem servidor que quer dizer que voc no precisa gerenciar a infraestrutura de servidores e voc s vai pagar por cada execuo da funo que pode reduz custos.
O que serverless framework?
Serverless Framework uma forma de facilitar a criao de ambientes serverless como: construir APIs, configurar toda a parte de politicas e permisses, provisionar ambientes diferentes para cada etapa do desenvolvimento, configurar e adicionar outros servios da AWS, fazer deploy mais automatizados.
Pr-requisitos
Antes de comear voc precisa ter uma conta na AWS, eles possuem servios gratuitos mas no momento do cadastro eles pedem seu carto de crdito s para verificao, mas sempre fique atento aos custos dos servios que voc est utilizando para no exceder o limite gratuito.
Voc precisa baixar a CLI da AWS e para configurar o login da CLI voc pode seguir esse Tutorial CLI da prpria AWS para criar um perfil administrador em sua conta na AWS para ter acesso aos servios AWS no terminal e por fim no terminal voc pode executar o Comando aws configure
que vai te pedir algumas informaes referente ao perfil que voc criou na AWS.
Por ltimo tenha instalado na sua mquina o nodejs(estou utilizando a verso 16.14.0) e serverless framework(estou utilizando a verso 3.14.0).
Criando a estrutura do projeto
Para criar o projeto abra o terminal e execute o comando abaixo:
serverless create --template aws-nodejs --path petzinho
Esse comando cria um projeto serverless utilizando o template da AWS para Nodejs e o path o nome da aplicao no meu caso o nome petzinho.
Abrindo o projeto no seu editor voc ir encontrar uma estrutura assim:
- .gitignore: so arquivos e pastas que no vo ser enviados para o github
- handler.js: uma funo j criada pelo serverless
- serverless.yml: aonde fica toda a configurao da AWS
No arquivo serverless.yml ele tem essa estrutura:
service: petzinho # nome do servioframeworkVersion: '3' # verso do frameworkprovider: name: aws # nome do provedor poderia ser azure ou google runtime: nodejs12.x # verso do nodejsfunctions: # as funes lambda hello: # nome da funo handler: handler.hello # aonde est o arquivo que ser executado
Na linha handler.hello o handler o nome do arquivo e o hello a funo dentro do arquivo que ser executada. Vamos dar uma ajustada nesses arquivos a seguir.
Podem deletar o arquivo handler.js(iremos criar o arquivo em outro local), crie uma pasta utils na raiz do projeto e dentro dela crie um arquivo pets.json com esse contedo que vai servir como dados para nossa API consumir: pets.json.Crie uma pasta functions na raiz do projeto e essa pasta ir conter nossas funes, dentro da pasta functions crie um arquivo listarPets.js nesse arquivo vamos criar uma funo:
"use strict";const pets = require("../utils/pets.json");module.exports.handler = async (event) => { try { const result = pets.data; return { statusCode: 200, body: JSON.stringify( { pets: result, } ), }; } catch (error) { return { statusCode: 500, body: JSON.stringify( { error: error.message, } ), }; }};
Toda funo recebe um event esse event possui algumas informaes como body da requisio, headers e etc.
No cdigo acima pegamos os dados dos pets cadastrados e atribumos a uma varivel result no retorno da funo usamos um padro que o prprio serverless, nele passamos o statusCode que status de retorno da nossa aplicao, existem vrios status que podem ser usados em diferentes ocasies, no body enviamos uma resposta para o usurio pode ser uma mensagem ou objeto e caso acontea algum erro na nossa API o erro ir cair no catch aonde retornamos o erro formatado para o usurio.
No arquivo serverless.yml vamos implementar a nova funo que criamos agora pouco. Na parte das functions colocamos:
functions: # as funes lambda listarPets: # nome da funo handler: functions/listarPets.handler # aonde est o arquivo que ser executado events: - http: path: listarPets # nome da nossa rota method: get # metodo HTTP
Rodando localmente
Com nossa rota criada vamos rodar ela localmente e para isso precisamos de um plugin do serverless framework. O plugin que vamos utilizar serverless-offline, para instalar ele super simples. Dentro da pasta do seu projeto vamos inicializar o Nodejs com npm:
npm init -y
Vamos instalar o serverless-offline:
npm install serverless-offline --save-dev
Vamos incluir o plugin no arquivo serverless.yml:
plugins: # lista de plugin - serverless-offline # rodar o projeto na sua maquina offline
no arquivo package.json voc pode incluir um script para rodar a API localmente:
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "sls offline start"}
no terminal voc pode rodar o comando:
npm run start
Pronto sua aplicao vai estar rodando localmente na porta 3000 e para testar voc pode utilizar o Postman, curl ou Insomnia, o resultado final ser esse:
Deploy para AWS:
O deploy para AWS feito atravs de um comando, para isso colocaremos mais um script em nosso package.json para subir em ambiente de desenvolvimento ou voc pode escolher qual ambiente subir:
"deploy:dev": "sls deploy --stage dev"
Lembrando que cada servio da AWS tem custo e tem uma parte gratuita fique sempre atento a isso.
Para subir para AWS executamos o comando no terminal:
npm run deploy:dev
Demora um pouco para terminar de executar porque ele cria toda a estrutura e tudo que precisa para nossa API funcionar, voc pode acompanhar o andamento no cloudformation dentro do console da AWS, no final da execuo ele mostra um endpoint acessando esse endpoint no curl, postman ou insomnia teremos o mesmo resultado que tivemos rodando localmente.
Para deletar tudo que subimos voc pode esvaziar o s3 bucket que foi criado e depois deletar o cloudformation com isso ele vai deletar tudo relacionado a API que a gente subiu.
Final
O projeto final est exemplo-lambda.
Essa foi apenas uma introduo as lambdas da AWS, existem muitas coisas que podemos fazer e utilizar da melhor forma em cada projeto.
Espero ter ajudado de alguma forma e muito obrigado por ler .
Original Link: https://dev.to/janapc/criando-uma-aws-lambda-com-serverless-framework-54ph
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To