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.
Verwendung der Ereignisfilterung mit einer Amazon MSK-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 über die Funktionsweise der Ereignisfilterung finden Sie unter Steuern Sie, welche Ereignisse Lambda an Ihre Funktion sendet.
Dieser Abschnitt konzentriert sich auf die Ereignisfilterung für Amazon-MSK-Ereignisquellen.
Anmerkung
Amazon MSK-Ereignisquellenzuordnungen unterstützen nur das Filtern nach dem Schlüssel. value
Grundlagen der Amazon MSK-Ereignisfilterung
Der folgende Beispieldatensatz zeigt eine Nachricht, die in eine Base64-kodierte Zeichenfolge im Feld konvertiert wurde. value
{ "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 JSON-Format.
{ "device_ID": "AB1234", "session":{ "start_time": "yyyy-mm-ddThh:mm:ss", "duration": 162 } }
Verwenden Sie die value
Taste, 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\" } ] } }" } ] }
Zur Verdeutlichung sehen Sie hier den Wert des Filter-Pattern
in reinem JSON.
{ "value": { "device_ID": [ { "prefix": "AB" } ] } }
Sie können Ihren Filter mithilfe der Konsole AWS CLI oder einer AWS SAM Vorlage hinzufügen.
Mit Amazon MSK können Sie auch Datensätze filtern, bei denen die Nachricht eine einfache Zeichenfolge ist. 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\" ] } ] }" } ] }
Zur Verdeutlichung sehen Sie hier den Wert des Filter-Pattern
in reinem JSON.
{ "value": [ { "anything-but": [ "error" ] } ] }
Sie können Ihren Filter mithilfe der Konsole AWS CLI oder einer Vorlage hinzufügen. AWS SAM
Amazon-MSK-Nachrichten müssen UTF-8-kodierte Zeichenfolgen sein (entweder einfache Zeichenfolgen oder im JSON-Format). Das liegt daran, dass Lambda Byte-Arrays von Amazon MSK vor Anwendung der Filterkriterien in UTF-8 dekodiert. Wenn Ihre Nachrichten eine andere Kodierung nutzen, z. B. UTF-16 oder ASCII, oder 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ültiges JSON |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Gültiges JSON |
Einfache Zeichenfolge |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Gültiges JSON |
Kein Filtermuster für Dateneigenschaften |
Lambda filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien. |
Gültiges JSON |
Gültiges 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. |