Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Enviar eventos de activadores a AWS EventBridge

MongoDB ofrece una fuente de eventos de socio de AWS Eventbridge que permite enviar eventos de Atlas activador a un bus de eventos en lugar de llamar a una función de Atlas. Puede configurar cualquier tipo de activador para enviar eventos a EventBridge. Los activadores de base de datos también admiten el manejo de errores personalizados, para reducir la suspensión de disparadores debido a errores no críticos.

Todo lo que necesitas para enviar eventos de activador a EventBridge es una ID de cuenta de AWS. Esta guía te llevará por el proceso de encontrar tu ID de cuenta, configurar el activador, asociar la fuente de eventos del activador con un bus de eventos y configurar el manejo de errores personalizado.

Nota

Guía oficial de fuente de eventos asociados de AWS

Esta guía se basa en la documentación de Amazon Recepción de eventos de un proveedor SaaS.

Nota

Las entradas individuales para un evento de EventBridge activador deben ser menores de 256 KB.

Aprenda cómo reducir el tamaño de su PutEvents entrada en la sección Optimización del rendimiento.

1

Para enviar eventos de activador a AWS EventBridge, necesitas el AWS account ID de la cuenta que debe recibir los eventos.

  1. Abra la consola de Amazon EventBridge y haga clic en Partner event sources en el menú de navegación.

  2. Busca la fuente del evento de socio MongoDB y luego haz clic en Set up.

  3. Desde la página de fuente de evento de socios de MongoDB, haz clic en Copy para copiar tu ID de cuenta de AWS al portapapeles.

2

Después de tener el AWS account ID, puede configurar un activador de base de datos o un activador programado para enviar eventos a EventBridge.

Puedes configurar el activador en la Interfaz de Usuario de Atlas o usando el App Services CLI.

En la interfaz de Atlas, cree y configure un nuevo activador de base de datos o un activador programado con la siguiente configuración:

  1. Selecciona EventBridge como el tipo de evento.

  2. Pega el AWS Account ID que copiaste de EventBridge.

  3. Seleccionar un AWS Region para enviar los eventos de activador.

    Nota

    Regiones de AWS compatibles

    Para obtener una lista completa de las regiones de AWS compatibles, consulte la guía de Amazon Recibiendo eventos de un socio SaaS.

  4. (Opcional solo para activadores de base de datos) Configure una función para gestionar los errores de activadores.

    Para obtener más detalles, consulte la sección Manejo de errores personalizados en esta página.

    Las casillas de entrada de EventBridge de la configuración del activador.
    haga clic para ampliar
  5. Para habilitar JSON extendido, activa la configuración Enable Extended JSON en la sección Advanced (Optional).

    Por defecto, los Trigger convierten los tipos BSON en los objetos de evento en tipos estándar de JSON.

    Activar JSON extendido conserva la información de tipo BSON al serializar los objetos de evento en el formato JSON extendido en su lugar. Esto preserva la información del tipo a costa de la legibilidad e interoperabilidad.

  1. Autenticar a un usuario de MongoDB Atlas

    Usa tu 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>"
  2. Extrae los archivos de configuración más recientes de tu aplicación

    Ejecute el siguiente comando para obtener una copia local de sus archivos de configuración:

    appservices pull --remote=<App ID>

    Por defecto, el comando arrastra los archivos al directorio de trabajo actual. Puede especificar una ruta de directorio con el indicador opcional --local.

  3. Crea un archivo de configuración de activador en tu directorio /triggers local. Omitir el campo function_name y definir un procesador de eventos AWS_EVENTBRIDGE.

  4. Establece el campo account_id en el AWS Account ID que copiaste de EventBridge.

  5. Configure el campo region en 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 de Amazon Recibiendo eventos de un socio SaaS.

  6. To enable Extended JSON, set the extended_json_enabled field to true.

    Por defecto, los Trigger convierten los tipos BSON en los objetos de evento en tipos estándar de JSON.

    Activar JSON extendido conserva la información de tipo BSON al serializar los objetos de evento en el formato JSON extendido en su lugar. Esto preserva la información del tipo a costa de la legibilidad e interoperabilidad.

  7. (Opcional solo para activadores de base de datos) Configure una función para gestionar los errores de activadores.

    Para obtener más detalles, consulte la sección Manejo de errores personalizados en esta página.

El archivo de configuración del activador debe parecerse al siguiente:

{
"name": "...",
"type": "...",
"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "<AWS Account ID>",
"region": "<AWS Region>",
"extended_json_enabled": <boolean>
}
}
}
}
3

Vuelve a la consola de EventBridge.

  1. Seleccionar fuentes de eventos de Partner en el panel de navegación.

  2. En la tabla Partner event sources, encuentra y selecciona la fuente del activador Pending, luego haz clic en Associate with event bus.

  3. En la pantalla Associate with event bus, define los permisos de acceso requeridos para otras cuentas y organizaciones, luego haz clic en Associate.

Después de confirmar la asociación, el estado de la fuente del evento activador cambia de Pending a Active, y el nombre del bus de eventos se actualiza para que coincida con el nombre de la fuente del evento. Ahora puedes crear reglas que se activen por eventos de esa fuente de eventos de socio.

Para más información, consulta Crear una regla que se active en un evento de socio SaaS.

Nota

Only Database Triggers Support Custom Error Handlers

Actualmente, sólo los activadores de base de datos admiten el manejo de errores personalizados. En este momento, los activadores de autenticación y los activadores programados no admiten el manejo de errores personalizados.

Puedes crear un controlador de errores para que se ejecute ante una falla de un activador cuando el reintento no tenga éxito. El manejo personalizado de errores permite determinar si un error de AWS EventBridge es lo suficientemente crítico como para suspender el activador, o si es aceptable ignorar el error y continuar procesando otros eventos.

Para más información sobre los activadores de base de datos suspendidos, consulta Triggers suspendidos.

Puedes crear un nuevo gestor de errores en la Interfaz de Usuario de Atlas, usando la CLI de App Services, o a través de la App Services Admin API.

Este procedimiento te guía a través de cómo crear la nueva función directamente en la página Create a Trigger.

También puedes crear la Function desde la página Functions. Para obtener más información sobre cómo definir Funciones en Atlas, consulta Definir una Función.

The EventBridge custom error handling configuration in the UI.
1

Desde la sección Configure Error Function de la página Create a Trigger, seleccione + NewFunction.

You can also select an existing Function, if one is already defined, from the dropdown.

2

Introduce un nombre identificativo único para la función en el campo Name. Este nombre debe ser distinto de todas las demás funciones de la aplicación.

3

En la sección Function, escribe el código JavaScript directamente en el editor de funciones. El editor de funciones contiene una función por defecto que puedes editar según sea necesario. Para más información sobre la creación de Funciones, consulta la documentación de las Funciones.

4

En la pestaña Testing Console que se encuentra debajo del editor de la Función, puedes probar la Función introduciendo valores de ejemplo en 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.

Click Run to run the test.

5

Once you are satisfied with the custom error handler, click Save.

Puedes actualizar la configuración del activador con un controlador de errores usando la App Services CLI. Para obtener más información, consulte el procedimiento Actualizar una aplicación.

1

Usa tu 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>"
2

Ejecute el siguiente comando para obtener una copia local de sus archivos de configuración:

appservices pull --remote=<App ID>

Por defecto, el comando arrastra los archivos al directorio de trabajo actual. Puede especificar una ruta de directorio con el indicador opcional --local.

3

Sigue los pasos en Definir una función para escribir tu código fuente del manejador de errores y tu archivo de configuración.

Consulta el siguiente controlador de errores de la plantilla como ejemplo:

<functionName>.js
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.

4

Agrega un atributo error_handler al archivo de configuración de activador en la carpeta Triggers.

El archivo de configuración del activador debe parecerse al siguiente:

<triggerName>.json
{
"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.

5

Ejecute el siguiente comando para implementar sus cambios:

appservices push

Nota

Este procedimiento hace referencia a los puntos finales de la API de App Services Admin. No usa los puntos de conexión de la API de Administración de Atlas.

1

Llama al endpoint de Inicio de sesión con tu par de claves 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>"
}'

If authentication succeeds, the response body contains a JSON object with an access_token value:

{
"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.

2

A draft represents a group of application changes that you can deploy or discard as a single unit. If you don't create a draft, updates automatically deploy individually.

To create a draft, send a POST request with no body to the Create a Deployment Draft endpoint:

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>'
3

Cree la función para gestionar errores ante la falla de un activador de AWS EventBridge a través de una solicitud POST al Crear una nueva Función endpoint.

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
}'
4

Create the AWS EventBridge Trigger with error handling enabled via a POST request to the Create a Trigger endpoint.

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"
}
}'
5

Si has creado un borrador, puedes implementar todos los cambios en el borrador enviando una POST solicitud sin cuerpo al punto final Implementar un borrador de implementación.

Si no creaste un borrador como primer paso, las solicitudes individuales de función y activador 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>' \

The default error handler has two parameters: error and changeEvent.

Tiene los siguientes dos atributos:

  • code: El código de error de la solicitud PUT de EventBridge. Para ver la lista de códigos de error que utiliza el gestor de errores, consulte la sección Códigos de error de esta página.

  • message: El mensaje de error no filtrado de una solicitud fallida de EventBridge put.

The requested change to your data made by EventBridge. For more information on types of change events and their configurations, see Change Event Types.

Si se recibió un error de EventBridge, el procesador de eventos analizará el error como DOCUMENT_TOO_LARGE o OTHER. Este error analizado se pasa a la función del manejador de errores a través del parámetro error.

Si la entrada para un evento de activador de EventBridge es mayor de 256 KB, EventBridge generará un error. El error contendrá cualquiera de los siguientes elementos:

Para obtener más información sobre cómo reducir el tamaño de las entradas, consulte Optimización del rendimiento.

The default bucket for all other errors.

Tip

Optimiza el manejo de errores para los errores con código OTHER

You can make special error handling cases for your most common error messages to optimize your error handling for errors with an OTHER code. To determine which errors need special cases, we recommended keeping track of the most common error messages you receive in error.message.

You can view Trigger Error Handler logs for your EventBridge Trigger error handler in the application logs.

Desde la página Triggers de la interfaz de usuario de Atlas, selecciona la pestaña Logs.

Todos los registros se muestran por defecto. Para ver solo los registros del gestor de errores, haz clic en el botón Show errors only.

Pasa el valor trigger_error_handler a la bandera --type para ver todos los registros del manejador de errores.

appservices logs list --type=trigger_error_handler

Nota

Este procedimiento hace referencia a los puntos finales de la API de App Services Admin. No usa los puntos de conexión de la API de Administración de Atlas.

Recuperar los registros de tipo TRIGGER_ERROR_HANDLER mediante una solicitud GET al punto final Recopilar registros de Aplicación Services:

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 aprender más acerca de cómo ver los registros de aplicaciones, consulta Ver registros de aplicaciones.

El siguiente objeto configura un activador para enviar eventos a AWS EventBridge y gestionar errores:

"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "012345678901",
"region": "us-east-1"
}
}
},
"error_handler": {
"config": {
"enabled": true,
"function_name": "myErrorHandler.js"
}
}

Las entradas individuales para un evento de EventBridge activador deben ser menores de 256 KB.

Para obtener más información, consulte la Documentación de AWS para calcular el tamaño de entrada de eventos de Amazon PutEvents. Cuando se utilizan activadores de base de datos, la expresión de proyecto puede incluir solo los campos especificados, lo que reduce el tamaño del documento antes de enviar mensajes a EventBridge. Para obtener más detalles sobre la Expresión de Proyecto, consulta la documentación de Expresión de Proyecto en activadores de base de datos.