Overview
MongoDB ofrece un AWS Eventbridge Fuente de eventos asociada que permite enviar eventos de disparador de Atlas a un bus de eventos en lugar de llamar a una función de Atlas. Puede configurar cualquier tipo de disparador para enviar eventos a EventBridge. Los disparadores de base de datos también admiten la gestión de errores personalizada para reducir las suspensiones de disparadores debido a errores no críticos.
Para enviar eventos de Trigger a EventBridge, solo necesita un ID de cuenta de AWS. Esta guía explica cómo encontrar su ID de cuenta, configurar el Trigger, asociar su origen con un bus de eventos y configurar la gestión de errores personalizada.
Nota
Guía oficial de fuente de eventos asociados de AWS
Esta guía se basa en la documentación de Recepción de eventos de un socio SaaS de Amazon.
Procedimiento
Nota
La entrada PUT de AWS para un evento desencadenador de EventBridge debe ser menor a 256 KB.
Aprenda cómo reducir el tamaño de su entrada PutEvents en la sección Optimización del rendimiento.
Configurar la fuente del evento de socio de MongoDB
Para enviar eventos de activación a AWS EventBridge, necesita el AWS account ID de la cuenta que debe recibir los eventos. Abra la consola de Amazon EventBridge y Partner event sources haga clic en en el menú de navegación. Busque la fuente de eventos del MongoDB socio y haga clic Set up en.
En la página de origen del evento de socio MongoDB, haga clic en Copy para copiar su ID de cuenta de AWS al portapapeles.
Configurar el disparador
Una vez que tenga el AWS account ID, puede configurar un disparador para enviar eventos a EventBridge.
En la interfaz de usuario de App Services, cree y configure un nuevo disparador de base de datos, un disparador de autenticación o un disparador programado y seleccione el EventBridge tipo de evento.
Pegue el AWS Account ID que copió de EventBridge y seleccione un AWS Region al cual enviar los eventos desencadenadores.
Opcionalmente, puede configurar una función para gestionar errores de disparador. La gestión de errores personalizada solo es válida para disparadores de base de datos. Para más información, consulte la sección "Gestión de errores personalizada" en esta página.

De forma predeterminada, los activadores convierten los tipos BSON de los objetos de evento en tipos JSON estándar. Para conservar la información de los tipos BSON, puede serializar los objetos de evento en formato JSON extendido. El JSON extendido conserva la información de los tipos, a costa de la legibilidad y la interoperabilidad.
Para habilitar JSON extendido, haga clic en el interruptor Enable Extended JSON en la sección Advanced (Optional).
Cree un archivo de configuración de disparador en el /triggers directorio. Omita el campo function_name y defina un procesador de eventos AWS_EVENTBRIDGE.
Establezca el campo account_id en el AWS Account ID que copió de EventBridge y establezca el campo region en una región de AWS.
De forma predeterminada, los activadores convierten los tipos BSON de los objetos de evento en tipos JSON estándar. Para conservar la información de los tipos BSON, puede serializar los objetos de evento en formato JSON extendido. El JSON extendido conserva la información de los tipos, a costa de la legibilidad y la interoperabilidad.
Para habilitar JSON extendido, configure el campo extended_json_enabled en true.
Opcionalmente, puede configurar una función para gestionar errores de disparador. La gestión de errores personalizada solo es válida para disparadores de base de datos. Para más información, consulte la sección "Gestión de errores personalizada" en esta página.
El archivo de configuración del disparador debe parecerse al siguiente:
{ "name": "...", "type": "...", "event_processors": { "AWS_EVENTBRIDGE": { "config": { "account_id": "<AWS Account ID>", "region": "<AWS Region>", "extended_json_enabled": <boolean> } } } }
Nota
Regiones de AWS compatibles
Para obtener una lista completa de las regiones de AWS compatibles, consulte la guía Recepción de eventos de un socio SaaS de Amazon.
Asociar la fuente del evento de activación con un bus de eventos
Regrese a la consola de EventBridge y seleccione Orígenes de eventos de socios en el panel de navegación. En la tabla Partner event sources, busque y seleccione el origen del disparador Pending y haga clic en Associate with event bus.
En la pantalla Associate with event bus, define los permisos de acceso que se requieran para otras cuentas y organizaciones, y luego haz clic en Associate.
Una vez confirmado, el estado del origen del evento de activación cambia de Pending a Active y el nombre del bus de eventos se actualiza para coincidir con el nombre del origen del evento. Ahora puede empezar a crear reglas que se activen con eventos de ese origen de eventos de socio. Para obtener más información, consulte Crear una regla que se active con un evento de socio SaaS.
Manejo de errores personalizado
Nota
Solo los activadores de base de datos admiten controladores de errores personalizados
Actualmente, solo los activadores de base de datos admiten la gestión de errores personalizada. Los activadores de autenticación y los activadores programados no la admiten.
Puede crear un controlador de errores que se ejecute si falla un disparador, cuando el reintento no se realiza correctamente. El control de errores personalizado le permite determinar si un error de AWS EventBridge es lo suficientemente crítico como para suspender el disparador o si es aceptable ignorarlo y continuar procesando otros eventos. Para obtener más información sobre los disparadores de base de datos suspendidos, consulte Disparadores suspendidos.
Crear un nuevo controlador de errores personalizado
Puedes crear la nueva función directamente en la página "Crear un disparador", como se muestra a continuación, o desde la pestaña "Funciones". Para obtener más información sobre cómo definir funciones en App Services,consulta "Definir una función".

