Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden der Ereignisfilterung mit einer selbstverwalteten Apache Kafka-Ereignisquelle
Sie können die Ereignisfilterung verwenden, um zu steuern, welche Datensätze aus einem Stream oder einer Warteschlange Lambda an Ihre Funktion sendet. Allgemeine Informationen zur Funktionsweise der Ereignisfilterung finden Sie unter. Steuern Sie, welche Ereignisse Lambda an Ihre Funktion sendet
Dieser Abschnitt konzentriert sich auf die Ereignisfilterung für selbstverwaltete Apache Kafka-Ereignisquellen.
Grundlagen der selbstverwalteten Apache Kafka-Ereignisfilterung
Angenommen, ein Producer schreibt Nachrichten zu einem Thema in Ihrem selbstverwalteten Apache Kafka-Cluster, entweder in einem gültigen JSON Format oder als einfache Zeichenketten. Ein Beispieldatensatz würde wie folgt aussehen, wobei die Nachricht im value
-Feld in eine Base64-kodierte Zeichenfolge umgewandelt wurde.
{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers":[] } ] }
Angenommen, Ihr Apache Kafka-Producer schreibt Nachrichten zu Ihrem Thema im folgenden Format. JSON
{ "device_ID": "AB1234", "session":{ "start_time": "yyyy-mm-ddThh:mm:ss", "duration": 162 } }
Sie können den value
-Schlüssel verwenden, um Datensätze zu filtern. Angenommen, Sie möchten nur die Datensätze filtern, bei denen device_ID
mit den Buchstaben AB beginnen. Das FilterCriteria
-Objekt würde wie folgt aussehen.
{ "Filters": [ { "Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }" } ] }
Der besseren Übersichtlichkeit halber ist der Wert des Filters Pattern
im Klartext JSON dargestellt.
{ "value": { "device_ID": [ { "prefix": "AB" } ] } }
Sie können Ihren Filter über die Konsole AWS CLI oder eine AWS SAM Vorlage hinzufügen.
Mit dem selbstverwalteten Apache Kafka können Sie auch Datensätze filtern, bei denen es sich bei der Nachricht um eine einfache Zeichenfolge handelt. Angenommen, Sie möchten die Meldungen ignorieren, in denen die Zeichenfolge „error“ ist. Das FilterCriteria
-Objekt würde wie folgt aussehen.
{ "Filters": [ { "Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }" } ] }
Der besseren Übersichtlichkeit halber ist der Wert des Filters im Klartext Pattern
dargestellt. JSON
{ "value": [ { "anything-but": [ "error" ] } ] }
Sie können Ihren Filter über die Konsole AWS CLI oder eine AWS SAM Vorlage hinzufügen.
Selbstverwaltete Apache Kafka-Nachrichten müssen aus UTF -8-codierten Zeichenfolgen bestehen, entweder aus einfachen Zeichenketten oder im Format. JSON Das liegt daran, dass Lambda Kafka-Byte-Arrays in UTF -8 dekodiert, bevor Filterkriterien angewendet werden. Wenn Ihre Nachrichten eine andere Kodierung verwenden, z. B. UTF -16 oderASCII, oder wenn das Nachrichtenformat nicht dem FilterCriteria
Format entspricht, verarbeitet Lambda nur Metadatenfilter. In der folgenden Tabelle ist das Verhalten zusammengefasst:
-Format der eingehenden Nachricht | Filtermusterformat für Nachrichteneigenschaften | Resultierende Aktion |
---|---|---|
Einfache Zeichenfolge |
Einfache Zeichenfolge |
Lambda filtert basierend auf Ihren Filterkriterien. |
Einfache Zeichenfolge |
Kein Filtermuster für Dateneigenschaften |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Einfache Zeichenfolge |
Gültig JSON |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Gültig JSON |
Einfache Zeichenfolge |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Gültig JSON |
Kein Filtermuster für Dateneigenschaften |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Gültig JSON |
Gültig JSON |
Lambda filtert basierend auf Ihren Filterkriterien. |
Nicht- UTF -8-kodierte Zeichenfolge |
JSON, einfache Zeichenfolge oder kein Muster |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |