Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Como usar o PyMongo para conectar o MongoDB Atlas ao AWS Lambda

Anaiya Raisinghani6 min read • Published Apr 02, 2024 • Updated Apr 02, 2024
AWSSem servidorPythonAtlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Visualize o Paraíso do desenvolvedor: um mundo onde, em vez de nos preocuparmos com complexidades de hardware, estamos livres para focar inteiramente na execução de nossos aplicativos. Com a combinação de AWS Lambda e MongoDB Atlas, esta visão se torna uma Realidade.
Armados com a estrutura de pagamento por execução do AWS Lambda e a escalabilidade incomparável do MongoDB Atlas, os desenvolvedores entenderão realmente o que significa para seus aplicativos crescerem sem as limitações de hardware às quais estão familiarizados.
Este tutorial mostrará como configurar corretamente um Atlas cluster, conectá-lo ao AWS Lambda usando o Python Driver do MongoDB, escrever um pipeline de agregação em nossos dados e retornar as informações desejadas. Vamos começar.

Pré-requisitos para o sucesso

Criar um cluster do Atlas

Nosso primeiro passo é criar um Atlas cluster. Faça login na UI do Atlas e siga as etapas para configurá-la. Para este tutorial, a camada grátis é recomendada, mas qualquer camada funcionará!
Certifique-se de que o provedor de nuvem escolhido seja AWS. Também é necessário escolher um nome de usuário e senha seguros para que tenhamos a autorização adequada mais tarde neste tutorial, junto com o acesso adequado ao endereço IP.
Já tem uma conta na AWS? O Atlas oferece suporte ao pagamento por uso por meio do AWS Marketplace (AWS MP) sem qualquer compromisso inicial — basta
Inscreva-se no MongoDB Atlas por meio do AWS Marketplace.
Quando seu cluster estiver instalado e funcionando, clique nas reticências ao lado do botão Procurar Coleções e baixe o sample dataset. Seu cluster finalizado ficará assim: Atlas cluster totalmente provisionado com dados de amostra baixados
Depois que nosso cluster for provisionado, vamos configurar nossa função do AWS Lambda.

Criando uma função do AWS Lambda

Faça login em sua conta da AWS e procure "Lambda " na barra de pesquisa. Aperte o botão laranja "Create function" no canto superior direito da tela e você será direcionado para a imagem abaixo. Aqui, certifique-se de primeiro selecionar a opção "Author from scratch ". Em seguida, queremos selecionar um nome para nossa função (AWSLambdaDemo), o tempo de execução (3.8) e nossa arquitetura (x86_64). criando nossa função Lambda
Pressione o botão laranja "Create function " no canto inferior direito para continuar. Depois que sua função for criada, você verá uma página com a visão geral da função acima e sua fonte de código logo abaixo. Amazon Web Services Lambda Configuração da função
Agora, estamos prontos para configurar nossa conexão do Amazon Web Services Lambda para nosso cluster MongoDB .
Para facilitar as coisas para nós, porque vamos usar o Pymongo, uma dependência, em vez de editar diretamente na fonte do código, usaremos o Visual Studio Code. O AWS Lambda tem uma quantidade limitada de bibliotecas e dependências pré-instaladas, portanto, para contornar isso e incorporar o Pymongo, precisaremos empacotar nosso código de uma maneira especial. Devido a esse "workaround, ", este não será um tutorial típico com testes em cada etapa. Primeiro, teremos que baixar nossas dependências e enviar nosso código para o Lambda antes de garantir que nosso código funcione em vez de usar um arquivorequirements.txttípico. Mais sobre isso abaixo.

Conexão de cluster AWS Lambda e MongoDB

