Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

Tutorial: Usar o MongoDB com funções do Azure

Neste tutorial, você cria uma função do Azure acionada por HTTP que consulta dados do MongoDB Atlas usando o driver MongoDB Node.js Você também aprenderá a gerenciar conexões de banco de dados em um contexto sem servidor e implementar sua função na nuvem do Azure.

Antes de começar, conclua as seguintes etapas:

Este tutorial orienta você nas seguintes etapas:

  • Criar recursos de nuvem do Azure.

  • Inicialize o projeto local .

  • Instale o driver Node.js do MongoDB.

  • Configure a conexão do banco de dados para o banco de dados sample_mflix .

  • Grave uma função para query a coleção sample_mflix.movies e recuperar documentos representando filmes.

  • Teste a função localmente.

  • Implemente no Azure.

1

Execute o seguinte comando para criar um grupo de recursos, substituindo <GROUP_NAME> por um nome para seu grupo e <AZURE_REGION> por uma região do Azure compatível:

az group create \
--name <GROUP_NAME> \
--location <AZURE_REGION>

Opcionalmente, se você estiver usando o Azure pela primeira vez, talvez seja necessário executar os seguintes comandos para registrar o fornecedor de recursos de funções:

az provider register --namespace Microsoft.Storage
az provider register --namespace Microsoft.Web

Em seguida, execute o seguinte comando para criar uma conta de armazenamento. Use a mesma região e nome de grupo do código anterior e forneça um nome exclusivo para a conta de armazenamento, substituindo o espaço reservado <STORAGE_NAME> por este nome exclusivo:

az storage account create \
--name <STORAGE_NAME> \
--location <AZURE_REGION> \
--resource-group <GROUP_NAME> \
--sku Standard_LRS

Por fim, execute o seguinte comando para criar o aplicativo de Funções:

az functionapp create \
--resource-group <GROUP_NAME> \
--consumption-plan-location <AZURE_REGION> \
--runtime node \
--functions-version 4 \
--name <APP_NAME> \
--storage-account <STORAGE_NAME>
2

Execute o seguinte comando para inicializar um projeto de função local:

func init MongoExample

Quando solicitado, selecione node como o tempo de execução do trabalhador e javascript como o idioma.

Execute os seguintes comandos para navegar até o diretório do projeto e criar uma nova função acionada por HTTP:

cd MongoExample
func new --name GetMovies --template "HTTP trigger"

O comando cria o arquivo src/functions/GetMovies.js, que você edita nas etapas posteriores.

Para vincular seu projeto local ao aplicativo Azure Function, execute o seguinte comando no diretório do projeto :

func azure functionapp fetch-app-settings <APP_NAME>

Este comando baixa todas as configurações do aplicativo do Azure, incluindo a configuração da conta de armazenamento, e preenche o arquivo local.settings.json do seu projeto.

3

Na raiz do seu projeto, execute o seguinte comando para instalar o driver do MongoDB Node.js :

npm install mongodb

Este comando adiciona o driver ao seu projeto e o registra em package.json para que o driver esteja disponível quando você implantar.

4

Abra o src/functions/GetMovies.js e substitua seu conteúdo pelo seguinte código:

GetMovies.js
const { app } = require("@azure/functions");
const { MongoClient } = require("mongodb");
const mongoClient = new MongoClient(
process.env.MONGODB_ATLAS_URI
);
app.http("GetMovies", {
methods: ["GET"],
authLevel: "anonymous",
handler: async (request, context) => {
// Query logic added in the next step
}
});

Dica

Defina mongoClient fora da função do manipulador para reutilizar conexões existentes entre invocações. Se você criar uma nova conexão dentro do manipulador, cada invocação abrirá uma nova conexão e poderá esgotar o número máximo de conexões simultâneas suportadas pelo banco de dados . A definição do cliente no nível do módulo mantém as contagens de conexão proporcionais ao tráfego.

Dependendo da sua versão do Node.js, você poderá encontrar um erro relacionado à resolução de DNS ao tentar se conectar ao MongoDB. Se isso ocorrer, adicione o seguinte código ao seu arquivo src/functions/GetMovies.js antes de criar a instância do MongoClient:

GetMovies.js
const { app } = require("@azure/functions");
const { MongoClient } = require("mongodb");
// Forces DNS servers explicitly before connecting to MongoDB
require("node:dns/promises").setServers(["1.1.1.1", "8.8.8.8"]);
const mongoClient = new MongoClient(
process.env.MONGODB_ATLAS_URI
);
app.http("GetMovies", {
methods: ["GET"],
authLevel: "anonymous",
handler: async (request, context) => {
// Query logic added in the next step
}
});

Abra o local.settings.json e adicione os seguintes campos ao objeto Values, substituindo cada espaço reservado pelos seus valores reais:

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<storage-connection-string>",
"FUNCTIONS_WORKER_RUNTIME": "node",
"MONGODB_ATLAS_URI": "<atlas-connection-string>",
"MONGODB_ATLAS_DATABASE": "sample_mflix",
"MONGODB_ATLAS_COLLECTION": "movies"
},
"ConnectionStrings": {}
}

Para recuperar sua string de conexão do MongoDB Atlas , navegue até o dashboard do Atlas , selecione seu cluster e clique em Connect. Para saber como recuperar a string de conexão do armazenamento Azure, consulte Configurar uma string de conexão na documentação do Azure.

5

Em src/functions/GetMovies.js, substitua o comentário // Query logic added in the next step dentro do manipulador pelo seguinte código:

try {
const database = mongoClient.db(
process.env.MONGODB_ATLAS_DATABASE
);
const collection = database.collection(
process.env.MONGODB_ATLAS_COLLECTION
);
const results = await collection
.find({})
.limit(10)
.toArray();
return { jsonBody: results };
} catch (error) {
return {
status: 500,
jsonBody: { message: "Internal server error." }
};
}

Quando a função recebe uma solicitação, ela se conecta ao banco de dados e à coleção especificados por suas variáveis de ambiente e retorna até 10 documentos. Se ocorrer um erro, a função retornará uma resposta 500 que contém a mensagem de erro.

6

Na raiz do seu projeto, execute o seguinte comando para iniciar sua função:

func start

Quando o servidor é iniciado, a CLI exibe a URL local da sua função. Navegue até http://localhost:7071/api/GetMovies em seu navegador ou envie uma solicitação usando uma ferramenta como cURL ou Postman.

Observação

Se o servidor iniciar, mas você não conseguir recuperar os dados, verifique se o seu endereço IP local está incluído na lista de acesso à rede do Atlas . As regras de IP do Azure **data center** que você configurou para produção não se **aplicam** ao testar localmente. Para obter mais informações, consulte Configurar entradas da lista de acesso IP.

7

Defina suas variáveis de ambiente no Azure executando os seguintes comandos, substituindo cada espaço reservado por seus valores reais:

az functionapp config appsettings set \
--name <APP_NAME> \
--resource-group <GROUP_NAME> \
--settings MONGODB_ATLAS_URI=<atlas-connection-string>
az functionapp config appsettings set \
--name <APP_NAME> \
--resource-group <GROUP_NAME> \
--settings MONGODB_ATLAS_DATABASE=sample_mflix
az functionapp config appsettings set \
--name <APP_NAME> \
--resource-group <GROUP_NAME> \
--settings MONGODB_ATLAS_COLLECTION=movies

Implemente sua função executando o seguinte comando:

func azure functionapp publish <APP_NAME>
Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in <APP_NAME>:
GetMovies - [httpTrigger]
Invoke url: https://<APP_NAME>.azurewebsites.net/api/getmovies

Quando a implantação for concluída, a CLI exibirá um URL público para sua função. Como a função usa authLevel: "anonymous", ela é acessível sem uma chave.

Observação

Para implantações de produção, considere alterar authLevel para "function" ou "admin" e distribuir a chave apropriada para clientes autorizados. Para saber mais, consulte a documentação Trabalhar com chaves de acesso no Azure Functions.

Para saber mais sobre os conceitos abordados neste tutorial, consulte os seguintes recursos: