Filtrado de eventos en Amazon EventBridge Pipes - 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.

Filtrado de eventos en Amazon EventBridge Pipes

Con EventBridge Pipes, puedes filtrar los eventos de una fuente determinada y procesar solo un subconjunto de ellos. Este filtrado funciona de la misma manera que el filtrado en un bus de EventBridge eventos o en un mapeo de origen de eventos de Lambda, mediante patrones de eventos. Para obtener más información acerca de patrones de eventos, consulte Creación de patrones de EventBridge eventos de Amazon.

Un objeto FilterCriteria de criterios de filtro es una estructura que consta de una lista de filtros (Filters). Cada filtro es una estructura que define un patrón de filtrado (Pattern). Un Pattern es una representación de cadenas de una regla de filtro de JSON. Un objeto FilterCriteria es similar al siguiente ejemplo:

{ "Filters": [ {"Pattern": "{ \"Metadata1\": [ pattern1 ], \"data\": { \"Data1\": [ pattern2 ] }}" } ] }

Para mayor claridad, este es el valor del Pattern del filtro ampliado en JSON no cifrado:

{ "Metadata1": [ pattern1 ], "data": {"Data1": [ pattern2 ]} }

Amazon Kinesis, Amazon MQ, Amazon MSK y el Apache Kafka autogestionado aplican la codificación Base64 a la carga útil, pero no a los campos de metadatos. Por ejemplo, supongamos que su transmisión de Kinesis contiene un evento como este:

{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": {"City": "Seattle", "State": "WA", "Temperature": "46", "Month": "December" }, "approximateArrivalTimestamp": 1545084650.987 }

Cuando el evento fluya por la canalización, tendrá el siguiente aspecto con el campo data codificado en base64:

{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "approximateArrivalTimestamp": 1545084650.987, "eventSource": "aws:kinesis", "eventVersion": "1.0", "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898", "eventName": "aws:kinesis:record", "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role", "awsRegion": "us-east-2", "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream" }

Al crear filtros de eventos, EventBridge Pipes puede acceder al contenido del evento. Este contenido tiene un objeto JSON oculto, como el campo body de Amazon SQS, o codificado en base64, como el campo data de Kinesis. Si tus datos son JSON válidos, tus plantillas de entrada o rutas JSON para los parámetros de destino pueden hacer referencia al contenido directamente, ya que EventBridge Pipes lo decodificará automáticamente. Por ejemplo, si un origen de eventos de Kinesis es un objeto JSON válido, puede hacer referencia a una variable mediante <$.data.someKey>.

Siguiendo con nuestro ejemplo, para filtrar los partitionKey metadatos no codificados situados fuera del data objeto y la City propiedad codificada en base64 dentro del data objeto, utilizarías el siguiente filtro:

{ "partitionKey": [ "1" ], "data": { "City": [ "Seattle" ] } }

Al crear patrones de eventos, puede filtrar en función de los campos enviados por la API de origen y no de los campos agregados por la operación de sondeo. Los siguientes campos no se pueden usar en los patrones de eventos:

  • awsRegion

  • eventSource

  • eventSourceARN

  • eventVersion

  • eventID

  • eventName

  • invokeIdentityArn

  • eventSourceKey

En las siguientes secciones se explica el comportamiento de filtrado de cada tipo de fuente de eventos compatible.

Filtrado de mensajes de Amazon SQS

Si un mensaje de Amazon SQS no cumple los criterios de filtrado, lo elimina EventBridge automáticamente de la cola. No tiene que eliminar manualmente estos mensajes en Amazon SQS. Es poco probable que conectar varios canales a una cola de SQS sea una configuración útil, ya que los canales competirían por mensajes que se descartarán si no coinciden.

El cuerpo de un mensaje de Amazon SQS puede contener cualquier cadena, no solo JSON. EventBridge Pipes espera que su FilterCriteria formato coincida con el formato de los mensajes entrantes, ya sea un JSON válido o una cadena simple. Si hay una discrepancia, EventBridge Pipes descarta el mensaje. Si FilterCriteria no lo incluyebody, lo que significa que filtra solo por metadatos, EventBridge Pipes omite esta verificación. La siguiente tabla resume la evaluación:

Formato del del patrón de filtro Formato entrante Resultado

Cadena sin formato

Cadena sin formato

EventBridge filtra en función de sus criterios de filtrado.

Cadena sin formato

JSON válido

EventBridge deja caer el mensaje.

JSON válido

Cadena sin formato

EventBridge deja caer el mensaje.

JSON válido

JSON válido

EventBridge filtra en función de sus criterios de filtrado.

No hay patrón de filtro para body

Cadena sin formato

EventBridge filtra en función de sus criterios de filtrado.

No hay patrón de filtro para body

JSON válido

EventBridge filtra en función de sus criterios de filtrado.

Filtrado de mensajes de Kinesis y DynamoDB

Una vez que los criterios de filtro procesan un registro de Kinesis o DynamoDB, el iterador de flujos supera este registro. Si el registro no cumple los criterios de filtro, no tiene que eliminarlo manualmente del origen de eventos. Tras el periodo de retención, Kinesis y DynamoDB eliminan automáticamente estos registros antiguos. Si quiere que los registros se eliminen antes, consulte Changing the Data Retention Period (Cambiar el periodo de retención de datos).

Para filtrar correctamente los eventos de los orígenes de eventos de flujos, el formato JSON del campo de datos y de los criterios de filtro del campo de datos debe ser válido. (Para Kinesis, el campo de datos es data. Para DynamoDB, el campo de datos es dynamodb). Si alguno de los campos no tiene un formato JSON válido, EventBridge borra el mensaje o lanza una excepción. En la siguiente tabla se resume el comportamiento específico:

Formato del del patrón de filtro Formato entrante Resultado

JSON válido

JSON válido

EventBridge filtra en función de sus criterios de filtrado.

JSON válido

No JSON

EventBridge deja caer el mensaje.

Sin patrón de filtro para data (Kinesis) o (dynamodbDynamoDB)

JSON válido

EventBridge filtra según sus criterios de filtrado.

Sin patrón de filtro para data (Kinesis) o (dynamodbDynamoDB)

No JSON

EventBridge filtra según sus criterios de filtrado.

No JSON

Cualquiera

EventBridge genera una excepción en el momento de la creación o actualización de Pipe. El patrón de filtro debe tener un formato JSON válido.

Filtrado de mensajes de Amazon Managed Streaming for Apache Kafka, Apache Kafka autogestionado y Amazon MQ

nota

Tras adjuntar criterios de filtro a una canalización con un origen de eventos de Apache Kafka o Amazon MQ, aplicar las reglas de filtrado a los eventos puede tardar hasta 15 minutos.

En el caso de los orígenes de Amazon MQ, el campo de mensaje es data. En el caso de los orígenes de Apache Kafka (Amazon MSK y Apache Kafka autoadministrado), hay dos campos de mensaje: key y value.

EventBridge elimina los mensajes que no coinciden con todos los campos incluidos en el filtro. En el caso de Apache Kafka, EventBridge compila las compensaciones de los mensajes coincidentes y no coincidentes tras invocar correctamente el destino. En Amazon MQ, EventBridge reconoce los mensajes coincidentes después de invocar correctamente la función y reconoce los mensajes no coincidentes al filtrarlos.

Los mensajes de Apache Kafka y Amazon MQ deben ser cadenas codificadas en UTF-8, cadenas simples o en formato JSON. Esto se debe a que EventBridge decodifica las matrices de bytes de Apache Kafka y Amazon MQ en UTF-8 antes de aplicar los criterios de filtrado. Si sus mensajes utilizan otra codificación, como UTF-16 o ASCII, o si el formato del mensaje no coincide con el formato, procesa únicamente los filtros de metadatos. FilterCriteria EventBridge En la siguiente tabla se resume el comportamiento específico:

Formato del del patrón de filtro Formato entrante Resultado

Cadena sin formato

Cadena sin formato

EventBridge filtra en función de sus criterios de filtrado.

Cadena sin formato

JSON válido

EventBridge filtra solo los metadatos, ignorando el data campo (Amazon MQ) o key value los campos (Apache Kafka)

JSON válido

Cadena sin formato

EventBridge filtra solo los metadatos, ignorando el data campo (Amazon MQ) o key value los campos (Apache Kafka)

JSON válido

JSON válido

EventBridge filtra en función de sus criterios de filtrado.

Sin patrón de filtro para data (Amazon MQ) o key y value (Apache Kafka)

Cadena sin formato

EventBridge filtra solo los metadatos, ignorando el data campo (Amazon MQ) o key value los campos (Apache Kafka)

Sin patrón de filtro para data (Amazon MQ) o key y value (Apache Kafka)

JSON válido

EventBridge filtra solo los metadatos, ignorando el data campo (Amazon MQ) o key value los campos (Apache Kafka)

Cualquiera

Cadena no codificada en UTF

EventBridge filtra solo los metadatos, ignorando el data campo (Amazon MQ) o key value los campos (Apache Kafka)

Diferencias entre Lambda ESM y Pipes EventBridge

Al filtrar eventos, Lambda ESM y EventBridge Pipes funcionan generalmente de la misma manera. La principal diferencia es que el campo eventSourceKey no está presente en las cargas de ESM.

Uso de operadores de comparación en filtros de canalizaciones

Los operadores de comparación permiten crear patrones de eventos que coincidan con los valores de campo de los eventos.

Para obtener una lista completa de los operadores de comparación compatibles con el uso en filtros de canalizaciones, consulte Operadores de comparación.