Agora estamos prontos para estabelecer uma conexão entre o AWS Lambda e nosso cluster MongoDB!
Crie um novo diretório em sua máquina local e nomeie-o awslambda-demo.
Vamos instalar o pymongo. Como disse acima, o Lambda não tem todas as bibliotecas disponíveis. Então, precisamos baixar pymongo na raiz do nosso projeto. Podemos fazer isso trabalhando com arquivos .zip: No terminal, insira nosso diretórioawslambda-demo:
1 cd awslambda-demo
Crie um novo diretório onde suas dependências ficarão:
1mkdir dependencies
Instale pymongo diretamente em seu pacotedependencies:
1pip install --target ./dependencies pymongo
Abra o código do Visual Studio, abra o diretórioawslambda-demo e crie um novo arquivo Python chamado lambda_function.py. É aqui que estará o centro da nossa conexão.
Insira o código abaixo em nosso lambda_function.py. Aqui, estamos configurando nosso console para verificar se podemos nos conectar ao nosso cluster Atlas. Lembre-se de que, como estamos incorporando nossas variáveis de ambiente em uma etapa posterior, você não poderá se conectar ainda. Copiamos a definiçãolambda_handler de nossa fonte de código Lambda e a editamos para inserir um documento declarando meu nome completo em um novo “test” collection e “test” collection. É uma prática recomendada incorporar nosso MongoClient fora do nosso lambda_handler, pois estabelecer uma conexão e executar a autenticação é reativamente caro, e o Lambda reutilizará essa instância.
1import os
2from pymongo import MongoClient
3
4
5client = MongoClient(host=os.environ.get("ATLAS_URI"))
6
7
8def lambda_handler(event, context):
9 # Name of database
10 db = client.test
11
12 # Name of collection
13 collection = db.test
14
15 # Document to add inside
16 document = {"first name": "Anaiya", "last name": "Raisinghani"}
17
18
19 # Insert document
20 result = collection.insert_one(document)
21
22
23 if result.inserted_id:
24 return "Document inserted successfully"
25 else:
26 return "Failed to insert document"
Se isso for inserido corretamente no AWS Lambda, verá "Document inserted successfully " e no MongoDB Atlas, verá a criação de nosso banco de dados e coleção "test " junto com o único documento com o nome "Anaiya Raisinghani. " Lembre-se de que não vamos ver isso ainda, pois não configuramos nossas variáveis de ambiente e vamos fazer isso algumas etapas abaixo.
Agora, precisamos criar um arquivo .zip arquivo, para que possamos carregá-lo em nossa função Lambda e executar nosso código. Crie um arquivo .zip arquivo na raiz:
1cd dependencies
2zip -r ../deployment.zip *
Isso cria um arquivodeployment.zip no diretório do projeto.
Agora, precisamos adicionar nosso arquivolambda_function.pyà raiz do nosso arquivo .zip:
1cd ..
2zip deployment.zip lambda_function.py
como nosso diretório está configurado
Depois de ter seu arquivo .zip , acesse a tela de função do AWS Lambda, clique no botão "Upload from " e selecione ".zip file " no lado direito da página: como fazer upload de um .zip arquivo no AWS Lambda
Carregue seu arquivo .zip e você deverá ver o código do seu lambda_function.py em seu "Code Source ": Fonte do código-fonte do Amazon Web Services Lambda quando visualizado
Vamos configurar nossas variáveis de ambiente. Selecione a aba "Configuration " e, em seguida, selecione a aba "Environment Variables. Aqui, coloque sua string "ATLAS_URI ". Para acessar sua string de conexão, siga as instruções em nossos Docs.
Configuração de variáveis de ambiente
Depois de ter suas variáveis de ambiente no lugar, estamos prontos para executar nosso código e ver se nossa conexão funciona. Clique no botão “Test”. Se for a primeira vez que você está fazendo isso, precisará dar um nome ao seu evento. Mantenha tudo o mais nas configurações padrão. Você deve ver esta página com nosso “Execution results.” Nosso documento foi inserido! Depois de executar nosso código, podemos ver que ele funciona
Quando verificamos novamente o Atlas, podemos ver que nosso novo banco de dados "test " e a collection "test " foram criados, junto com nosso documento com "Anaiya Raisinghani. " resultado da nossa conexão mostrado no MongoDB Atlas
Isso significa que nossa conexão funciona e somos capazes de inserir documentos do AWS Lambda em nosso cluster MongoDB. Agora, podemos dar um passo adiante e inserir um pipeline de agregaçãosimples!