Escribe el código de función
En la Function sección, escribe el código JavaScript directamente en el editor de funciones. Este editor contiene una función predeterminada que puedes editar según sea necesario. Para obtener más información sobre la creación de funciones, consulta la documentación de Funciones.
Pruebe la función
En la pestaña Testing Console debajo del editor de funciones, puede probar la función pasando valores de ejemplo a los parámetros error y changeEvent, como se muestra en los comentarios de la consola de pruebas.
Para obtener más información sobre estos parámetros, consulte la sección Parámetros del controlador de errores en esta página.
Haga clic en Run para ejecutar la prueba.
Para actualizar la configuración de su disparador con un controlador de errores, siga estos pasos para actualizar una aplicación. Al actualizar sus archivos de configuración en el 3 paso, haga lo siguiente:
Escriba el controlador de errores
Siga los pasos de Definir una función para escribir el código fuente y el archivo de configuración de su controlador de errores.
Para obtener el código fuente del controlador de errores, consulte el siguiente controlador de errores de plantilla:
exports = async function(error, changeEvent) { // This sample function will log additional details if the error is not // a DOCUMENT_TOO_LARGE error if (error.code === 'DOCUMENT_TOO_LARGE') { console.log('Document too large error'); // Comment out the line below in order to skip this event and not suspend the Trigger throw new Error(`Encountered error: ${error.code}`); } console.log('Error sending event to EventBridge'); console.log(`DB: ${changeEvent.ns.db}`); console.log(`Collection: ${changeEvent.ns.coll}`); console.log(`Operation type: ${changeEvent.operationType}`); // Throw an error in your function to suspend the trigger and stop processing additional events throw new Error(`Encountered error: ${error.message}`); };
Agregue un controlador de errores a su configuración de disparador
Agregue un atributo error_handler al archivo de configuración del disparador en la carpeta Triggers. El archivo de configuración del disparador debería ser similar al siguiente:
{ "name": "...", "type": "DATABASE", "event_processors": { "AWS_EVENTBRIDGE": { "config": { "account_id": "<AWS Account ID>", "region": "<AWS Region>", "extended_json_enabled": <boolean> } } }, "error_handler": { "config": { "enabled": <boolean>, "function_name": "<Error Handler Function Name>" } } }
Para obtener más información sobre los archivos de configuración de activadores, consulte Archivos de configuración de activadores.
Autenticar un usuario de MongoDB Atlas
Llame al punto final de autenticación del usuario administrador con su par de claves API de MongoDB Atlas:
curl -X POST \ https://services.cloud.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login \ -H 'Content-Type: application/json' \ -H 'Accept: application/json' \ -d '{ "username": "<Public API Key>", "apiKey": "<Private API Key>" }'
Si la autenticación es exitosa, el cuerpo de la respuesta contiene un objeto JSON con un valor access_token:
{ "access_token": "<access_token>", "refresh_token": "<refresh_token>", "user_id": "<user_id>", "device_id": "<device_id>" }
El access_token otorga acceso a la API de administración de App Services. Debe incluirlo como token de portador en el encabezado Authorization para todas las solicitudes de la API de administración.
Crear un borrador de implementación (opcional)
Un borrador representa un grupo de cambios en la aplicación que se pueden implementar o descartar como una sola unidad. Si no se crea un borrador, las actualizaciones se implementan automáticamente de forma individual.
Para crear un borrador, envíe una POST solicitud sin cuerpo al punto final Crear un borrador de implementación:
curl -X POST 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/drafts' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <access_token>'
Crear la función de gestión de errores
Cree la función para manejar errores de un disparador de AWS EventBridge fallido a través de una POST solicitud al punto final Crear una nueva función.
curl -X POST \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/functions \ -H 'Authorization: Bearer <access_token>' \ -d '{ "name": "string", "private": true, "source": "string", "run_as_system": true }'
Crear el disparador de AWS EventBridge
Cree el disparador de AWS EventBridge con el manejo de errores habilitado a través de una POST solicitud al punto final Crear un disparador.
curl -X POST \ https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/triggers \ -H 'Authorization: Bearer <access_token>' \ -d '{ "name": "string", "type": "DATABASE", "config": { "service_id": "string", "database": "string", "collection": "string", "operation_types": { "string" }, "match": , "full_document": false, "full_document_before_change": false, "unordered": true }, "event_processors": { "AWS_EVENTBRIDGE": { "account_id": "string", "region": "string", "extended_json_enabled": false }, }, "error_handler": { "enabled": true, "function_id": "string" } }'
Implementar el borrador
Si creó un borrador, puede implementar todos los cambios enviando una POST solicitud sin cuerpo al punto final "Implementar un borrador de implementación". Si no creó un borrador como primer paso, las solicitudes individuales de funciones y activadores se implementaron automáticamente.
curl -X POST \ 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/drafts/{draftId}/deployment' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <access_token>' \
Error Handler Parameters
El controlador de errores predeterminado tiene dos parámetros: error y changeEvent.
error
Tiene los dos atributos siguientes:
code: el código para la solicitud de registro con error de EventBridge. Para obtener una lista de los códigos de error utilizados por el controlador de errores, consulta la sección a continuación.message: El mensaje de error no filtrado de una solicitud fallida de EventBridge put.
changeEvent
El cambio solicitado en sus datos realizado por EventBridge. Para obtener más información sobre los tipos de eventos de cambio y sus configuraciones, consulte Tipos de eventos de cambio.
Códigos de error
Si se recibió un error de EventBridge, el procesador de eventos lo analizará como DOCUMENT_TOO_LARGE o OTHER. Este error analizado se pasa a la función de gestión de errores mediante el parámetro error.
DOCUMENT_TOO_LARGE
Si la entrada de un evento desencadenador de EventBridge es mayor que 256 KB, EventBridge generará un error. El error contendrá:
código de estado: 400 y
total size of the entries in the request is over the limit.Código de estado:, 413 que indica una carga útil demasiado grande.
Para obtener más información sobre cómo reducir el tamaño de entrada, consulta la sección a continuación de Optimización de rendimiento.
OTHER
El contenedor predeterminado para todos los demás errores.
Tip
Optimiza el manejo de errores para los errores con código OTHER
Puede crear casos especiales de gestión de errores para los mensajes de error más comunes a fin de optimizar la gestión de errores con código OTHER. Para determinar qué errores requieren casos especiales, le recomendamos realizar un seguimiento de los mensajes de error más comunes que recibe en error.message.
Registros del controlador de errores
Puede ver los registros del controlador de errores de activación de su controlador de errores de activación de EventBridge en los registros de la aplicación.
Haga clic en
Logsen la navegación izquierda de la interfaz de usuario de Servicios de aplicaciones.Haga clic en el menú desplegable Filter by Type y seleccione Triggers Error Handlers para ver todos los registros del controlador de errores de la aplicación.
Pase el valor trigger_error_handler al indicador --type para ver todos los registros del controlador de errores de la aplicación.
appservices logs list --type=trigger_error_handler
Recupere TRIGGER_ERROR_HANDLER registros de tipo a través de una GET solicitud al punto final Recuperar registros de servicios de aplicaciones:
curl -X GET 'https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/logs' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <access_token>' -d '{ "type": "TRIGGER_ERROR_HANDLER" }'
Para obtener más información sobre cómo ver los registros de aplicaciones, consulte Ver registros de aplicaciones.
Ejemplo de evento
El siguiente objeto configura un disparador para enviar eventos a AWS Eventbridge y manejar errores:
"event_processors": { "AWS_EVENTBRIDGE": { "config": { "account_id": "012345678901", "region": "us-east-1" } } }, "error_handler": { "config": { "enabled": true, "function_name": "myErrorHandler.js" } }
Optimización del rendimiento
La entrada PUT de AWS para un evento desencadenador de EventBridge debe ser menor a 256 KB.
Para obtener más información, consulte la documentación de AWS para calcular el tamaño de entrada del evento Amazon PutEvents.
Al usar disparadores de base de datos, la expresión de proyecto puede ser útil para reducir el tamaño del documento antes de enviar mensajes a EventBridge. Esta expresión permite incluir solo los campos especificados, lo que reduce el tamaño del documento.
Obtenga más información en la documentación de Expresión de proyecto de activación de base de datos.