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 en base64, como en 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 según sus criterios de filtro. |
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 según sus criterios de filtro. |
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 después de 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 según sus criterios de filtro. |
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.
Uso de operadores de comparación en filtros de tuberías
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 para su uso en filtros de tuberías, consulteOperadores de comparación.