Microsserviço usando o AWS API Gateway, o AWS Lambda e o Couchbase

Este blog explicou os seguintes conceitos para aplicativos sem servidor até o momento:

O terceiro blog da série sem servidor explicará como criar um microsserviço simples usando o Amazon API Gateway, o AWS Lambda e o Couchbase. Leia blogs anteriores para obter mais contexto sobre o AWS Lambda. Gateway de API da Amazon é um serviço totalmente gerenciado que facilita aos desenvolvedores a criação, publicação, manutenção, monitoramento e segurança de APIs em qualquer escala. O Amazon API Gateway lida com todas as tarefas envolvidas na aceitação e no processamento de até centenas de milhares de chamadas de API simultâneas, incluindo gerenciamento de tráfego, autorização e controle de acesso, monitoramento e gerenciamento de versões de API. Veja a seguir os principais componentes dessa arquitetura:
serverless-microservice

  • O cliente pode ser curl, AWS CLI, cliente Postman ou qualquer outra ferramenta/API que possa invocar um ponto de extremidade REST.
  • O API Gateway é usado para provisionar APIs. O recurso de nível superior está disponível no caminho /livros. HTTP OBTER e POST são publicados para o recurso.
  • Cada API aciona uma função Lambda. Duas funções Lambda são criadas, lista de livros para listar todos os livros disponíveis e criar livro para criar um novo livro.
  • O Couchbase é usado como um armazenamento de persistência no EC2. Todos os documentos JSON são armazenados e recuperados desse banco de dados.

Vamos começar!

Criar função de IAM

As funções do IAM terão políticas e relações de confiança que permitirão que essa função seja usada no API Gateway e execute a função Lambda. Vamos criar uma nova função de IAM:

--assume-role-policy-document define o documento de política de relacionamento de confiança que concede permissão a uma entidade para assumir a função. trust.json está em github.com/arun-gupta/serverless/blob/master/aws/microservice/trust.json e se parece com isso:

Essa relação de confiança permite que as funções Lambda e o API Gateway assumam essa função durante a execução. Associe políticas a essa função como:

policy.json está em github.com/arun-gupta/serverless/blob/master/aws/microservice/policy.json e se parece com isso:

Essa política generosa permite quaisquer permissões sobre os registros gerados no CloudWatch para todos os recursos. Além disso, ela permite todas as permissões do Lambda e do API Gateway para todos os recursos. Em geral, somente a política necessária seria fornecida a recursos específicos.

Criar funções Lambda

As etapas detalhadas para criar funções Lambda são explicadas em FaaS sem servidor com AWS Lambda e Java. Vamos criar as duas funções Lambda conforme exigido em nosso caso:

Alguns dos principais itens a serem observados nessa função são:

  • Função de IAM microserviceRole criado na etapa anterior é explicitamente especificado aqui
  • O manipulador é org.sample.serverless.aws.couchbase.BucketGetAll classe. Essa classe consulta o banco de dados do Couchbase definido usando o parâmetro COUCHBASE_HOST variável de ambiente.

Crie a segunda função Lambda:

O manipulador para essa função é org.sample.serverless.aws.couchbase.BucketPost classe. Essa classe cria um novo documento JSON no banco de dados do Couchbase identificado por COUCHBASE_HOST variável de ambiente. O código-fonte completo dessas classes está em github.com/arun-gupta/serverless/tree/master/aws/microservice/microservice-http-endpoint.

Recurso do gateway de API

Crie uma API usando o Amazon API Gateway e teste-aCriar uma API para expor uma função Lambda fornecem etapas e explicações detalhadas sobre como usar o API Gateway e as funções Lambda para criar sistemas de back-end avançados. Este blog fará uma rápida descrição das etapas, caso você queira ir direto ao ponto. Vamos criar recursos do API Gateway.

  1. A primeira etapa é criar uma API:

    Isso mostra a saída como:

    O valor de id é o ID da API. No nosso caso, é lb2qgujjif.
  2. Encontre o ROOT ID da API criada, pois ele é necessário para a próxima invocação da CLI do AWS:

    Isso mostra o resultado:

    Valor de id é a ID ROOT. Essa também é a ID PARENT do recurso de nível superior.
  3. Criar um recurso

    Isso mostra o resultado:

    Valor de id é RESOURCE ID (ID do recurso).