Exemplo de pipeline de agregação

Para o nosso pipeline, vamos alterar nosso código para nos conectarmos ao banco de dados sample_restaurantse à coleçãorestaurants. Vamos incorporar nosso pipeline de agregação para encontrar um tamanho de amostra de cinco restaurantes de culinária americana localizados no Brooklyn, em Nova York. Vamos mergulhar de cabeça!
Como baixamos nossa dependênciapymongo, podemos incorporar diretamente nosso pipeline de agregação em nossa fonte de código. Altere seu lambda_function.py para ficar assim:
1import os
2from pymongo import MongoClient
3
4connect = MongoClient(host=os.environ.get("ATLAS_URI"))
5
6def lambda_handler(event, context):
7 # Choose our "sample_restaurants" database and our "restaurants" collection
8 database = connect.sample_restaurants
9 collection = database.restaurants
10
11 # This is our aggregation pipeline
12 pipeline = [
13
14 # We are finding American restaurants in Brooklyn
15 {"$match": {"borough": "Brooklyn", "cuisine": "American"}},
16
17 # We only want 5 out of our over 20k+ documents
18 {"$limit": 5},
19
20 # We don't want all the details, project what you need
21 {"$project": {"_id": 0, "name": 1, "borough": 1, "cuisine": 1}}
22
23 ]
24
25 # This will show our pipeline
26 result = list(collection.aggregate(pipeline))
27
28 # Print the result
29 for restaurant in result:
30 print(restaurant)
Aqui, estamos usando $match para encontrar todos os restaurantes de cozinha norte-EUA localizados no Brooklyn. Estamos então usando $limit para apenas cinco documentos de nosso banco de dados. Em seguida, estamos usando $project para mostrar apenas os campos que queremos. Vamos incluir "borough ", "cuisine " e o "name " do restaurante. Em seguida, executamos nosso pipeline e imprimimos nossos resultados.
Clique em "Deploy " para garantir que nossas alterações tenham sido implantadas no ambiente de código. Depois que as alterações forem implantadas, clique em "Test." Obteremos um tamanho de amostra de cinco restaurantes americanos do Brooklyn como resultado em nosso console: resultados do nosso pipeline de agregação mostrados no Amazon Web Services Lambda
Nosso pipeline de agregação foi bem-sucedido!

Conclusão

Este tutorial forneceu experiência prática para conectar um banco de dados MongoDB Atlas ao AWS Lambda. Também demos uma visão interna de como escrever em um cluster a partir do Lambda, como ler informações de um pipeline de agregação e como configurar corretamente nossas dependências ao usar o Lambda. Esperemos que agora você esteja pronto para aproveitar o AWS Lambda e o MongoDB para criar os melhores aplicativos sem se preocupar com infraestrutura externa.
Se você leu este tutorial e gostaria de saber mais, confira nosso centro de programadores do MongoDB e nossocanal no YouTube.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Mapa do Coronavírus e rastreador de dados ao vivo com o MongoDB Charts


Nov 15, 2023 | 3 min read
Tutorial

MongoDB Atlas com Terraform: usuários do banco de dados e Vault


Apr 15, 2024 | 9 min read
Tutorial

Dados do MongoDB ELT usando o Airbyte


Nov 16, 2022 | 2 min read
Tutorial

Inicie um fluxo de trabalho RAG totalmente gerenciado com o MongoDB Atlas e o Amazon Bedrock


May 08, 2024 | 6 min read
Sumário