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 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). A Pattern es una representación en cadena de una regla de JSON filtrado. Un objeto FilterCriteria es similar al siguiente ejemplo:

{ "Filters": [ {"Pattern": "{ \"Metadata1\": [ rule1 ], \"data\": { \"Data1\": [ rule2 ] }}" } ] }

Para mayor claridad, este es el valor del filtro Pattern expandido en blancoJSON:

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

Las partes principales de un objeto FilterCriteria son las propiedades de metadatos y las propiedades de datos.

  • Las propiedades de metadatos son los campos del objeto de eventos. En el ejemplo, FilterCriteria.Metadata1 hace referencia a una propiedad de metadatos.

  • Las propiedades de datos son los campos del cuerpo del evento. En el ejemplo, FilterCriteria.Data1 hace referencia a una propiedad de datos.

Por ejemplo, supongamos que su flujo 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" }

Las propiedades de metadatos del evento de Kinesis son cualquier campo fuera del objeto data, como partitionKey o sequenceNumber.

Las propiedades de datos del evento de Kinesis son cualquier campo dentro del objeto data, como City o Temperature.

Al filtrar para obtener coincidencias con este evento, puede usar filtros en los campos decodificados. Por ejemplo, para filtrar en partitionKey y City, usaría el siguiente filtro:

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

Al crear filtros de eventos, EventBridge Pipes puede acceder al contenido del evento. Este contenido está codificado en JSON -escape, como el SQS body campo Amazon, o codificado en base64, como el campo Kinesis. data Si sus datos son válidosJSON, las plantillas de entrada o las JSON rutas de los parámetros de destino pueden hacer referencia directamente al contenido. Por ejemplo, si una fuente de eventos de Kinesis es válidaJSON, puede hacer referencia a una variable mediante. <$.data.someKey>

Al crear patrones de eventos, puede filtrar en función de los campos enviados por la fuente API y no en 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

Campos de mensaje y datos

Cada fuente EventBridge de Pipe contiene un campo que contiene el mensaje o los datos principales. Los denominamos campos mensaje o campos datos. Estos campos son especiales porque pueden ser de JSON escape o codificados en base64, pero cuando son válidos se JSON pueden filtrar con JSON patrones como si el cuerpo no se hubiera escapado. El contenido de estos campos también se puede utilizar sin problemas en los transformadores de entrada.

Filtrar correctamente los SQS mensajes de Amazon

Si un SQS mensaje de Amazon no cumple tus criterios de filtrado, lo elimina EventBridge automáticamente de la cola. No tienes que eliminar estos mensajes manualmente en AmazonSQS.

SQSEn Amazon, el mensaje body puede ser cualquier cadena. Sin embargo, esto puede resultar problemático FilterCriteria si body esperas tener un JSON formato válido. También ocurre lo contrario: si el mensaje entrante body tiene un JSON formato válido, pero los criterios de filtrado esperan que body sea una cadena simple, se producirá un comportamiento no deseado.

Para evitar este problema, asegúrese de que el formato del body de los FilterCriteria coincida con el formato esperado del body de los mensajes que recibe de la cola. Antes de filtrar los mensajes, evalúa EventBridge automáticamente el formato del mensaje entrante body y el patrón de filtrado. body Si hay una discrepancia, borra el EventBridge mensaje. En la siguiente tabla se resume esta evaluación:

Formato del body del mensaje entrante Formato del body del patrón de filtro Acción resultante

Cadena sin formato

Cadena sin formato

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

Cadena sin formato

Sin patrón de filtro para las propiedades de datos

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Cadena sin formato

Válido JSON

EventBridge deja caer el mensaje.

Válido JSON

Cadena sin formato

EventBridge deja caer el mensaje.

Válido JSON

Sin patrón de filtro para las propiedades de datos

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Válido JSON

Válido JSON

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

Si no los incluyes body como parte de tu listaFilterCriteria, EventBridge omite esta verificación.

Filtrado correcto 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 las fuentes de eventos de transmisión, tanto el campo de datos como los criterios de filtrado del campo de datos deben tener un formato válido. JSON (Para Kinesis, el campo de datos es data. Para DynamoDB, el campo de datos es dynamodb). Si alguno de los campos no tiene un JSON formato válido, EventBridge borra el mensaje o genera una excepción. En la siguiente tabla se resume el comportamiento específico:

Formato de los datos entrantes (data o dynamodb) Formato del patrón de filtro para las propiedades de datos Acción resultante

Válido JSON

Válido JSON

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

Válido JSON

Sin patrón de filtro para las propiedades de datos

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Válido JSON

No- JSON

EventBridge lanza una excepción en el momento de la canalización o actualización. El patrón de filtro de las propiedades de los datos debe tener un JSON formato válido.

No JSON

Válido JSON

EventBridge deja caer el récord.

No- JSON

Sin patrón de filtro para las propiedades de datos

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

No JSON

No- JSON

EventBridge lanza una excepción en el momento de la creación o actualización de la tubería. El patrón de filtro de las propiedades de los datos debe tener un JSON formato válido.

Filtrado correcto de mensajes de Amazon Managed Streaming para Apache Kafka, Apache Kafka autoadministrado y Amazon MQ

En el caso de los orígenes de Amazon MQ, el campo de mensaje es data. Para las fuentes de Apache Kafka (Amazon MSK y Apache Kafka autogestionado), hay dos campos de mensajes: 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 la función. 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 UTF deben tener 8 cadenas codificadas, simples o JSON en formato. Esto se debe a que EventBridge decodifica las matrices de bytes de Apache Kafka y Amazon MQ UTF en -8 antes de aplicar los criterios de filtrado. Si sus mensajes utilizan otra codificación, como UTF -16 oASCII, o si el formato del mensaje no coincide con el FilterCriteria formato, EventBridge procesa únicamente los filtros de metadatos. En la siguiente tabla se resume el comportamiento específico:

Formato del mensaje entrante (data o key y value) Formato del patrón de filtro para las propiedades del mensaje Acción resultante

Cadena sin formato

Cadena sin formato

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

Cadena sin formato

Sin patrón de filtro para las propiedades de datos

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Cadena sin formato

Válido JSON

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Válido JSON

Cadena sin formato

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Válido JSON

Sin patrón de filtro para las propiedades de datos

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

Válido JSON

Válido JSON

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

Cadena no codificada en UTF -8

JSON, cadena simple o sin patrón

EventBridge filtra (solo en las demás propiedades de los metadatos) en función de sus criterios de filtrado.

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 eventSourceKey campo no está presente en las cargas ESM útiles.