A API ID e a RESOURCE ID são usadas para invocações subsequentes da AWS CLI.

Método POST do gateway de API

Agora que o recurso foi criado, vamos criar o HTTP POST nesse recurso.

  1. Criar um POST método

    para ver a resposta:
  2. Defina a função Lambda como destino do método POST:

    Certifique-se de substituir com o ID de sua conta do AWS. O ID da API e o ID do recurso da seção anterior também são usados aqui. --uri é usado para especificar o URI da entrada de integração. O formato do URI é fixo. Essa CLI mostrará o resultado como:
  3. Conjunto tipo de conteúdo da resposta do método POST:

    para ver a resposta:
  4. Conjunto tipo de conteúdo da resposta de integração do método POST:

    para ver a resposta:
  5. Implantar a API

    para ver a resposta
  6. Conceder permissão para que o API Gateway invoque a função Lambda:

    Além disso, conceda permissão à API implantada:
  7. Teste o método da API:

    para ver a resposta:

    Valor de status é 200 e indica que a invocação foi bem-sucedida. Valor de registro mostra a declaração de registro do CloudWatch Logs. Os registros detalhados também podem ser obtidos usando aws logs filter-log-events --log-group /aws/lambda/MicroservicePost.
  8. Esse comando armazena um único documento JSON no Couchbase. Isso pode ser facilmente verificado usando o comando Ferramenta CLI do Couchbase cbqConecte-se ao servidor Couchbase como:

    Criar um índice primário em padrão pois isso é necessário para consultar o bucket sem cláusulas:
  9. Escreva um N1QL para acessar os dados:

    Os resultados mostram o documento JSON que foi armazenado por nossa função Lambda.

Método GET do gateway de API

Vamos criar o HTTP OBTER no recurso:

  1. Criar um OBTER método:
  2. Defina a função Lambda correta como destino do GET:
  3. Conjunto tipo de conteúdo da resposta do método GET:
  4. Conjunto tipo de conteúdo da resposta de integração do método GET:
  5. Conceder permissão para que o API Gateway invoque a função Lambda
  6. Conceder permissão à API implantada:
  7. Teste o método:

    para ver a saída:

    Mais uma vez, o código de status 200 mostra uma invocação bem-sucedida. Os registros detalhados podem ser obtidos usando aws logs filter-log-events --log-group /aws/lambda/MicroservicePost.

Este blog mostra apenas um método simples de POST e GET. Outros métodos HTTP também podem ser facilmente incluídos nesse microsserviço.

Referências de API Gateway e Lambda

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase

Arun Gupta é o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experiência na liderança de equipes multifuncionais para desenvolver e executar estratégias, planejamento e execução de conteúdo, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e é membro fundador da equipe Java EE. Gupta é autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experiência em palestras em mais de 40 países sobre diversos tópicos e é um JavaOne Rock Star há três anos consecutivos. Gupta também fundou o capítulo Devoxx4Kids nos EUA e continua a promover a educação tecnológica entre as crianças. Autor de vários livros sobre tecnologia, corredor ávido, viajante do mundo inteiro, campeão de Java, líder de JUG, membro do NetBeans Dream Team e capitão do Docker, ele pode ser facilmente acessado em @arungupta.

Um comentário

  1. Oi @Arun,

    Podemos usar o SDK do Couchbase NodeJs V2.6.3 com o lamda?

    Estamos recebendo o seguinte erro quando tentamos usar o SDK mais recente.

    "errorMessage": "/var/lang/lib/libstdc++.so.6: a versão `CXXABI_1.3.9′ não foi encontrada (exigida por /var/task/node_modules/couchbase/build/Release/couchbase_impl.node)",

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.