Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 20, 2022 12:54 am GMT

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:

Postman aberto com a rota  http://localhost:3000/dev/listarPets e o resultado  uma lista de pets com informaes sobre id, raa e descrio

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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To