Neste tutorial, você usará os Triggers Agendados do Atlas para automatizar tarefas de gerenciamento de cluster chamando programaticamente a API de Administração do Atlas .
Este tutorial inclui os seguintes procedimentos:
Configuração inicial: crie uma conta de serviço com
Project Ownerpermissões para seu projeto Atlas existente, armazene as credenciais da conta de serviço como Valores e Segredos e, em seguida, crie funções reutilizáveis que usam essas credenciais para chamar o Update One Cluster in One Desfecho do projeto.Observação
Se preferir usar chaves de API em vez de contas de serviço para autenticar na API de administração do Atlas com permissões, você pode salvar
Project Owneras chaves públicas e privadas deAPI como Valores e Segredos para usar nas funções deste tutorial.Pausar e retomar clusters de acordo com um agendamento: crie triggers agendados para pausar automaticamente os clusters todas as tardes e retomá-los todas as manhãs dos dias da semana.
Dimensionar clustersem um agendamento: crie gatilhos agendados para escalar automaticamente um cluster durante os horários de pico e reduzi-los posteriormente.
Permissões necessárias
Para concluir este tutorial, você precisa de um usuário com acesso a um projeto do MongoDB Atlas Project Owner .
Configuração inicial
Esta configuração inicial só precisa ser concluída uma vez e permite que você crie os Triggers agendados nesta página para automatizar as tarefas de gerenciamento de cluster. Antes de executar este tutorial, verifique se você tem um projeto do MongoDB Atlas com pelo menos um cluster. Este procedimento executa as seguintes tarefas de configuração:
Cria e salva as credenciais de uma conta de serviço do Atlas que o Triggers usará para chamar a API de administração
Project Ownerdo Atlas com permissões para seu projeto Atlas existente.Cria uma função reutilizável chamada
getAuthHeadersque gera um token de acesso usando as credenciais da conta de serviço e retorna os cabeçalhos de autenticação apropriados para chamar a API de administração do Atlas .Cria uma função reutilizável chamada
modifyClusterque envolve a API Atualizar um cluster em um projeto.
Crie uma Conta de serviço.
Para criar uma conta de serviço que seus Triggers possam usar para chamar a API de administração do Project Owner Atlas com permissões para seu projeto Atlas existente:
No Atlas, acesse a página Users.
Se ainda não estiver exibido, selecione sua organização desejada no Menu Organizations na barra de navegação.
Clique em All Projects na barra lateral abaixo da seção Identity & Access e selecione seu projeto desejado.
Clique em Project Identity & Access na barra lateral abaixo da seção Security.
A página Usuários é exibida.
Clique Create Application Service Account em.
Insira as informações da conta de serviço.
Nome: nome da sua conta de serviço. (por exemplo,
TriggersServiceAccount)Descrição: (opcional) descrição da sua conta de serviço. (por exemplo, conta de serviço para o Atlas Function para chamar a API de administração do Atlas ).
Permissões da conta de serviço:
Project Owner
Clique em Create.
Isso cria a conta de serviço e a adiciona automaticamente à organização principal do projeto com a
Organization Memberpermissão.Configure o API Access List.
Adicione endereços IP ao API Access List se você quiser restringir quais endereços IP podem chamar a API de administração do Atlas com essa conta de serviço.
Observação
Se Require IP Access List for the Atlas Administration API estiver ativado para sua organização ou se você tiver adicionado endereços IP ao API Access List de sua conta de serviço, todas as solicitações da API de administração do Atlas deverão passar por uma verificação de lista de acesso IP.
Os Atlas Triggers enviam solicitações HTTP de saída de um conjunto específico de endereços IP de saída. Para habilitar seus Triggers programados para chamar a API de administração do Atlas e outros serviços externos, você deve adicionar esses endereços IP ao API Access List da sua conta de serviço.
Para obter a lista completa de endereços IP de saída usados pelo Atlas Function, consulte Acesso IP de saída de segurança da função. Você deve adicionar cada endereço IP individualmente.
Armazene credenciais de conta de serviço como Valores e Segredos.
Crie os seguintes Valores e Segredos para armazenar as credenciais da sua conta de serviço:
AtlasClientIdValor que contém o ID do cliente da sua conta de serviço.AtlasClientSecretSegredo que contém o segredo do cliente da sua conta de serviço.AtlasClientSecretValor que vincula ao segredo. Isso permite que você acesse o valor secreto do cliente em suas funções, mantendo-o armazenado com segurança como um segredo.
No Atlas, acesse a página Triggers.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Triggers sob o título Streaming Data.
A página Acionadores é exibida.
Navegue até a página Values.
Clique no link Linked App Service: Triggers.
Na barra lateral, clique em Values sob o título Build.
Armazene o ID do cliente em um Valor.
Clique em Create a Value
Insira
AtlasClientIdcomo Value Name.Selecione o tipo Value.
Selecione a opção Custom Content e insira o ID do cliente .
Observação
Você deve inserir o ID do cliente como um valor de string com aspas (
"<clientId>").Clique em Save.
Armazene o segredo do cliente em um Segredo e vincule-o a um Valor.
Observação
Os valores secretos não podem ser acessados diretamente, então você deve criar um segundo valor que se vincule ao segredo.
Clique em Create a Value.
Insira
AtlasClientSecretcomo Value Name.Selecione o tipo Value.
Selecione a opção Link to Secret.
Insira
AtlasClientSecrete clique em Create "AtlasClientSecret" para nomear o valor Secreto.Cole o segredo do cliente no campo Client Secret que aparece abaixo do nome do segredo.
Clique em Save para criar o segredo e o valor.
Crie a getAuthHeaders função .
Para criar uma função reutilizável que recupere um token de acesso usando as credenciais da conta de serviço e retorne os cabeçalhos de autenticação apropriados para chamar a API de administração do Atlas :
Navegue até a página Functions.
Na barra lateral, clique em Functions sob o título Build.
Clique em Create a Function.
A aba Settings é exibida por padrão.
Insira
getAuthHeaderscomo Name para a função.Defina Private como
true. Esta função será chamada somente por outras funções neste tutorial.Deixe as outras opções de configuração na aba Settings em seus valores padrão.
Defina o código da função.
Clique na aba Function Editor e cole o seguinte código para definir a função:
1 /* 2 * Generate API request headers with a new Service Account Access Token. 3 */ 4 exports = async function getAuthHeaders() { 5 6 // Get stored credentials 7 clientId = context.values.get("AtlasClientId"); 8 clientSecret = context.values.get("AtlasClientSecret"); 9 10 // Throw an error if credentials are missing 11 if (!clientId || !clientSecret) { 12 throw new Error("Authentication credentials not found. Set AtlasClientId/AtlasClientSecret (service account auth credentials)."); 13 } 14 15 // Define the argument for the HTTP request to get the access token 16 const tokenUrl = "https://cloud.mongodb.com/api/oauth/token"; 17 const credentials = Buffer.from(`${clientId}:${clientSecret}`).toString("base64"); 18 19 const arg = { 20 url: tokenUrl, 21 headers: { 22 "Authorization": [ `Basic ${credentials}` ], 23 "Content-Type": [ "application/x-www-form-urlencoded" ] 24 }, 25 body: "grant_type=client_credentials" 26 } 27 28 // The response body is a BSON.Binary object; parse it to extract the access token 29 const response = await context.http.post(arg); 30 const tokenData = JSON.parse(response.body.text()); 31 const accessToken = tokenData.access_token; 32 33 // Define the Accept header with the resource version from env var or default to latest stable 34 const resourceVersion = context.environment.ATLAS_API_VERSION || "2025-03-12"; 35 const acceptHeader = `application/vnd.atlas.${resourceVersion}+json`; 36 37 // Return the access token as headers for future API calls 38 return { 39 headers: { 40 "Authorization": [ `Bearer ${accessToken}` ], 41 "Accept": [ acceptHeader ], 42 "Accept-Encoding": [ "bzip, deflate" ], 43 "Content-Type": [ "application/json" ] 44 } 45 }; 46 }
Crie a modifyCluster função .
Para criar uma função reutilizável que envolva o endpoint Update One Cluster in One Project:
Na página Functions, clique em Create a Function.
A aba Settings é exibida por padrão.
Insira
modifyClustercomo Name para a função.Defina Private como
true. Esta função será chamada somente por outras funções neste tutorial.Deixe as outras opções de configuração na aba Settings em seus valores padrão.
Defina o código da função.
Clique na aba Function Editor e cole o seguinte código para definir a função:
1 /* 2 * Modifies the cluster as defined by the `body` parameter. 3 * See https://www.mongodb.com/pt-br/docs/atlas/reference/api-resources-spec/v2/#tag/Clusters/operation/updateCluster 4 */ 5 exports = async function(projectID, clusterName, body) { 6 7 // Easy testing from the console 8 if (projectID === "Hello world!") { 9 projectID = "<projectId>"; 10 clusterName = "<clusterName>"; 11 body = { paused: false }; 12 } 13 14 // Retrieve headers to authenticate with a new access token, and define the request URL for the Atlas API endpoint 15 const authHeaders = await context.functions.execute("getAuthHeaders"); 16 const requestUrl = `https://cloud.mongodb.com/api/atlas/v2/groups/${projectID}/clusters/${clusterName}`; 17 18 // Build the argument for the HTTP request to the Atlas API to modify the cluster 19 const arg = { 20 url: requestUrl, 21 headers: authHeaders.headers, 22 body: JSON.stringify(body) 23 }; 24 25 // The response body is a BSON.Binary object; parse it and return the modified cluster description 26 const response = await context.http.patch(arg); 27 if (response.body) { 28 return EJSON.parse(response.body.text()); 29 } else { 30 throw new Error(`No response body returned from Atlas API. Status code: ${response.status}`); 31 } 32 }; Observação
Código de teste no Editor de funções.
O Function Editor fornece automaticamente
"Hello world!"como o primeiro argumento quando você executa uma Função no Testing Console. Este código testa essa entrada e fornece valores para os parâmetros quando"Hello world!"é recebido.Para testar a função com sua própria entrada, substitua os seguintes valores de espaço reservado por suas próprias informações:
<projectId><clusterName>No parâmetro
body, forneça uma carga contendo as modificações que você deseja fazer no cluster. O código de exemplo inclui uma carga útil que pausa um cluster.
Pausar e retomar clusters em uma programação
Esse procedimento cria triggers programados para pausar automaticamente os clusters todas as tardes e retomá-los todas as manhãs dos dias da semana. Isso é útil para clusters que não são de produção que não precisam ser executados fora do horário comercial ou para clusters que você queira pausar e retomar automaticamente de acordo com um agendamento.
Crie a pauseClusters função .
No Atlas, acesse a página Triggers.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Triggers sob o título Streaming Data.
A página Acionadores é exibida.
Navegue até a página Functions
Clique no link Linked App Service: Triggers.
Na barra lateral, clique em Functions sob o título Build.
Clique em Create a Function.
A aba Settings é exibida por padrão.
Insira
pauseClusterscomo Name para a função.Defina Private como
true. Esta função só será chamada pelo acionadorpauseClustersneste tutorial.Deixe as outras opções de configuração na aba Settings em seus valores padrão.
Defina o código da função.
Clique na aba Function Editor e cole o seguinte código para definir a função:
1 /* 2 * Iterates over the provided projects and clusters, pausing those clusters. 3 */ 4 exports = async function () { 5 6 // Supply project IDs and cluster names to pause 7 const projectIDs = [ 8 { 9 id: "<projectIdA>", 10 names: [ "<clusterNameA>", "<clusterNameB>" ] 11 }, 12 { 13 id: "<projectIdB>", 14 names: [ "<clusterNameC>" ] 15 } 16 ]; 17 18 // Set desired state 19 const body = { paused: true }; 20 21 // Pause each cluster and log the response 22 for (const project of projectIDs) { 23 for (const cluster of project.names) { 24 const result = await context.functions.execute( 25 "modifyCluster", 26 project.id, 27 cluster, 28 body, 29 ); 30 console.log("Cluster " + cluster + ": " + EJSON.stringify(result)); 31 } 32 } 33 34 return "Clusters Paused"; 35 }; Substitua a array
projectIDspelos seus próprios nomes de projeto e cluster.Observação
Para evitar codificar nomes de projeto e cluster, você pode usar as funções assistente no final deste tutorial para recuperar listas de projetos e clusters da API de administração do Atlas e determinar programaticamente quais clusters pausar e retomar em um cronograma.
Crie o pauseClusters acionador programado .
Na página Functions, navegue até a página Triggers clicando em Triggers na barra lateral abaixo do título Build.
Clique em Create a Trigger para abrir a página de configuração do trigger.
Se você tiver um trigger existente, clique em Add a Trigger
Definir configurações de trigger.
No Trigger Details, defina a seguinte configuração:
ContextoValorTipo de trigger
Programado
Tipo de agendamento
Avançado. Isso permite a você especificar uma expressão CRON para o agendamento.
Para executar isso todas as tardes da semana às 6 PM do Leste dos EUA (que é 22:00 UTC), use a seguinte expressão CRON :
0 22 * * 1-5 Ignorar eventos ao reativar
Ligado. Isso impede que o Trigger seja executado em agendamentos que foram enfileirados enquanto o Trigger estava desativado.
eventType
Função. Selecione a função
pauseClustersno menu suspenso.Nome do trigger
pauseClustersClique em Save para criar o Acionador.
Seus clusters de teste agora serão pausados automaticamente todas as tardes às 6 da tarde do leste dos EUA.
Crie a resumeClusters função .
Duplique a função
pauseClustersem uma nova função chamadaresumeClusters.Na aba Function Editor, atualize o estado
pausedparafalseno código de Função:1 /* 2 * Iterates over the provided projects and clusters, resuming those clusters. 3 */ 4 exports = async function () { 5 6 // Supply project IDs and cluster names to resume 7 const projectIDs = [ 8 { 9 id: "<projectIdA>", 10 names: [ "<clusterNameA>", "<clusterNameB>" ] 11 }, 12 { 13 id: "<projectIdB>", 14 names: [ "<clusterNameC>" ] 15 } 16 ]; 17 18 // Set desired state 19 const body = { paused: false }; 20 21 // Resume each cluster and log the response 22 for (const project of projectIDs) { 23 for (const cluster of project.names) { 24 const result = await context.functions.execute( 25 "modifyCluster", 26 project.id, 27 cluster, 28 body, 29 ); 30 console.log("Cluster " + cluster + ": " + EJSON.stringify(result)); 31 } 32 } 33 34 return "Clusters Resumed"; 35 };
Crie o resumeClusters acionador programado .
Na página Functions, navegue até a página Triggers clicando em Triggers na barra lateral abaixo do título Build.
Definir configurações de trigger.
No Trigger Details, defina a seguinte configuração:
ContextoValorTipo de trigger
Programado
Tipo de agendamento
Avançado. Isso permite a você especificar uma expressão CRON para o agendamento.
Para executar isso todas as manhãs dos dias da semana às 8 da Manhã Leste dos EUA (que é 12:00 UTC), use a seguinte expressão CRON :
0 12 * * 1-5 Ignorar eventos ao reativar
Ligado. Isso impede que o Trigger seja executado em agendamentos que foram enfileirados enquanto o Trigger estava desativado.
eventType
Função. Selecione a função
resumeClustersno menu suspenso.Nome do trigger
resumeClustersClique em Save para criar o Acionador.
Seus clusters de teste agora serão pausados todas as tardes e retomados automaticamente todas as manhãs dos dias da semana.
Escale clusters em um cronograma
Esse procedimento cria gatilhos agendados para aumentar automaticamente um cluster durante os horários de pico e reduzi-los posteriormente. Isso é útil para clusters que têm padrões de uso previsíveis nos quais você deseja dimensionar proativamente antes que o volume de trabalho aumente e reduzir posteriormente para economizar custos.
Observação
O Atlas oferece suporte ao Cluster Auto-Scaling para aumentar automaticamente a camada do cluster ou a capacidade de armazenamento com base no uso ou no uso previsto. No entanto, se você tiver janelas de uso de pico previsíveis, poderá usar gatilhos agendados para dimensionar proativamente seu cluster antes que seu volume de trabalho aumente.
Crie a scaleClusterUp função .
No Atlas, acesse a página Triggers.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.
Na barra lateral, clique em Triggers sob o título Streaming Data.
A página Acionadores é exibida.
Navegue até a página Functions
Clique no link Linked App Service: Triggers.
Na barra lateral, clique em Functions sob o título Build.
Clique em Create a Function.
A aba Settings é exibida por padrão.
Insira
scaleClusterUpcomo Name para a função.Defina Private como
true. Esta função só será chamada pelo acionadorscaleClusterUpneste tutorial.Deixe as outras opções de configuração na aba Settings em seus valores padrão.
Defina o código da função.
Na página Create Function, clique na aba Function Editor e cole o seguinte código para definir sua Função:
1 /* 2 * Scales a single cluster up to a larger instance size. 3 * This example scales an AWS cluster up to M30 in region US_EAST_1. 4 */ 5 exports = async function() { 6 // Supply project ID and cluster name... 7 const projectID = "<projectId>"; 8 const clusterName = "<clusterName>"; 9 10 // Set the desired instance size and topology... 11 const body = { 12 replicationSpecs: [ 13 { 14 regionConfigs: [ 15 { 16 electableSpecs: { 17 instanceSize: "M30", // for example, larger tier 18 nodeCount: 3 19 }, 20 priority: 7, 21 providerName: "AWS", 22 regionName: "US_EAST_1" 23 } 24 ] 25 } 26 ] 27 }; 28 29 // Scale up the cluster and log the response 30 const result = await context.functions.execute( 31 "modifyCluster", 32 projectID, 33 clusterName, 34 body 35 ); 36 console.log(EJSON.stringify(result)); 37 38 return clusterName + " scaled up"; 39 }; Substitua os espaços reservados
<projectId>e<clusterName>pelo seu próprio ID do projeto e nome de cluster e ajuste a arrayregionConfigspara sua própria topologia.Consulte a documentação do endpoint Update One Cluster in One Project para obter mais detalhes sobre os campos disponíveis que você pode incluir no corpo da solicitação para modificar a configuração do cluster.
Crie o scaleClusterUp acionador programado .
Na página Functions, navegue até a página Triggers clicando em Triggers na barra lateral abaixo do título Build.
Clique em Create a Trigger para abrir a página de configuração do trigger.
Se você tiver um trigger existente, clique em Add a Trigger
Definir configurações de trigger.
No Trigger Details, defina a seguinte configuração:
ContextoValorTipo de trigger
Programado
Tipo de agendamento
Avançado. Isso permite a você especificar uma expressão CRON para o agendamento.
Para executar isso todas as manhãs às 8 da Manhã Leste dos EUA (que é 13:00 UTC), use a seguinte expressão CRON :
0 13 * * * Ignorar eventos ao reativar
Ligado. Isso impede que o Trigger seja executado em agendamentos que foram enfileirados enquanto o Trigger estava desativado.
eventType
Função. Selecione a função
pauseClustersno menu suspenso.Nome do trigger
scaleClusterUpClique em Save para criar o Acionador.
Seus clusters de teste agora aumentarão automaticamente todas as manhãs às 8 da Manhã Leste dos EUA.
Crie a scaleClusterDown função .
Duplique a função
scaleClusterUpem uma nova função chamadascaleClusterDown.Na aba Function Editor, cole e ajuste o seguinte código para reduzir o cluster para a configuração especificada:
1 /* 2 * Scales a single cluster down to a smaller instance size. 3 * This example scales an AWS cluster down to M10 in region US_EAST_1. 4 */ 5 exports = async function() { 6 const projectID = "<projectId>"; 7 const clusterName = "<clusterName>"; 8 9 const body = { 10 replicationSpecs: [ 11 { 12 regionConfigs: [ 13 { 14 electableSpecs: { 15 instanceSize: "M10", // for example, smaller tier 16 nodeCount: 3 17 }, 18 priority: 7, 19 providerName: "AWS", 20 regionName: "US_EAST_1" 21 } 22 ] 23 } 24 ] 25 }; 26 27 // Scale down the cluster and log the response 28 const result = await context.functions.execute( 29 "modifyCluster", 30 projectID, 31 clusterName, 32 body 33 ); 34 console.log(EJSON.stringify(result)); 35 36 return clusterName + " scaled down"; 37 }; Substitua os espaços reservados
<projectId>e<clusterName>pelo seu próprio ID do projeto e nome de cluster e ajuste a arrayregionConfigspara sua própria topologia.Consulte a documentação do endpoint Update One Cluster in One Project para obter mais detalhes sobre os campos disponíveis que você pode incluir no corpo da solicitação para modificar a configuração do cluster.
Crie o scaleClusterDown acionador programado .
Na página Functions, navegue até a página Triggers clicando em Triggers na barra lateral abaixo do título Build.
Definir configurações de trigger.
No Trigger Details, defina a seguinte configuração:
ContextoValorTipo de trigger
Programado
Tipo de agendamento
Avançado. Isso permite a você especificar uma expressão CRON para o agendamento.
Para executar isso todas as tardes às 6 PM US East (que é 22:00 UTC), use a seguinte expressão CRON :
0 22 * * * Ignorar eventos ao reativar
Ligado. Isso impede que o Trigger seja executado em agendamentos que foram enfileirados enquanto o Trigger estava desativado.
eventType
Função. Selecione a função
scaleClusterDownno menu suspenso.Nome do trigger
scaleClusterDownClique em Save para criar o Acionador.
Juntos, esses dois gatilhos garantem que o cluster seja executado em maior capacidade durante as horas de maior movimento e reduzido posteriormente.
Funções opcionais de ajuda
As seguintes funções assistente podem ser testadas no editor de funções Triggers para listar projetos e clusters em sua organização e especificar quais clusters você deseja direcionar nas funções neste tutorial. Você também pode chamar essas funções de outras funções para recuperar essas informações programaticamente.
getProjects() chama o ponto de extremidade Return All Projects para retornar todos os projetos da sua organização.
1 /* 2 * Returns an array of the projects in the organization 3 * See https://mongodb.com/pt-br/docs/atlas/reference/api/project-get-all/ 4 * 5 * Returns an array of objects, e.g. 6 * 7 * { 8 * "clusterCount": { 9 * "$numberInt": "1" 10 * }, 11 * "created": "2021-05-11T18:24:48Z", 12 * "id": "609acbef1b76b53fcd37c8e1", 13 * "links": [ 14 * { 15 * "href": "https://cloud.mongodb.com/api/atlas/v1.0/groups/609acbef1b76b53fcd37c8e1", 16 * "rel": "self" 17 * } 18 * ], 19 * "name": "mg-training-sample", 20 * "orgId": "5b4e2d803b34b965050f1835" 21 * } 22 * 23 */ 24 exports = async function() { 25 26 // Retrieve headers to authenticate with a new access token, and define the request URL for the Atlas API endpoint 27 const authHeaders = await context.functions.execute("getAuthHeaders"); 28 const requestUrl = `https://cloud.mongodb.com/api/atlas/v2/groups`; 29 30 // Build the argument for the HTTP request to the Atlas API to get all projects in the organization 31 const arg = { 32 url: requestUrl, 33 headers: authHeaders.headers 34 }; 35 36 // The response body is a BSON.Binary object; parse it and return the `results` array, which contains the list of projects for the organization 37 response = await context.http.get(arg); 38 return EJSON.parse(response.body.text()).results; 39 };
getProjectClusters(<projectId>) chama o endpoint Retornar todos os clusters em um projeto para retornar todos os clusters no projeto com o ID do projeto especificado.
1 /* 2 * Returns an array of the clusters for the supplied project ID. 3 * See https://mongodb.com/pt-br/docs/atlas/reference/api/clusters-get-all/ 4 * 5 * Returns an array of objects. See the API documentation for details. 6 * 7 */ 8 exports = async function(projectId) { 9 10 if (projectId == "Hello world!") { // Easy testing from the console 11 projectId = "<projectId>" 12 } 13 14 // Retrieve headers to authenticate with a new access token, and define the request URL for the Atlas API endpoint 15 const authHeaders = await context.functions.execute("getAuthHeaders"); 16 const requestUrl = `https://cloud.mongodb.com/api/atlas/v2/groups/${projectId}/clusters`; 17 18 // Build the argument for the HTTP request to the Atlas API to get all clusters in the project 19 const arg = { 20 url: requestUrl, 21 headers: authHeaders.headers 22 }; 23 24 // The response body is a BSON.Binary object; parse it and return the `results` array, which contains the list of clusters for the project 25 response = await context.http.get(arg); 26 return EJSON.parse(response.body.text()).results; 27 };
Substitua o espaço reservado <projectId> pelo seu próprio ID do projeto.