Filterung durch Amazon EventBridge Pipes - Amazon EventBridge

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.

Filterung durch Amazon EventBridge Pipes

Mit EventBridge Pipes können Sie die Ereignisse einer bestimmten Quelle filtern und nur eine Teilmenge davon verarbeiten. Diese Filterung funktioniert genauso wie die Filterung auf einer EventBridge Eventbus- oder Lambda-Ereignisquellenzuordnung, indem sie Ereignismuster verwendet. Weitere Informationen zu Ereignismustern finden Sie unter EventBridge Amazon-Ereignismuster.

Ein Filterkriterienobjekt FilterCriteria ist eine Struktur, die aus einer Liste von Filtern (Filters) besteht. Jeder Filter ist eine Struktur, die ein Filtermuster (Pattern) definiert. Ein Pattern ist eine Zeichenfolgendarstellung einer JSON-Filterregel. Ein FilterCriteria-Objekt sieht z. B. folgendermaßen aus:

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

Zur Verdeutlichung sehen Sie hier den Wert des Filter-Pattern in reinem JSON:

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

Die Hauptbestandteile eines FilterCriteria-Objekts sind Metadateneigenschaften und Dateneigenschaften.

  • Metadateneigenschaften sind die Felder des Ereignisobjekts. Im Beispiel bezieht sich FilterCriteria.Metadata1 auf eine Metadateneigenschaft.

  • Dateneigenschaften sind die Felder des Ereignistexts. Im Beispiel bezieht sich FilterCriteria.Data1 auf eine Dateneigenschaft.

Nehmen wir zum Beispiel an, Ihr Kinesis-Stream enthält ein Ereignis wie das folgende:

{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": {"City": "Seattle", "State": "WA", "Temperature": "46", "Month": "December" }, "approximateArrivalTimestamp": 1545084650.987 }

Wenn das Ereignis durch Ihre Pipe fließt, sieht es wie folgt aus, wobei das data-Feld base64-kodiert ist:

{ "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" }

Bei den Metadateneigenschaften des Kinesis-Ereignisses handelt es sich um beliebige Felder außerhalb des data-Objekts, z. B. partitionKey oder sequenceNumber.

Bei den Dateneigenschaften des Kinesis-Ereignisses handelt es sich um die Felder innerhalb des data-Objekts, z. B. City oder Temperature.

Wenn Sie filtern, um dieses Ereignis abzugleichen, können Sie Filter für die dekodierten Felder verwenden. Um beispielsweise nach partitionKey und City zu filtern, würden Sie den folgenden Filter verwenden:

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

Wenn Sie Ereignisfilter erstellen, können EventBridge Pipes auf Ereignisinhalte zugreifen. Dieser Inhalt ist entweder JSON-maskiert, wie das Amazon-SQS-Feld body, oder base64-kodiert, wie das Kinesis-Feld data. Wenn es sich bei Ihren Daten um gültiges JSON handelt, können Ihre Eingabevorlagen oder JSON-Pfade für Zielparameter direkt auf den Inhalt verweisen. Wenn es sich bei einer Kinesis-Ereignisquelle beispielsweise um ein gültiges JSON handelt, können Sie mithilfe von <$.data.someKey> auf eine Variable verweisen.

Bei der Erstellung von Ereignismustern können Sie nach den von der Quell-API gesendeten Feldern filtern und nicht nach Feldern, die durch die Abfrageoperation hinzugefügt wurden. Die folgenden Felder können nicht in Ereignismustern verwendet werden:

  • awsRegion

  • eventSource

  • eventSourceARN

  • eventVersion

  • eventID

  • eventName

  • invokeIdentityArn

  • eventSourceKey

Nachrichten- und Datenfelder

Jede EventBridge Pipe-Quelle enthält ein Feld, das die Kernbotschaft oder die Kerndaten enthält. Wir bezeichnen diese als Nachrichtenfelder oder Datenfelder. Diese Felder sind besonders, weil sie JSON-maskiert oder base64-kodiert sein können, aber wenn sie gültiges JSON sind, können sie mit JSON-Mustern gefiltert werden, als ob der Text nicht maskiert wäre. Der Inhalt dieser Felder kann auch problemlos in Eingabe-Transformatoren verwendet werden.

Ordnungsgemäßes Filtern von Amazon-SQS-Nachrichten

Wenn eine Amazon SQS SQS-Nachricht Ihre Filterkriterien nicht erfüllt, EventBridge wird die Nachricht automatisch aus der Warteschlange entfernt. Sie müssen diese Nachrichten in Amazon SQS nicht manuell löschen.

Für Amazon SQS kann der Nachrichten-body eine beliebige Zeichenfolge sein. Dies kann jedoch problematisch sein, wenn ihre FilterCriteria erwarten, dass body ein gültiges JSON-Format hat. Umgekehrt gilt dasselbe – wenn der body der eingehenden Nachricht ein gültiges JSON-Format aufweist, die Filterkriterien jedoch erwarten, dass body eine einfache Zeichenfolge ist, führt dies zu unbeabsichtigtem Verhalten.

Stellen Sie zur Vermeidung dieses Problems sicher, dass das Format von body in Ihren FilterCriteria dem erwarteten Format von body in Nachrichten entspricht, die Sie aus Ihrer Warteschlange erhalten. Vor dem Filtern Ihrer Nachrichten EventBridge werden automatisch das Format der eingehenden Nachricht body und Ihr Filtermuster für ausgewertet. body Wenn es eine Nichtübereinstimmung gibt, wird die EventBridge Nachricht gelöscht. In der folgenden Tabelle ist diese Auswertung zusammengefasst:

body-Format der eingehenden Nachricht body-Format des Filtermusters Resultierende Aktion

Einfache Zeichenfolge

Einfache Zeichenfolge

EventBridge filtert auf der Grundlage Ihrer Filterkriterien.

Einfache Zeichenfolge

Kein Filtermuster für Dateneigenschaften

EventBridge filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien.

Einfache Zeichenfolge

Gültiges JSON

EventBridge löscht die Nachricht.

Gültiges JSON

Einfache Zeichenfolge

EventBridge löscht die Nachricht.

Gültiges JSON

Kein Filtermuster für Dateneigenschaften

EventBridge filtert (nur für die anderen Metadateneigenschaften) auf der Grundlage Ihrer Filterkriterien.

Gültiges JSON

Gültiges JSON

EventBridge filtert basierend auf Ihren Filterkriterien.

Wenn Sie dies nicht body als Teil Ihrer angebenFilterCriteria, EventBridge überspringt Sie diese Prüfung.

Ordnungsgemäßes Filtern von Kinesis- und DynamoDB-Nachrichten

Nachdem Ihre Filterkriterien einen Kinesis- oder DynamoDB-Datensatz verarbeitet haben, geht der Streams-Iterator über diesen Datensatz hinaus. Wenn der Datensatz Ihre Filterkriterien nicht erfüllt, müssen Sie den Datensatz nicht manuell aus Ihrer Ereignisquelle löschen. Nach Ablauf der Aufbewahrungsfrist löschen Kinesis und DynamoDB diese alten Datensätze automatisch. Wenn Sie möchten, dass Datensätze früher gelöscht werden, lesen Sie Ändern des Zeitraums der Datenaufbewahrung.

Um Ereignisse aus Stream-Ereignisquellen ordnungsgemäß zu filtern, müssen sowohl das Datenfeld als auch Ihre Filterkriterien für das Datenfeld ein gültiges JSON-Format haben. (Bei Kinesis ist das Datenfeld data. Bei DynamoDB ist das Datenfeld dynamodb.) Wenn eines der Felder kein gültiges JSON-Format hat, wird die EventBridge Nachricht gelöscht oder eine Ausnahme ausgelöst. In der folgenden Tabelle ist das Verhalten zusammengefasst:

Format der eingehenden Daten (data oder dynamodb) Filtermusterformat für Dateneigenschaften Resultierende Aktion

Gültiges JSON

Gültiges JSON

EventBridge filtert basierend auf Ihren Filterkriterien.

Gültiges JSON

Kein Filtermuster für Dateneigenschaften

EventBridge filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien.

Gültiges JSON

Kein JSON

EventBridge löst zum Zeitpunkt der Pipe oder Aktualisierung eine Ausnahme aus. Das Filtermuster für Dateneigenschaften muss ein gültiges JSON-Format haben.

Kein JSON

Gültiges JSON

EventBridge löscht den Datensatz.

Kein JSON

Kein Filtermuster für Dateneigenschaften

EventBridge filtert (nur für die anderen Metadateneigenschaften) auf der Grundlage Ihrer Filterkriterien.

Kein JSON

Kein JSON

EventBridge löst bei der Erstellung oder Aktualisierung der Pipe eine Ausnahme aus. Das Filtermuster für Dateneigenschaften muss ein gültiges JSON-Format haben.

Ordnungsgemäßes Filtern der Nachrichten von Amazon Managed Streaming for Apache Kafka, von selbstverwaltetem Apache Kafka und von Amazon MQ

Für Amazon-MQ-Quellen lautet das Nachrichtenfeld data. Für Apache-Kafka-Quellen (Amazon MSK und selbstverwaltetes Apache Kafka) gibt es zwei Nachrichtenfelder: key und value.

EventBridge löscht Nachrichten, die nicht allen im Filter enthaltenen Feldern entsprechen. Übergibt bei Apache Kafka nach erfolgreichem Aufruf der Funktion Offsets für übereinstimmende und nicht übereinstimmende Nachrichten. EventBridge EventBridge Bestätigt für Amazon MQ übereinstimmende Nachrichten nach erfolgreichem Aufruf der Funktion und bestätigt nicht zugeordnete Nachrichten, wenn sie gefiltert werden.

Apache-Kafka- und Amazon-MQ-Nachrichten müssen UTF-8-kodierte Zeichenfolgen sein (entweder einfache Zeichenfolgen oder im JSON-Format). Das liegt daran, dass Apache Kafka- und Amazon MQ-Byte-Arrays vor der Anwendung von Filterkriterien in UTF-8 EventBridge dekodiert werden. Wenn Ihre Nachrichten eine andere Kodierung verwenden, z. B. UTF-16 oder ASCII, oder wenn das Nachrichtenformat nicht dem Format entspricht, verarbeitet es nur Metadatenfilter. FilterCriteria EventBridge In der folgenden Tabelle ist das Verhalten zusammengefasst:

Format eingehender Nachrichten (data oder key und value) Filtermusterformat für Nachrichteneigenschaften Resultierende Aktion

Einfache Zeichenfolge

Einfache Zeichenfolge

EventBridge filtert auf der Grundlage Ihrer Filterkriterien.

Einfache Zeichenfolge

Kein Filtermuster für Dateneigenschaften

EventBridge filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien.

Einfache Zeichenfolge

Gültiges JSON

EventBridge filtert (nur für die anderen Metadateneigenschaften) auf der Grundlage Ihrer Filterkriterien.

Gültiges JSON

Einfache Zeichenfolge

EventBridge filtert (nur für die anderen Metadateneigenschaften) auf der Grundlage Ihrer Filterkriterien.

Gültiges JSON

Kein Filtermuster für Dateneigenschaften

EventBridge filtert (nur für die anderen Metadateneigenschaften) auf der Grundlage Ihrer Filterkriterien.

Gültiges JSON

Gültiges JSON

EventBridge filtert basierend auf Ihren Filterkriterien.

Nicht UTF-8-kodierte Zeichenfolge

JSON, einfache Zeichenfolge oder kein Muster

EventBridge filtert (nur für die anderen Metadateneigenschaften) basierend auf Ihren Filterkriterien.

Unterschiede zwischen Lambda ESM und Pipes EventBridge

Beim Filtern von Ereignissen funktionieren Lambda ESM und EventBridge Pipes im Allgemeinen auf die gleiche Weise. Der Hauptunterschied besteht darin, dass das eventSourceKey-Feld in ESM-Nutzlasten nicht vorhanden ist.