Procesamiento por lotes y simultaneidad de canalizaciones de Amazon EventBridge - Amazon EventBridge

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Procesamiento por lotes y simultaneidad de canalizaciones de Amazon EventBridge

Comportamiento de procesamiento por lotes

Las canalizaciones de EventBridge admiten el procesamiento por lotes desde el origen hasta los destinos que lo admiten. Además, se admite el procesamiento por lotes y el enriquecimiento para AWS Lambda y AWS Step Functions. Como los diferentes servicios admiten diferentes niveles de procesamiento por lotes, no se puede configurar una canalización con un tamaño de lote mayor que el que admite el destino. Por ejemplo, las fuentes de streaming de Amazon Kinesis admiten un tamaño de lote máximo de 10.000 registros, pero Amazon Simple Queue Service admite un máximo de 10 mensajes por lote como destino. Por lo tanto, una canalización desde un flujo de Kinesis a una cola de Amazon SQS puede tener un tamaño máximo de lote configurado en el origen de 10.

Si configura una canalización con un enriquecimiento o un destino que no admite el procesamiento por lotes, no podrá activar el procesamiento por lotes en la origen.

Cuando se activa el procesamiento por lotes en el origen, las matrices de registros JSON pasan por la canalización y, a continuación, se asignan a la API del lote de un enriquecimiento o destino compatible. Los transformadores de entrada se aplican por separado a cada registro JSON individual de la matriz, no a la matriz en su conjunto. Para ver ejemplos de estas matrices, consulte Orígenes de canalizaciones de Amazon EventBridge y seleccione un origen específico. Las canalizaciones utilizarán la API de lote para el enriquecimiento o el destino admitidos, incluso si el tamaño del lote es 1. Si el enriquecimiento o el destino no tiene una API de lote, pero recibe cargas completas de JSON, como Lambda y Step Functions, toda la matriz JSON se envía en una sola solicitud. La solicitud se enviará como una matriz JSON incluso si el tamaño del lote es 1.

Si una canalización está configurada para el procesamiento por lotes en el origen y el destino admite el procesamiento por lotes, puede devolver una matriz de elementos JSON a partir de su enriquecimiento. Esta matriz puede incluir una matriz más corta o más larga que el origen original. Sin embargo, si la matriz es mayor que el tamaño de lote admitido por el destino, la canalización no invocará el destino.

Destinos procesables por lotes admitidos

Destino Tamaño máximo de lote
Registros de CloudWatch 10 000
Bus de evento de EventBridge 10
Flujo de Firehose 500
Flujo de Kinesis 500
Función de Lambda definido por el cliente
Máquina de estado de Step Functions definido por el cliente
Tema de Amazon SNS 10
Cola de Amazon SQS 10

Los siguientes enriquecimientos y destinos reciben la carga completa del evento por lotes para su procesamiento y están limitados por el tamaño total de la carga del evento, más que por el tamaño del lote:

  • Máquina de estado de Step Functions (262.144 caracteres)

  • Función de Lambda (6 MB)

Fallo de lote parcial

Para Amazon SQS y orígenes de flujos, como Kinesis y DynamoDB, las canalizaciones de EventBridge admiten la gestión de errores parciales de lotes de destino. Si el destino admite el procesamiento por lotes y solo una parte del lote se ejecuta correctamente, EventBridge vuelve a intentar agrupar automáticamente el resto de la carga. En el caso del contenido enriquecido más actualizado, este reintento se realiza durante todo el proceso, incluida la reinvocación de cualquier enriquecimiento configurado.

No se admite la gestión de fallos parciales de lotes.

Para los destinos Lambda y Step Functions, también puede especificar un error parcial devolviendo una carga con una estructura definida desde el destino. Esto indica los eventos que se deben volver a intentar.

Ejemplo de estructura de carga con fallo parcial

{ "batchItemFailures": [ { "itemIdentifier": "id2" }, { "itemIdentifier": "id4" } ]

En el ejemplo, el itemIdentifier coincide con el ID de los eventos gestionados por su destino desde su origen original. Para Amazon SQS, este es el messageId. Para Kinesis y DynamoDB, este es el eventID. Para que las canalizaciones de EventBridge gestionen adecuadamente los fallos parciales de lotes desde los destinos, estos campos deben incluirse en cualquier carga de matriz devuelta por el enriquecimiento.

Comportamiento de rendimiento y simultaneidad

Cada evento o lote de eventos recibido por una canalización que se dirige a un enriquecimiento o un destino se considera una ejecución de canalización. Una canalización en estado STARTED sondea continuamente los eventos desde el origen y se amplía o reduce en función de la acumulación de trabajo disponible y de los ajustes de procesamiento por lotes configurados.

Para conocer las cuotas de ejecuciones simultáneas de canalizaciones y el número de canalizaciones por cuenta y región, consulte Cuotas de canalizaciones de EventBridge.

De forma predeterminada, una sola canalización se escalará hasta el siguiente número máximo de ejecuciones simultáneas, en función del origen:

  • DynamoDB: las ejecuciones simultáneas pueden ascender tanto como el ParallelizationFactor configurado en la canalización multiplicado por el número de particiones del flujo.

  • Apache Kafka: las ejecuciones simultáneas pueden ascender tanto como el número de particiones sobre el tema, hasta 1000.

  • Kinesis: las ejecuciones simultáneas pueden ascender tanto como el ParallelizationFactor configurado en la canalización multiplicado por el número de particiones del flujo.

  • Amazon MQ: 5

  • Amazon SQS: 1250

Si necesita un rendimiento máximo de sondeo o límites de simultaneidad más altos, póngase en contacto con el servicio de asistencia.

nota

Los límites de ejecución se consideran limitaciones de seguridad máximas. Si bien el sondeo no se limita por debajo de estos valores, es posible que una canalización o una cuenta superen estos valores recomendados.

Las ejecuciones de canalizaciones están limitadas a un máximo de 5 minutos, incluidos el enriquecimiento y el procesamiento objetivo. Este límite no se puede aumentar.

Las canalizaciones con orígenes estrictamente ordenados, como las colas FIFO de Amazon SQS, los flujos de Kinesis y DynamoDB, o los temas de Apache Kafka, están limitadas aún más en cuanto a la simultaneidad por la configuración del origen, por ejemplo, el número de ID de grupos de mensajes para las colas FIFO o el número de particiones para las colas de Kinesis. Como el orden está estrictamente garantizado dentro de estas restricciones, una canalización con un origen ordenado no puede superar esos límites de simultaneidad.