Criar uma API com o AWS API Gateway e o Atlas Data API
Avalie esse Início rápido
Este tutorial discute a versão de visualização do Atlas Data API, agora disponível ao público com mais recursos e funcionalidades. Saiba mais sobre a versão GA aqui.
Este artigo mostrará a criação de uma API usando o Amazon API Gateway na frente da MongoDB Atlas Data API. Ao integrar-se ao Amazon API Gateway, é possível, mas indesejável, usar um driver, pois os drivers são projetados para durar muito tempo e manter o pool de conexões. O uso de funções sem servidor com um driver pode resultar em uma queda no desempenho – se o driver for instanciado em cada chamada e precisar ser autenticado – ou números excessivos de conexões se o mecanismo subjacente persistir entre as chamadas, pois você não tem controle sobre quando os containers são reutilizados ou criado.
AAtlas Data API do MongoDB é uma API baseada em HTTPS que nos permite ler e escrever dados no Atlas onde uma biblioteca de drivers do MongoDB não está disponível ou não é desejável. Por exemplo, ao criar microsserviços sem servidor com o MongoDB.
AWS (Amazon Web Services) descreve seu API Gateway como:
" Um serviço totalmente gerenciado que facilita para os desenvolvedores a criação, publicação, manutenção, monitoramento e segurança de API em qualquer escala. API atuam como a "porta de entrada" para que os aplicativos acessem dados, lógica de negócios ou funcionalidade de seus serviços de back-end. Usando o API Gateway, você pode criar APIs RESTful e APIs WebSocket que habilitam aplicativos de comunicação bidirecional em tempo real. O API Gateway oferece suporte a cargas de trabalho em contêiner e sem servidor, bem como a aplicativos web. O API Gateway lida com todas as tarefas envolvidas na aceitação e processamento de até centenas de milhares de chamadas de API simultâneas, incluindo gerenciamento de tráfego, suporte a CORS, autorização e controle de acesso, limitação, monitoramento e gerenciamento de versão da API. O API Gateway não tem taxas mínimas ou custos de inicialização. Você paga pelas chamadas de API que recebe e pela quantidade de dados transferidos e, com o modelo de preços em camadas do API Gateway, pode reduzir o custo à medida que o uso da API aumenta."
Um requisito fundamental para esse passo a passo é ter uma conta da Amazon Web Services. O API Gateway está disponível como parte do nível gratuito da AWS, permitindo até 1 milhões de chamadas de API por mês, sem nenhum custo, nos primeiros 12 meses com a AWS.
Um uso comum do Atlas com o Amazon API Gateway pode ser fornecer uma API gerenciada para um subconjunto restrito de dados em nosso cluster, que é uma necessidade comum para uma arquitetura de microsserviço. Para demonstrar isso, primeiro precisamos ter alguns dados disponíveis no MongoDB Atlas. Isso pode ser adicionado selecionando os três pontos ao lado do nome do cluster e escolhendo "Carregar conjunto de dados de amostra", ou seguindo as instruções aqui. ![](/developer/_next/image/?url=https%3A%2F%2Fmongodb-devhub-cms.s3.us-west-1.amazonaws.com%2FScreenshot_2021_11_29_at_09_50_02_6532382c89.png&w=3840&q=75)
![](/developer/_next/image/?url=https%3A%2F%2Fmongodb-devhub-cms.s3.us-west-1.amazonaws.com%2FScreenshot_2021_11_29_at_09_50_02_6532382c89.png&w=3840&q=75)
As instruções aqui são uma variação estendida dotutorial " Introdução ao API Gateway" da Amazon . Não pretendo especificá-lo como usar da melhor forma o API Gateway da Amazon, pois a própria Amazon tem muitos recursos bons para isso. O que vamos fazer aqui é usá-lo para obter uma API pública básica habilitada que use a Atlas Data API.
A MongoDB Atlas Data API em si está atualmente em uma versão prévia com um modelo de segurança simples que permite que todos os usuários que têm uma chave de API consultem ou atualizem qualquer banco de dados ou collection. Versões futuras terão segurança mais granular. Não queremos simplesmente expor a Atlas Data API como uma API "pública", mas podemos usá-la no back-end para criar um acesso mais restrito e específico aos nossos dados.
Vamos criar uma API que permita aos usuários OBTER os dez filmes de qualquer ano que receberam a maior quantidade de prêmios - um fictício "Melhores filmes do ano". Restringiremos esta API a executar apenas essa operação e forneceremos o ano como parte do URL
Primeiro criaremos a API e, em seguida, analisaremos o código que usamos para ela.
- Escolha Criar função.
- Para Nome da função, insira os melhores filmes do ano.
- Escolha Criar função.
Quando você vê o editor de Javascript que se parece com isso
![](/developer/_next/image/?url=https%3A%2F%2Fmongodb-devhub-cms.s3.us-west-1.amazonaws.com%2FScreenshot_2021_12_07_at_15_25_59_2ba3959057.png&w=3840&q=75)
Como alternativa, se você estiver familiarizado com o trabalho com pacotes e o Lambda, poderá carregar um pacote HTTP como o Axios para o Lambda como um arquivo zip, o que lhe permitirá usar o código simplificado a seguir.
Agora precisamos rotear um ponto de conexão HTTP para nossa função Lambda usando a API HTTP.
A API HTTP fornece um ponto de conexão HTTP para sua função Lambda. O API Gateway roteia as solicitações para sua função Lambda e, em seguida, retorna a resposta da função aos clientes.
- Go para o console do API Gateway emhttps://console.aws.amazon.com/apigate quando.
- Faça um dos seguintes procedimentos: para criar sua primeira API, para API HTTP, escolha Build. Se você tiver criado uma API antes, escolha Criar APIe, em seguida, escolha Criar para API HTTP.
- Para Integrações, escolha Adicionar integração.
- Escolha Lambda.
- Para a função Lambda, insira top-movies-for-year.
- Para o nome da API, insira movie-api.
- Escolha Próximo.
- Revise a rota que o API Gateway cria para você e escolha Next.
- Revise o estágio que o API Gateway cria para você e escolha Next.
- Escolha Criar.
Agora você criou uma HTTP API com uma integração Lambda e a Atlas Data API que está pronta para receber solicitações de clientes.
Agora você deve estar olhando para os detalhes do gateway de API que se parecem com este, se não você pode acessá-lo acessandohttps://console.aws.amazon.com/apigatequando e clicando em filme-api
![](/developer/_next/image/?url=https%3A%2F%2Fmongodb-devhub-cms.s3.us-west-1.amazonaws.com%2FScreenshot_2021_12_07_at_15_46_17_06301a223e.png&w=3840&q=75)
Anote o URL de invocação, este é o URL base da sua API
Agora, em uma nova guia do navegador, navegue até
<Invoke URL>/top-movies-for-year?year=2001
. Alterando <Invoke URL>
para o URL de invocação mostrado na AWS. Você deve ver os resultados da sua chamada de API - JSON listando os principais 10 "Melhores" filmes de 2001.![](/developer/_next/image/?url=https%3A%2F%2Fmongodb-devhub-cms.s3.us-west-1.amazonaws.com%2Funnamed_33c3be7d0f.png&w=3840&q=75)
Começamos importando a biblioteca https://node.js padrão - a API de dados não precisa de bibliotecas especiais para chamá-la. Também definimos nossa chave de API e o caminho para nosso endpoint de localização. Você obtém ambos na aba Data API no Atlas.
Agora, verificamos se a chamada da API incluiu um parâmetro para o ano e se é um número. Precisamos convertê-lo em um número, pois no MongoDB, "2001" e 2001 são valores diferentes, e pesquisar um não encontrará o outro. A coleção usa um número para o ano de lançamento do filme.
Em seguida, construímos nossa carga útil: os parâmetros da Atlas API Call, estamos consultando por ano = ano, projetando apenas o título e o número de prêmios, classificando pelo número de prêmios decrescente e limitando a 10.
Em seguida, construímos as opções para a solicitação HTTPS POST para a API de dados. Aqui, passamos a chave de API da API de dados como cabeçalho.
Por fim, usamos um código bastante padrão para chamar a API e lidar com erros. Podemos receber erros de solicitação, como não conseguir entrar em contato com o servidor, ou erros de resposta quando obtemos qualquer código de resposta diferente de 200 OK. Em ambos os casos, retornamos um erro interno 500 de nossa API simplificada para não vazar nenhum detalhe interno para um possível hacker.
Nossa versão Axios é exatamente a mesma funcionalidade acima, mas simplificada pelo uso de uma biblioteca.
Como podemos ver, chamar a MongoDB Atlas Data API da Lambda é incrivelmente simples, especialmente se estiver usando uma biblioteca como Axios. A API de dados também não tem estado, portanto, não há preocupações com os tempos de configuração da conexão ou com a manutenção de conexões de longa duração, como seria o caso do uso de um driver.