MongoDB ofrece una Fuente de eventos de socio deAWS Eventbridge 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.
Solo necesita un ID de cuenta de AWS para enviar eventos de disparador a EventBridge. Esta guía le guiará en el proceso de encontrar su ID de cuenta, configurar el disparador, 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
Las entradas individuales para un evento desencadenador de EventBridge deben ser menores a 256 KB.
Aprenda a reducir el tamaño de su PutEvents Entrada 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 del evento de socio MongoDB y luego haga clic en Set up.
Desde 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
Después de tener el AWS account ID, puedes configurar un Disparador de base de datos o disparador programado para enviar eventos a EventBridge.
Puede configurar el disparador en la interfaz de usuario de Atlas o mediante la CLI de App Services.
En la interfaz de usuario de Atlas, cree y configure un nuevo disparador de base de datos o un disparador programado con las siguientes configuraciones:
Seleccione EventBridge como tipo de evento.
Pegue el AWS Account ID que copió de EventBridge.
Seleccione un AWS Region al cual enviar los eventos de activación.
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.
(Opcional solo para activadores de base de datos) Configure una función para manejar errores de activación.
Para obtener más detalles, consulte la sección Manejo de errores personalizados en esta página.
haga clic para ampliarPara habilitar JSON extendido, alterne la configuración Enable Extended JSON en la sección Advanced (Optional).
De forma predeterminada, los activadores convierten los tipos BSON de los objetos de evento en tipos JSON estándar.
Al habilitar JSON Extendido, se conserva la información de tipo BSON serializando los objetos de evento en formato JSON Extendido. Esto preserva la información de tipo, pero perjudica la legibilidad y la interoperabilidad.
Autenticar un usuario de MongoDB Atlas
Utilice su clave API de administración de MongoDB Atlas para iniciar sesión en la CLI de App Services:
appservices login --api-key="<API KEY>" --private-api-key="<PRIVATE KEY>" Extraiga los últimos archivos de configuración de su aplicación
Ejecute el siguiente comando para obtener una copia local de sus archivos de configuración:
appservices pull --remote=<App ID> De forma predeterminada, el comando extrae los archivos al directorio de trabajo actual. Puede especificar una ruta de directorio con el indicador opcional
--local.Cree un archivo de configuración de disparador en su directorio local
/triggers. Omita el campofunction_namey defina un procesador de eventosAWS_EVENTBRIDGE.Establezca el campo
account_iden el AWS Account ID que copió de EventBridge.Establezca el campo
regionen una región de AWS.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.
Para habilitar JSON extendido, configure el campo
extended_json_enabledentrue.De forma predeterminada, los activadores convierten los tipos BSON de los objetos de evento en tipos JSON estándar.
Al habilitar JSON Extendido, se conserva la información de tipo BSON serializando los objetos de evento en formato JSON Extendido. Esto preserva la información de tipo, pero perjudica la legibilidad y la interoperabilidad.
(Opcional solo para activadores de base de datos) Configure una función para manejar errores de activación.
Para obtener más detalles, consulte la sección Manejo de errores personalizados 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> } } } }
Asociar la fuente del evento de activación con un bus de eventos
Regrese a la consola EventBridge.
Seleccione fuentes de eventos de socios en el panel de navegación.
En la tabla Partner event sources, busque y seleccione la fuente de activación Pending y, a continuación, haga clic en Associate with event bus.
En la pantalla Associate with event bus, defina los permisos de acceso necesarios para otras cuentas y organizaciones, luego haga clic en Associate.
Tras confirmar la asociación, 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 crear reglas que se activen con eventos de ese origen de eventos asociado.
Para obtener más información,consulte Creación de una regla que se activa en un evento de socio de SaaS.
Manejo de errores personalizado
Nota
Solo los activadores de base de datos admiten controladores de errores personalizados
Actualmente, solo los disparadores de base de datos admiten la gestión de errores personalizada. Los disparadores de autenticación y los disparadores 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 activadores de base de datos suspendidos, consulte Activadores suspendidos.
Crear un nuevo controlador de errores personalizado
Puede crear un nuevo controlador de errores en la interfaz de usuario de Atlas, mediante la CLI de App Services o a través de la API de administración de App Services.
Este procedimiento le mostrará cómo crear la nueva función directamente en la página Create a Trigger.
También puede crear la función desde la Functions página. Para obtener más información sobre cómo definir funciones en Atlas, consulte 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.
Puedes actualizar la configuración de tu disparador con un controlador de errores mediante la CLI de App Services. Para obtener más información, consulta el procedimiento "Actualizar una aplicación".
Autenticar un usuario de MongoDB Atlas
Utilice su clave API de administración de MongoDB Atlas para iniciar sesión en la CLI de App Services:
appservices login --api-key="<API KEY>" --private-api-key="<PRIVATE KEY>"
Extraiga los últimos archivos de configuración de su aplicación
Ejecute el siguiente comando para obtener una copia local de sus archivos de configuración:
appservices pull --remote=<App ID>
De forma predeterminada, el comando extrae los archivos al directorio de trabajo actual. Puede especificar una ruta de directorio con el indicador opcional --local.
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.
Vea el siguiente controlador de errores de plantilla como ejemplo:
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}'); };
Para más información sobre la creación de funciones, consulta Funciones.
Agregue el controlador de errores a la configuración de su disparador
Agregue un atributo error_handler a su archivo de configuración de disparador en la carpeta Triggers.
El archivo de configuración del disparador debe parecerse 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, consulte Archivos de configuración de activadores.
Implementar sus cambios
Ejecute el siguiente comando para implementar sus cambios:
appservices push
Nota
Este procedimiento se refiere a los puntos de conexión de la API de administración de App Services.No utiliza los puntos de conexión de la API de administración de Atlas.
Autenticar un usuario de MongoDB Atlas
Llame al punto final de inicio de sesión con su par de claves de API de administración 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. Debes incluirlo como un token Bearer en el encabezado Authorization para todas las solicitudes de la App Services Admin API.
Tip
Documentación de autenticación de la API de administración de App Services
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 sus cambios
Si creó un borrador, puede implementar todos los cambios en el borrador 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 de función y disparador individuales se implementan 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:
codeEl código de la solicitud de put de EventBridge con error. Para ver la lista de códigos de error utilizados por el controlador de errores, consulte la sección "Códigos de error" en esta página.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 recibe un error de EventBridge, el procesador de eventos lo analizará como DOCUMENT_TOO_LARGE o OTHER. Este error 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 de activación de EventBridge supera los 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 las entradas, consulte Optimización del 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.
Desde la página Triggers de la interfaz de usuario de Atlas, seleccione la pestaña Logs.
Todos los registros se muestran de forma predeterminada. Para ver solo los registros del controlador de errores, haga clic en el botón Show errors only.
Pase el valor trigger_error_handler al indicador --type para ver todos los registros del controlador de errores.
appservices logs list --type=trigger_error_handler
Nota
Este procedimiento se refiere a los puntos de conexión de la API de administración de App Services.No utiliza los puntos de conexión de la API de administración de Atlas.
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
Las entradas individuales para un evento desencadenador de EventBridge deben ser menores a 256 KB.
Para obtener más información, consulte la documentación de AWS para calcular el tamaño de la entrada del evento Amazon PutEvents. Al usar disparadores de base de datos, la expresión de proyecto solo puede incluir campos específicos, lo que reduce el tamaño del documento antes de enviar mensajes a EventBridge. Para obtener más información sobre la expresión de proyecto, consulte la documentación de la expresión de proyecto del disparador de base de datos.
