Filtrado de eventos con un origen de eventos de Apache Kafka autoadministrado
Puede utilizar el filtrado de eventos para controlar qué registros de un flujo o una cola envía Lambda a su función. Para obtener información general sobre cómo se filtran los eventos, consulte Controle qué eventos envía Lambda a la función.
Esta sección se centra en el filtrado de eventos para orígenes de eventos de Apache Kafka autoadministrado.
Conceptos básicos del filtrado de eventos de Apache Kafka autoadministrado
Supongamos que un productor escribe mensajes a un tema de su clúster de Apache Kafka autoadministrado, ya sea en formato JSON válido o como cadenas simples. Un registro de ejemplo tendría el siguiente aspecto, con el mensaje convertido en una cadena codificada en Base64 en el campo value
.
{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers":[] } ] }
Supongamos que su productor de Apache Kafka escribe mensajes a su tema en el siguiente formato JSON.
{ "device_ID": "AB1234", "session":{ "start_time": "yyyy-mm-ddThh:mm:ss", "duration": 162 } }
Puede utilizar la clave value
para filtrar registros. Supongamos que desea filtrar solo los registros en los que device_ID
comience con las letras AB. El objeto FilterCriteria
sería el siguiente.
{ "Filters": [ { "Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }" } ] }
Para mayor claridad, este es el valor del Pattern
del filtro ampliado en JSON no cifrado.
{ "value": { "device_ID": [ { "prefix": "AB" } ] } }
Puede agregar el filtro mediante la consola, la AWS CLI o una plantilla de AWS SAM.
Con Apache Kafka autoadministrado, también puede filtrar registros en los que el mensaje sea una cadena simple. Supongamos que desea ignorar los mensajes en los que la cadena es “error”. El objeto FilterCriteria
tendría el siguiente aspecto.
{ "Filters": [ { "Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }" } ] }
Para mayor claridad, este es el valor del Pattern
del filtro ampliado en JSON no cifrado.
{ "value": [ { "anything-but": [ "error" ] } ] }
Puede agregar el filtro mediante la consola, la AWS CLI o una plantilla de AWS SAM.
Los mensajes de Apache Kafka autoadministrado deben ser cadenas codificadas en UTF-8, cadenas simples o en formato JSON. Esto se debe a que Lambda decodifica las matrices de bytes de Kafka en UTF-8 antes de aplicar los criterios de filtrado. Si los mensajes utilizan otra codificación, como UTF-16 o ASCII, o el formato del mensaje no coincide con el formato de FilterCriteria
, Lambda solo procesa los filtros de metadatos. En la siguiente tabla se resume el comportamiento específico:
Formato del mensaje entrante | Formato del patrón de filtro para las propiedades del mensaje | Acción resultante |
---|---|---|
Cadena sin formato |
Cadena sin formato |
Lambda filtra en función de los criterios de filtro. |
Cadena sin formato |
Sin patrón de filtro para las propiedades de datos |
Lambda filtra (solo en las demás propiedades de metadatos) en función de los criterios de filtro. |
Cadena sin formato |
JSON válido |
Lambda filtra (solo en las demás propiedades de metadatos) en función de los criterios de filtro. |
JSON válido |
Cadena sin formato |
Lambda filtra (solo en las demás propiedades de metadatos) en función de los criterios de filtro. |
JSON válido |
Sin patrón de filtro para las propiedades de datos |
Lambda filtra (solo en las demás propiedades de metadatos) en función de los criterios de filtro. |
JSON válido |
JSON válido |
Lambda filtra en función de los criterios de filtro. |
Cadena no codificada con UTF-8 |
JSON, cadena sin formato o sin patrón |
Lambda filtra (solo en las demás propiedades de metadatos) en función de los criterios de filtro. |