En este tutorial, utilizará los activadores programados de Atlas para automatizar las tareas de administración del clúster llamando mediante programación a la API de administración de Atlas.
Este tutorial incluye los siguientes procedimientos:
Configuración inicial: crear una cuenta de servicio con
Project Ownerpermisos para su proyecto Atlas existente, almacene las credenciales de la cuenta de servicio como Valores y Secretos, luego cree Funciones reutilizables que usen estas credenciales para llamar al punto final Actualizar un clúster en un proyecto.Nota
Si prefiere usar claves API en lugar de cuentas de servicio para autenticarse en la API de administración de Atlas con permisos, puede
Project Ownerguardar Claves públicas y privadasde API como valores y secretos para usar en las funciones de este tutorial.Pausar y reanudar clústeres según un cronograma: cree activadores programados para pausar automáticamente los clústeres todas las noches y reanudarlos todas las mañanas de los días laborables.
Escalar clústeressegún un cronograma: cree activadores programados para escalar automáticamente un clúster hacia arriba durante las horas pico y hacia abajo después.
Permisos requeridos
Para completar este tutorial, necesita un usuario con acceso a un proyecto MongoDB Project Owner Atlas.
Configuración inicial
Esta configuración inicial solo se debe completar una vez y permite crear los disparadores programados en esta página para automatizar las tareas de gestión del clúster. Antes de realizar este tutorial, asegúrese de tener un proyecto MongoDB Atlas con al menos un clúster. Este procedimiento realiza las siguientes tareas de configuración:
Crea y guarda credenciales para una cuenta de servicio Atlas que Triggers utilizará para llamar a la API de administración de
Project OwnerAtlas con permisos para su proyecto Atlas existente.Crea una función reutilizable llamada
getAuthHeadersque genera un token de acceso utilizando las credenciales de la cuenta de servicio y devuelve los encabezados de autenticación adecuados para llamar a la API de administración de Atlas.Crea una función reutilizable llamada
modifyClusterque envuelve la API Actualizar un clúster en un proyecto.
Crear una cuenta de servicio.
Para crear una cuenta de servicio que sus activadores puedan usar para llamar a la API de administración de Atlas con permisos para su proyecto Atlas Project Owner existente:
En Atlas, ve a Users página.
Si aún no se muestra, selecciona la organización deseada en el menú Organizations de la barra de navegación.
Haga clic en All Projects en la barra lateral debajo de la sección Identity & Access y seleccione el proyecto que desee.
Haz clic en Project Identity & Access en la barra lateral en la sección Security.
Se muestra la página Usuarios.
Haga clic en.Create Application Service Account
Ingresar la información de la cuenta de servicio.
Nombre: Nombre para su cuenta de servicio. (por ejemplo,
TriggersServiceAccount)Descripción: (opcional) Descripción de su cuenta de servicio. (por ejemplo, Cuenta de servicio para que las funciones de Atlas llamen a la API de administración de Atlas).
Permisos de la cuenta de servicio:
Project Owner
Haga clic en Create.
Esto crea la cuenta de servicio y la agrega automáticamente a la organización principal del proyecto con el
Organization Memberpermiso.Configurar el API Access List.
Agregue direcciones IP al API Access List si desea restringir qué direcciones IP pueden llamar a la API de administración de Atlas con esta cuenta de servicio.
Nota
Si Require IP Access List for the Atlas Administration API está habilitado para su organización, o si agregó alguna dirección IP a la API Access List de su cuenta de servicio, entonces cada solicitud de API de administración de Atlas debe pasar una verificación de lista de acceso IP.
Los activadores y funciones de Atlas envían solicitudes HTTP salientes desde un conjunto específico de direcciones IP salientes. Para que sus activadores programados puedan llamar a la API de administración de Atlas y a otros servicios externos, debe agregar estas direcciones IP al API Access List de su cuenta de servicio.
Para obtener la lista completa de direcciones IP salientes utilizadas por las Funciones de Atlas, consulte Acceso IP saliente de Seguridad de Funciones. Debe agregar cada dirección IP individualmente.
Almacene las credenciales de la cuenta de servicio como valores y secretos.
Cree los siguientes valores y secretos para almacenar las credenciales de su cuenta de servicio:
AtlasClientIdValor que contiene el ID de cliente de su cuenta de servicio.AtlasClientSecretSecreto que contiene el secreto de cliente de su cuenta de servicio.AtlasClientSecretValor vinculado al secreto. Esto le permite acceder al valor secreto del cliente en sus funciones, manteniéndolo almacenado de forma segura como secreto.
En Atlas, diríjase a la página Triggers.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Triggers en la sección Streaming Data.
Vaya a la página Values.
Haga clic en el enlace Linked App Service: Triggers.
En la barra lateral, haz clic en Values en la sección Build.
Almacene el ID del cliente en un valor.
Haga clic Create a Value
Introduzca
AtlasClientIdcomo Value Name.Seleccione el tipo Value.
Seleccione la opción Custom Content e ingrese el ID del cliente.
Nota
Debe ingresar el ID del cliente como un valor de cadena entre comillas (
"<clientId>").Haga clic en Save.
Almacene el secreto del cliente en un Secreto y vincúlelo a un Valor.
Nota
No se puede acceder directamente a los valores secretos, por lo que debe crear un segundo valor que se vincule al secreto.
Haga clic en Create a Value.
Introduzca
AtlasClientSecretcomo Value Name.Seleccione el tipo Value.
Seleccione la opción Link to Secret.
Ingrese
AtlasClientSecrety haga clic en Create "AtlasClientSecret" para nombrar el valor secreto.Pegue el secreto del cliente en el campo Client Secret que aparece debajo del nombre del secreto.
Haga clic en Save para crear el secreto y el valor.
Crea la getAuthHeaders función.
Para crear una función reutilizable que recupere un token de acceso utilizando las credenciales de la cuenta de servicio y devuelva los encabezados de autenticación adecuados para llamar a la API de administración de Atlas:
Vaya a la página Functions.
En la barra lateral, haz clic en Functions en la sección Build.
Haga clic en Create a Function.
La pestaña Settings se muestra de forma predeterminada.
Introduzca
getAuthHeaderscomo Name para la función.Establezca Private en
true. Esta función solo será invocada por otras funciones en este tutorial.Deje las demás opciones de configuración en la pestaña Settings con sus valores predeterminados.
Definir el código de función.
Haga clic en la pestaña Function Editor y pegue el siguiente código para definir la función:
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 }
Crea la modifyCluster función.
Para crear una función reutilizable que envuelva el punto final Actualizar un clúster en un proyecto:
Desde la página Functions, haga clic en Create a Function.
La pestaña Settings se muestra de forma predeterminada.
Introduzca
modifyClustercomo Name para la función.Establezca Private en
true. Esta función solo será invocada por otras funciones en este tutorial.Deje las demás opciones de configuración en la pestaña Settings con sus valores predeterminados.
Definir el código de función.
Haga clic en la pestaña Function Editor y pegue el siguiente código para definir la función:
1 /* 2 * Modifies the cluster as defined by the `body` parameter. 3 * See https://www.mongodb.com/es/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 }; Nota
Código de prueba en el Editor de funciones.
El Function Editor proporciona automáticamente
"Hello world!"como primer argumento al ejecutar una función en el Testing Console. Este código comprueba esa entrada y proporciona valores a los parámetros cuando se recibe"Hello world!".Para probar la función con su propia entrada, reemplace los siguientes valores de marcador de posición con su propia información:
<projectId><clusterName>En el parámetro
body, proporcione una carga útil que contenga las modificaciones que desea realizar en el clúster. El código de ejemplo incluye una carga útil que pausa un clúster.
Pausar y reanudar clústeres según un cronograma
Este procedimiento crea activadores programados para pausar automáticamente los clústeres cada noche y reanudarlos cada mañana entre semana. Esto es útil para clústeres que no son de producción y no necesitan ejecutarse fuera del horario laboral, o para cualquier clúster que desee pausar y reanudar automáticamente según una programación.
Crea la pauseClusters función.
En Atlas, diríjase a la página Triggers.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Triggers en la sección Streaming Data.
Navegar a la página Functions
Haga clic en el enlace Linked App Service: Triggers.
En la barra lateral, haz clic en Functions en la sección Build.
Haga clic en Create a Function.
La pestaña Settings se muestra de forma predeterminada.
Introduzca
pauseClusterscomo Name para la función.Establezca Private en
true. Esta función solo será invocada por el disparadorpauseClustersen este tutorial.Deje las demás opciones de configuración en la pestaña Settings con sus valores predeterminados.
Definir el código de función.
Haga clic en la pestaña Function Editor y pegue el siguiente código para definir la función:
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 }; Reemplace la matriz
projectIDscon sus propios nombres de proyecto y clúster.Nota
Para evitar codificar de forma rígida los nombres de proyectos y clústeres, puede usar las funciones auxiliares al final de este tutorial para recuperar listas de proyectos y clústeres de la API de administración de Atlas y determinar mediante programación qué clústeres pausar y reanudar según un cronograma.
Cree el pauseClusters disparador programado.
Desde la página Functions, navegue a la página Triggers haciendo clic en Triggers en la barra lateral debajo del encabezado Build.
Haga clic en Create a Trigger para abrir la página de configuración del disparador.
Si tiene un disparador existente, haga clic en Add a Trigger
Configurar los ajustes del disparador.
En Trigger Details, establezca la siguiente configuración:
ConfiguraciónValorTipo de activador
Programado
Tipo de cronograma
Avanzado. Esto le permite especificar una expresión CRON para la programación.
Para ejecutar esto todos los días de la semana por la noche a las 6 p. m., hora del este de EE. UU. (que es 22:00 UTC), use la siguiente expresión CRON:
0 22 * * 1-5 Omitir eventos al volver a habilitar
Activado. Esto evita que el disparador se ejecute en programaciones que estaban en cola mientras el disparador estaba deshabilitado.
Tipo de evento
Función. Seleccione la función
pauseClustersdel menú desplegable.Nombre del desencadenador
pauseClustersHaga clic en Save para crear el disparador.
Sus grupos de pruebas ahora se pausarán automáticamente todas las noches a las 6 p. m., hora del este de EE. UU.
Crea la resumeClusters función.
Duplique la función
pauseClustersen una nueva función llamadaresumeClusters.En la pestaña Function Editor, actualice el estado
pausedafalseen el código de función: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 };
Cree el resumeClusters disparador programado.
Desde la página Functions, navegue a la página Triggers haciendo clic en Triggers en la barra lateral debajo del encabezado Build.
Configurar los ajustes del disparador.
En Trigger Details, establezca la siguiente configuración:
ConfiguraciónValorTipo de activador
Programado
Tipo de cronograma
Avanzado. Esto le permite especificar una expresión CRON para la programación.
Para ejecutar esto todos los días de la semana por la mañana a las 8 a. m., hora del este de EE. UU. (que es 12:00 UTC), use la siguiente expresión CRON:
0 12 * * 1-5 Omitir eventos al volver a habilitar
Activado. Esto evita que el disparador se ejecute en programaciones que estaban en cola mientras el disparador estaba deshabilitado.
Tipo de evento
Función. Seleccione la función
resumeClustersdel menú desplegable.Nombre del desencadenador
resumeClustersHaga clic en Save para crear el disparador.
Ahora sus grupos de pruebas se pausarán todas las noches y se reanudarán automáticamente todas las mañanas de los días laborables.
Escalar clústeres según un cronograma
Este procedimiento crea activadores programados para escalar automáticamente un clúster durante las horas punta y reducirlo posteriormente. Esto es útil para clústeres con patrones de uso predecibles donde se desea escalar proactivamente antes de que aumente la carga de trabajo y reducirlo posteriormente para ahorrar costos.
Nota
Atlas admite el escalado automático de clústeres para aumentar automáticamente el nivel o la capacidad de almacenamiento del clúster según el uso o el uso previsto. Sin embargo, si tiene picos de uso predecibles, puede usar activadores programados para escalar proactivamente el clúster antes de que aumente la carga de trabajo.
Crea la scaleClusterUp función.
En Atlas, diríjase a la página Triggers.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Triggers en la sección Streaming Data.
Navegar a la página Functions
Haga clic en el enlace Linked App Service: Triggers.
En la barra lateral, haz clic en Functions en la sección Build.
Haga clic en Create a Function.
La pestaña Settings se muestra de forma predeterminada.
Introduzca
scaleClusterUpcomo Name para la función.Establezca Private en
true. Esta función solo será invocada por el disparadorscaleClusterUpen este tutorial.Deje las demás opciones de configuración en la pestaña Settings con sus valores predeterminados.
Definir el código de función.
Desde la página Create Function, haga clic en la pestaña Function Editor y pegue el siguiente código para definir su función:
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 }; Reemplace los marcadores de posición
<projectId>y<clusterName>con su propio ID de proyecto y nombre de clúster, y ajuste la matrizregionConfigspara su propia topología.Consulta la documentación del punto final Actualizar un clúster en un proyecto para obtener más detalles sobre los campos disponibles que puedes incluir en el cuerpo de la solicitud para modificar la configuración de tu clúster.
Cree el scaleClusterUp disparador programado.
Desde la página Functions, navegue a la página Triggers haciendo clic en Triggers en la barra lateral debajo del encabezado Build.
Haga clic en Create a Trigger para abrir la página de configuración del disparador.
Si tiene un disparador existente, haga clic en Add a Trigger
Configurar los ajustes del disparador.
En Trigger Details, establezca la siguiente configuración:
ConfiguraciónValorTipo de activador
Programado
Tipo de cronograma
Avanzado. Esto le permite especificar una expresión CRON para la programación.
Para ejecutar esto todas las mañanas a las 8 AM, hora del este de EE. UU. (que es 13:00 UTC), use la siguiente expresión CRON:
0 13 * * * Omitir eventos al volver a habilitar
Activado. Esto evita que el disparador se ejecute en programaciones que estaban en cola mientras el disparador estaba deshabilitado.
Tipo de evento
Función. Seleccione la función
pauseClustersdel menú desplegable.Nombre del desencadenador
scaleClusterUpHaga clic en Save para crear el disparador.
Sus clústeres de prueba ahora se ampliarán automáticamente todas las mañanas a las 8 a. m., hora del este de EE. UU.
Crea la scaleClusterDown función.
Duplique la función
scaleClusterUpen una nueva función llamadascaleClusterDown.En la pestaña Function Editor, pegue y ajuste el siguiente código para reducir la escala de su clúster a la configuración 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 }; Reemplace los marcadores de posición
<projectId>y<clusterName>con su propio ID de proyecto y nombre de clúster, y ajuste la matrizregionConfigspara su propia topología.Consulta la documentación del punto final Actualizar un clúster en un proyecto para obtener más detalles sobre los campos disponibles que puedes incluir en el cuerpo de la solicitud para modificar la configuración de tu clúster.
Cree el scaleClusterDown disparador programado.
Desde la página Functions, navegue a la página Triggers haciendo clic en Triggers en la barra lateral debajo del encabezado Build.
Configurar los ajustes del disparador.
En Trigger Details, establezca la siguiente configuración:
ConfiguraciónValorTipo de activador
Programado
Tipo de cronograma
Avanzado. Esto le permite especificar una expresión CRON para la programación.
Para ejecutar esto todas las noches a las 6 p. m., hora del este de EE. UU. (que es 22:00 UTC), use la siguiente expresión CRON:
0 22 * * * Omitir eventos al volver a habilitar
Activado. Esto evita que el disparador se ejecute en programaciones que estaban en cola mientras el disparador estaba deshabilitado.
Tipo de evento
Función. Seleccione la función
scaleClusterDowndel menú desplegable.Nombre del desencadenador
scaleClusterDownHaga clic en Save para crear el disparador.
Juntos, estos dos activadores garantizan que el clúster funcione a mayor capacidad durante las horas pico y luego se reduzca su capacidad.
Funciones auxiliares opcionales
Las siguientes funciones auxiliares se pueden probar desde el editor de funciones Triggers para listar proyectos y clústeres de su organización y especificar los clústeres que desea incluir en las funciones de este tutorial. También puede llamar a estas funciones desde otras funciones para recuperar esta información mediante programación.
getProjects() llama al punto final Devolver todos los proyectos para devolver todos los proyectos de su organización.
1 /* 2 * Returns an array of the projects in the organization 3 * See https://mongodb.com/es/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>) llama al punto final Devolver todos los clústeres en un proyecto para devolver todos los clústeres en el proyecto con el ID de proyecto especificado.
1 /* 2 * Returns an array of the clusters for the supplied project ID. 3 * See https://mongodb.com/es/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 };
Reemplace el marcador de posición <projectId> con su propio ID de proyecto.