Flujo de Amazon DynamoDB como origen para las canalizaciones de EventBridge - Amazon EventBridge

Flujo de Amazon DynamoDB como origen para las canalizaciones de EventBridge

Puede usar las canalizaciones de EventBridge para recibir registros en un flujo de DynamoDB. A continuación, si lo desea, puede filtrar o enriquecer estos registros antes de enviarlos a un destino para su procesamiento. Al configurar la canalización, puede elegir ajustes específicos para Amazon DynamoDB Streams. Las canalizaciones de EventBridge mantienen el orden de los registros del flujo de datos al enviar esos datos al destino.

importante

Al deshabilitar un flujo de DynamoDB que es el origen de una canalización, esa canalización queda inutilizada, aunque se vuelva a habilitar el flujo. Esto puede suceder por los motivos siguientes:

  • No puede detener, iniciar ni actualizar una canalización cuyo origen esté deshabilitado.

  • No puede actualizar una canalización con un origen nuevo después de crearla. Al volver a habilitar el flujo de DynamoDB, a ese flujo se le asigna un nuevo nombre de recurso de Amazon (ARN) y deja de estar asociado a la canalización.

Si vuelve a habilitar el flujo de DynamoDB, tendrá que crear una nueva canalización con el nuevo ARN del flujo.

Evento de ejemplo

En el siguiente evento de ejemplo se muestra la información que recibe la canalización. Puede usar este evento para crear y filtrar sus patrones de eventos o para definir la transformación de entrada. No todos los campos se pueden filtrar. Para obtener más información sobre los campos que puede filtrar, consulte Filtrado de eventos de las canalizaciones de Amazon EventBridge.

[ { "eventID": "1", "eventVersion": "1.0", "dynamodb": { "Keys": { "Id": { "N": "101" } }, "NewImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES", "SequenceNumber": "111", "SizeBytes": 26 }, "awsRegion": "us-west-2", "eventName": "INSERT", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" }, { "eventID": "2", "eventVersion": "1.0", "dynamodb": { "OldImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "SequenceNumber": "222", "Keys": { "Id": { "N": "101" } }, "SizeBytes": 59, "NewImage": { "Message": { "S": "This item has changed" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES" }, "awsRegion": "us-west-2", "eventName": "MODIFY", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" } ]

Sondeo y procesamiento por lotes de flujos

EventBridge sondea las particiones de su flujo de DynamoDB y busca registros cuatro veces por segundo. Cuando hay registros disponibles, EventBridge procesa el evento y espera el resultado. Si el procesamiento se realiza correctamente, EventBridge reanuda el sondeo hasta que recibe más registros.

De forma predeterminada, EventBridge invoca su canalización tan pronto como los registros estén disponibles. Si el lote que EventBridge lee desde el origen solo tiene un registro, solo se procesa un evento. Para evitar procesar un número de registros pequeño, puede indicar a la canalización que almacene en búfer registros hasta cinco minutos configurando un plazo de procesamiento por lotes. Antes de procesar los eventos, EventBridge continúa leyendo los registros del origen hasta que haya recopilado un lote completo, venza el plazo de procesamiento por lotes o el lote alcance el límite de carga de 6 MB.

importante

La canalización entregará los registros de flujo de DynamoDB a Amazon SQS al menos una vez. Para garantizar que no se pierda ningún registro, le sugerimos que establezca una política de reintentos con una antigüedad máxima inferior al período de retención del flujo de DynamoDB. Por lo general, los flujos de DynamoDB retienen los eventos durante 24 horas.

También puede aumentar la simultaneidad procesando varios lotes de cada partición en paralelo. EventBridge puede procesar hasta 10 lotes en cada partición simultáneamente. Si aumenta el número de lotes simultáneos por partición, EventBridge sigue garantizando el procesamiento en orden a nivel de clave de partición.

Configure los ajustes de ParallelizationFactor para procesar una partición de un flujo de datos de Kinesis o DynamoDB con más de una ejecución de canalización simultáneamente. Puede especificar el número de lotes simultáneos que EventBridge sondea desde una partición a través de un factor de paralelización de 1 (predeterminado) a 10. Por ejemplo, al establecer ParallelizationFactor como 2, puede tener 200 ejecuciones de EventBridge Pipe simultáneas como máximo para procesar 100 particiones de datos de Kinesis. Esto ayuda a escalar verticalmente el rendimiento de procesamiento cuando el volumen de datos es volátil y el IteratorAge es alto. Tenga en cuenta que el factor de paralelización no funcionará si está utilizando la agregación de Kinesis.

Sondeo y posición inicial de flujos

Tenga en cuenta que el sondeo de flujos durante la creación de canalizaciones y las actualizaciones es, en última instancia, coherente.

  • Durante la creación de canalizaciones, es posible que se demore varios minutos en iniciar el sondeo de los eventos del flujo.

  • Durante las actualizaciones de las canalizaciones, es posible que se demore varios minutos en detener y reiniciar el sondeo de los eventos del flujo.

Esto significa que, si especifica LATEST como posición inicial del flujo, la canalización podría omitir eventos durante la creación de canalizaciones o las actualizaciones. Para garantizar que no se pierda ningún evento, especifique la posición inicial del flujo como TRIM_HORIZON.

Informes de fallos de elementos de lote

Cuando EventBridge consume y procesa datos de flujos de un origen, de forma predeterminada asigna puntos de control hasta el número de secuencia más alto de un lote solo cuando el lote ese procesa correctamente por completo. Para evitar el reprocesamiento de los mensajes procesados correctamente en un lote con errores, puede configurar el enriquecimiento o el destino para que devuelva un objeto que indique qué mensajes se han procesado correctamente y cuáles no. Esto se denomina respuesta parcial por lotes.

Para obtener más información, consulte Fallo de lote parcial.

Condiciones de éxito y fracaso

EventBridge trata un lote como un éxito completo si devuelve cualquiera de los siguientes elementos:

  • Una lista batchItemFailure vacía

  • Una lista batchItemFailure nula

  • Una EventResponse vacía

  • Una EventResponse nula

EventBridge trata un lote como un error completo si devuelve cualquiera de los siguientes elementos:

  • Una cadena itemIdentifier vacía

  • Una nula itemIdentifier

  • Un itemIdentifier con un mal nombre de clave

EventBridge intenta volver a procesar los mensajes fallidos conforme a su estrategia de reintentos.