fbpx
Como construir sua primeira API na nuvem com o Serverless Framework
Voiced by Amazon Polly

Neste tutorial, vamos aprender como disponibilizar uma API na nuvem, utilizando serviços Serverless da AWS. Ao final, teremos uma API pronta para receber requisições REST, retornando um valor estático de “Hello World”, para demonstrar o quão simples pode ser o processo de disponibilização da aplicação. Vamos mostrar também como realizar deploy em diferentes ambientes.

Para atingir esse objetivo, vamos utilizar o Serverless Framework, uma ferramenta que facilita o desenvolvimento, deploy, manutenção e segurança de aplicações serverless.

Antes de começar, você deverá ter instalado o serverless framework e possuir um usuário definido em uma conta da AWS para realizar o tutorial.

Definindo seu profile

Profile (ou perfil nomeado) é uma coleção de configurações e credenciais que você pode aplicar a um comando da Interface de Linha de Comando da AWS (AWS CLI), e, para o nosso caso, também para o Serverless Framework. Primeiramente, vamos defini-lo com uma chave de acesso para fazer o vínculo a conta AWS.

As chaves de acesso são credenciais de um usuário, que permitem realizar solicitações programáticas na AWS CLI ou na API da AWS. Ela é composta por ID de chave de acesso (por exemplo, AKIAIOSFDDMN7EXEMPLO) e uma chave de acesso secreta (por exemplo, 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). Um detalhe muito importante, você deve armazenar suas chaves de acesso de forma segura e nunca compartilhá-las ou gravá-las em código.

Caso ainda não tenha uma chave de acesso, para obtê-la, entre no console da AWS, clique no seu nome de usuário e selecione “Minhas Credenciais de Segurança”.

Você será direcionado à uma página do serviço IAM. Clique no botão “Criar chave de Acesso”. Em tela será disponibilizado o ID da chave de acesso.

Clique em “Mostrar chave de acesso secreta”. Guarde ambos os valores em um local seguro, este será o único momento em que sua Chave de acesso secreta será visível no console, caso perca, deverá criar uma chave de acesso nova.

Agora, vamos definir nossas credenciais. Em seu terminal, execute o seguinte comando, substituíndo pelo ID da sua chave de acesso e pela sua Chave de acesso secreta:

Pronto! Seu profile my-aws-profile está definido!

Agora, podemos começar a interagir com a sua conta AWS e criar nossa aplicação.

Criando a sua primeira API

Em seu terminal, crie um diretório para o projeto e acesse-o.

Ótimo! Vamos agora criar os arquivos da estrutura do projeto, primeiramente criaremos o arquivo serverless.yml. Esse arquivo em um projeto do Serverless Framework, contém as especificações da aplicação. Além disso, vamos criar também src/item.py com o código da função que será executada.

No arquivo serverless.yml, vamos definir o nome do serviço como first-api-service, indicamos que vamos utilizar python 3.7 e que nossos recursos estarão alocados na AWS na região us-east-1 (Norte da Virgínia). Além disso, vamos também definir nosso ambiente padrão como dev (desenvolvimento).

O conteúdo do arquivo item.py em src será executado no AWS Lambda, um serviço serverless que executa código sob demanda, sem alocação prévia de recurso. Vamos estabelecer que essa função Lambda apenas retorne uma mensagem de sucesso quando for executada. No código fonte, ela se chamará hello_world.

Para nossa primeira API ficar disponível e começar a funcionar, só falta informar o vínculo no framework, definir mais alguns atributos sobre seu funcionamento e realizar o deploy. Adicione o trecho de código abaixo no fim do arquivo serverless.yml.

Aqui, informamos as especificações da função para serem executadas no AWS Lambda:

  • hello: Nome da referência da nossa função no serverless framework.
  • handler: Aponta qual função deve ser executada, no nosso caso, é a função hello_world em src/item.py.
  • runtime: Linguagem de programação utilizada na função.
  • memorySize: Quantidade máxima de memória que a função lambda poderá utilizar (em kilobytes).
  • timeout: Tempo limite de execução da função lambda (em segundos).
  • events: Configuração que define a integração com o serviço API Gateway, onde definimos que será chamado pelo método GET, no path /hello, e que será integrado com a execução de uma função lambda.

Então, na raíz do projeto, execute em seu terminal, o comando abaixo para realizar o deploy da aplicação, repare na especificação do profile que definimos anteriormente para gerar a criação dos recursos na sua conta.

Caso execute tudo corretamente, você receberá um resultado da execução com um trecho parecido com esse aqui:

Pronto! Sua API já está disponível, e com pouquíssimas linhas de código e configuração!

Para realizar o teste, basta fazer uma requisição GET no endpoint informado acima e você receberá o retorno da sua função lambda.

Segurança e Manutenção do Código

Para deixar a sua API segura, é importante utilizar uma chave de autorização de API, de forma a aceitar apenas requisições autenticadas. Para isso, confira o tutorial Como adicionar uma chave de autorização de API com o Serverless Framework.

Além disso, para manter o código de maneira parametrizada, o Serverless Framework permite a utilização de variáveis no arquivo de configuração, facilitando a integração entre os diferentes recursos utilizados e possibilitando criar recursos de diferentes ambientes para a mesma conta. Para aprender a utilizar variáveis e como realizar deploy dessa aplicação para ambientes distintos, confira o artigo Como usar Variáveis com o Serverless Framework.

Conclusão

Em resumo, o Serverless Framework abstrai a criação de um script de CloudFormation, e mantendo simples referências e poderosos plugins para manter o ambiente de desenvolvimento na nuvem de forma muito prática.

No diagrama abaixo, temos a abstração de todo o procedimento demostrado:

Vamos também verificar como ficaram os recursos criados no console da AWS. No seu console, clique em Serviços e selecione Lambda. Na seção de funções você encontrará disponível first-api-service-dev-hello e fisrt-api-service-prod-hello, que é a combinação do nome do serviço (first-api-service), o ambiente (dev ou prod), e o nome da função que foi definida no framework (hello). Dessa maneira evita-se que tenhamos conflitos em nomes de funções definidas com o mesmo nome para serviços e ambientes distintos. Acessando a função lambda, você terá acesso ao código fonte que utilizamos anteriormente.

Novamente selecione Serviços, e dessa vez, selecione API Gateway. Na tela de APIs, verificaremos uma api que foi criada para o nosso serviço para cada um dos ambientes. Acessando a API.

E, pra finalizar, caso queira remover toda a stack de serviços que criou pelo framework, sem passar pelo transtorno de ter que entrar no console e apagar cada recurso manualmente, basta executar os comando abaixo.

Para aprimorar a API, integrando com o Banco de Dados DynamoDB para recuperar, persistir e deletar itens da tabela com os métodos GET, POST e DELETE, confira o artigo Integração de API com DynamoDB utilizando o Serverless Framework.

Para baixar todo o código deste tutorial, acesse este link.

Entre em Contato

Para entender melhor como funciona o Serverless Framework e utilizá-lo seguindo as melhores práticas, entre em contato com nossos especialistas.