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 SQS Amazon-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 unterSteuern Sie, welche Ereignisse Lambda an Ihre Funktion sendet.
Dieser Abschnitt konzentriert sich auf die Ereignisfilterung für MSK Amazon-Ereignisquellen.
Grundlagen der SQS Amazon-Ereignisfilterung
Angenommen, Ihre SQS Amazon-Warteschlange enthält Nachrichten im folgenden JSON Format.
{ "RecordNumber": 1234, "TimeStamp": "yyyy-mm-ddThh:mm:ss", "RequestCode": "AAAA" }
Ein Beispieldatensatz für diese Warteschlange würde wie folgt aussehen.
{ "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "{\n "RecordNumber": 1234,\n "TimeStamp": "yyyy-mm-ddThh:mm:ss",\n "RequestCode": "AAAA"\n}", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue", "awsRegion": "us-west-2" }
Um nach dem Inhalt Ihrer SQS Amazon-Nachrichten zu filtern, verwenden Sie den body
Schlüssel im SQS Amazon-Nachrichtendatensatz. Angenommen, Sie möchten nur die Datensätze verarbeiten, bei denen RequestCode
in Ihrer SQS Amazon-Nachricht „“ stehtBBBB. Das FilterCriteria
-Objekt würde wie folgt aussehen.
{ "Filters": [ { "Pattern": "{ \"body\" : { \"RequestCode\" : [ \"BBBB\" ] } }" } ] }
Der besseren Übersichtlichkeit halber ist der Wert des Filters im Pattern
Klartext dargestelltJSON.
{ "body": { "RequestCode": [ "BBBB" ] } }
Sie können Ihren Filter über die Konsole AWS CLI oder eine AWS SAM Vorlage hinzufügen.
Angenommen, Sie möchten, dass Ihre Funktion nur die Datensätze verarbeitet, bei denen RecordNumber
größer als 9999 ist. Das FilterCriteria
-Objekt würde wie folgt aussehen.
{ "Filters": [ { "Pattern": "{ \"body\" : { \"RecordNumber\" : [ { \"numeric\": [ \">\", 9999 ] } ] } }" } ] }
Der besseren Übersichtlichkeit halber ist der Wert des Filters im Klartext Pattern
dargestellt. JSON
{ "body": { "RecordNumber": [ { "numeric": [ ">", 9999 ] } ] } }
Sie können Ihren Filter über die Konsole AWS CLI oder eine AWS SAM Vorlage hinzufügen.
Für Amazon SQS kann der Nachrichtentext eine beliebige Zeichenfolge sein. Dies kann jedoch problematisch sein, wenn Sie FilterCriteria
erwartenbody
, dass es sich um ein gültiges JSON Format handelt. Das umgekehrte Szenario ist ebenfalls der Fall: Wenn der Hauptteil der eingehenden Nachricht zwar JSON formatiert ist, Ihre Filterkriterien jedoch eine einfache Zeichenfolge erwarten, kann dies body
zu unbeabsichtigtem Verhalten führen.
Um dieses Problem zu vermeiden, stellen Sie sicher, dass das Körperformat in Ihren FilterCriteria
mit dem erwarteten Format von body
in den Nachrichten übereinstimmt, die Sie von Ihrer Warteschlange erhalten. Bevor Sie Ihre Nachrichten filtern, wertet Lambda automatisch das Format des Körpers der eingehenden Nachricht und Ihres Filtermusters für body
aus. Wenn es keine Übereinstimmung gibt, verwirft Lambda die Nachricht. In der folgenden Tabelle ist diese Auswertung zusammengefasst:
body -Format der eingehenden Nachricht |
body -Format des Filtermusters |
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 verwirft die Nachricht. |
Gültig JSON |
Einfache Zeichenfolge |
Lambda verwirft die Nachricht. |
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. |