Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Tutorial: llamar a una API de terceros desde un activador

En este tutorial, crearás un disparador de base de datos. El disparador llama a una API de terceros cuando se inserta un documento en una colección. La función del disparador agrega el Kit de Desarrollo de Software (SDK) oficial de AWS como dependencia externa. A continuación, la función utiliza el SDK para escribir el documento insertado en un bucket S3 como un objeto JSON extendido.

El ejemplo de AWS S3 en este tutorial ilustra un patrón que se aplica a cualquier servicio de terceros que tenga una biblioteca Node.js:

  • Agregue el paquete npm del servicio como una dependencia externa.

  • Almacena las credenciales necesarias como Secretos y haz referencia a ellas desde los Valores en tu Función.

  • Importa el paquete con require() dentro de tu función y llámalo usando las credenciales que almacenaste.

Para completar este tutorial, debes tener:

Crea los siguientes valores y secretos para almacenar tus credenciales de AWS:

  • AwsAccessKeyId: Valor que contiene su ID de clave de acceso de AWS.

  • AwsSecretAccessKeySecret: Secreto que contiene su clave de acceso secreta de AWS.

  • AwsSecretAccessKey: Valor que vincula con el secreto. Esto le permite acceder a la clave de acceso secreta en su función, manteniéndola almacenada de forma segura como un secreto.

1

En Atlas, diríjase a la página Triggers.

  1. 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.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Triggers en la sección Streaming Data.

Se muestra la página de Triggers.

  1. Haga clic en el botón View All Apps.

  2. Haz clic en la aplicación en la que deseas crear el activador.

  3. En la barra lateral, haz clic en Values en la sección Build.

2
  1. Haga clic en Create a Value.

  2. Introduce AwsAccessKeyId como Value Name.

  3. Selecciona el tipo Value.

  4. Seleccione la opción Custom Content e ingrese su ID de clave de acceso de AWS.

    Nota

    Debe introducir el ID de la clave de acceso como un valor de cadena entre comillas ("<accessKeyId>").

  5. Haga clic en Save Draft.

3

Nota

No se puede acceder directamente a los valores secretos, por lo que se debe crear un segundo valor que se vincule al secreto.

  1. Haga clic en Create a Value.

  2. Introduce AwsSecretAccessKey como Value Name.

  3. Selecciona el tipo Value.

  4. Seleccione la opción Link to Secret.

  5. Introduzca AwsSecretAccessKeySecret y haga clic en Create "AwsSecretAccessKeySecret" para nombrar el secreto.

    Pegue su clave de acceso secreta de AWS en el campo que aparece debajo del nombre del secreto.

  6. Haga clic en Save Draft para crear tanto el Secreto como el Valor.

Crea un disparador de base de datos que llame a una nueva función cuando se inserte un documento. Agrega la dependencia aws-sdk y define el código de la función en el mismo formulario.

1

En Atlas, diríjase a la página Triggers.

  1. 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.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Triggers en la sección Streaming Data.

Se muestra la página de Triggers.

2
  1. Haz clic en Add Trigger para abrir la página de configuración del activador.

  2. Seleccione el tipo de activador Database y, a continuación, configure el activador utilizando los siguientes valores:

    Configuración
    Valor
    Trigger Name

    WriteDocumentToS3Trigger

    Watch Against

    Collection

    Cluster Name

    Nombre de su clúster de prueba

    Database Name

    Nombre de su base de datos de prueba

    Collection Name

    Nombre de su colección de pruebas

    Operation Type

    Seleccione solo Insert.

    Event Type

    Function

  3. En la sección Function, seleccione + New Function.

3
  1. En la sección Function, haga clic en Add Dependency.

  2. En la ventana Add Dependency, ingrese aws-sdk como Define a Package Name y deje Package Version en blanco para usar la última versión.

  3. Haz clic en Add para agregar el paquete.

4

Reemplace YOUR_AWS_REGION y YOUR_S3_BUCKET_NAME con su propia región de AWS y el nombre completo del bucket desde la consola de administración de AWS.

1/*
2 * Write a newly-inserted document to an S3 bucket as an Extended JSON object.
3 */
4exports = async function writeDocumentToS3(changeEvent) {
5 const { fullDocument } = changeEvent;
6
7 // require calls must be in the exports function
8 const S3 = require("aws-sdk/clients/s3");
9 const s3 = new S3({
10 accessKeyId: context.values.get("AwsAccessKeyId"),
11 secretAccessKey: context.values.get("AwsSecretAccessKey"),
12 region: "YOUR_AWS_REGION",
13 });
14
15 const key = `inserted-documents/${fullDocument._id.toString()}.json`;
16
17 // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
18 await s3.putObject({
19 Bucket: "YOUR_S3_BUCKET_NAME",
20 Key: key,
21 Body: EJSON.stringify(fullDocument),
22 ContentType: "application/json",
23 }).promise();
24
25 return `Wrote document ${fullDocument._id} to ${key}`;
26};

Cada vez que se inserta un documento, la función realiza lo siguiente:

  • Lee el documento insertado desde el campo fullDocument del evento de cambio.

  • Crea un cliente S3 que se autentica con las credenciales de AWS almacenadas en sus Valores.

  • Escribe el documento en el prefijo inserted-documents/ de su bucket como <_id>.json.

Nota

La función utiliza el _id del documento como parte de la clave del objeto S3. Si sus documentos utilizan un tipo _id distinto de ObjectId, es posible que la clave no sea la esperada.

5

Importante

Si la opción de borradores de implementación está habilitada para tu aplicación, haz clic en Review & Deploy para implementar los valores, secretos, dependencias, funciones y activadores. Hasta que no los implementes, el activador no se ejecutará y el siguiente paso fallará.

Inserta un documento de prueba en la colección que supervisa el activador. Confirma que aparece un objeto JSON extendido correspondiente en tu bucket S3 bajo el prefijo inserted-documents/.

1

Para saber cómo hacerlo, consulta Conectarse a un clúster mediante mongosh.

2

El siguiente ejemplo inserta un documento en la colección de prueba. Reemplace YOUR_DATABASE_NAME y YOUR_COLLECTION_NAME con la base de datos y la colección que ingresó al crear el desencadenador.

// Replace YOUR_DATABASE_NAME and YOUR_COLLECTION_NAME with the
// database and collection that the Trigger watches.
use YOUR_DATABASE_NAME
db.YOUR_COLLECTION_NAME.insertOne({
tutorialTest: "atlas-trigger-s3",
createdAt: new Date()
})

Observe el valor insertedId de su resultado. La función utiliza este valor como nombre del objeto S3.

3

En la consola de administración de AWS, abra su bucket S3 y navegue hasta el prefijo inserted-documents/. Aparecerá un objeto llamado <insertedId>.json, donde <insertedId> es el valor insertedId del paso anterior.

Nota

Si el objeto no aparece, revise los registros de ejecución del activador. Para saber cómo hacerlo, consulte Registros del activador.