EventBridge Amazon-Ereignismuster - 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.

EventBridge Amazon-Ereignismuster

Ereignismuster haben dieselbe Struktur wie die Ereignisse, mit denen sie übereinstimmen. Regeln verwenden Ereignismuster, um Ereignisse auszuwählen und sie an Ziele zu senden. Ein Ereignismuster stimmt entweder mit einem Ereignis überein oder nicht.

Wichtig

In ist es möglich EventBridge, Regeln zu erstellen, die zu higher-than-expected Gebühren und Drosselungen führen können. Sie können beispielsweise versehentlich eine Regel erstellen, die zu einer Endlosschleife führt, bei der eine Regel rekursiv ohne Ende ausgelöst wird. Angenommen, Sie haben eine Regel erstellt, um zu erkennen, dass sich ACLs in einem Amazon-S3-Bucket geändert haben, und Software auszulösen, um sie in den gewünschten Status zu ändern. Ist die Regel nicht sorgfältig geschrieben, löst die anschließende Änderung der ACLs die Regel erneut aus, wodurch eine Endlosschleife entsteht.

Anleitungen zum Schreiben präziser Regeln und Ereignismuster zur Minimierung solcher unerwarteter Ergebnisse finden Sie unter Bewährte Methoden bei der Definition von Amazon-EventBridge-Regeln und Bewährte Methoden bei der Definition von EventBridge Amazon-Eventmustern.

Das folgende Video befasst sich mit den Grundlagen von Ereignismustern:

Das folgende Ereignis zeigt ein einfaches AWS Ereignis aus Amazon EC2.

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2017-12-22T18:43:48Z", "region": "us-west-1", "resources": [ "arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0" ], "detail": { "instance-id": "i-1234567890abcdef0", "state": "terminated" } }

Das folgende Ereignismuster verarbeitet alle instance-termination-Ereignisse von Amazon EC2.

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

Erstellen von Ereignismustern

Wenn Sie ein Ereignismuster erstellen möchten, geben Sie die Felder eines Ereignisses an, denen das Ereignismuster entsprechen soll. Geben Sie nur die Felder an, die Sie für den Abgleich verwenden. Das vorherige Beispiel für ein Ereignismuster liefert nur Werte für drei Felder: die Felder der obersten Ebene "source" und und "detail-type" das "state" Feld innerhalb des "detail" Objektfeldes. EventBridge ignoriert alle anderen Felder des Ereignisses, wenn die Regel angewendet wird.

Damit ein Ereignismuster mit einem Ereignis übereinstimmt, muss das Ereignis alle im Ereignismuster aufgeführten Feldnamen enthalten. Die Feldnamen müssen im Ereignis auch mit derselben verschachtelten Struktur angezeigt werden.

Wenn Sie Ereignismuster für den Abgleich von Ereignissen schreiben, können Sie die TestEventPattern-API oder den CLI-Befehl test-event-pattern verwenden, um zu testen, ob Ihr Muster den korrekten Ereignissen entspricht. Weitere Informationen finden Sie unter TestEventPattern.

Abgleichen von Ereigniswerten

In einem Ereignismuster befindet sich der abzugleichende Wert in einem JSON-Array, das von eckigen Klammern („[“, „]“) umgeben ist, sodass Sie mehrere Werte angeben können. Um beispielsweise Ereignisse aus Amazon EC2 oder abzugleichen AWS Fargate, könnten Sie das folgende Muster verwenden, das Ereignisse abgleicht, bei denen der Wert für das "source" Feld entweder "aws.ec2" oder "aws.fargate" ist.

{ "source": ["aws.ec2", "aws.fargate"] }

Überlegungen zur Erstellung von Ereignismustern

Im Folgenden finden Sie einige Dinge, die Sie beim Erstellen Ihrer Ereignismuster berücksichtigen sollten:

  • EventBridge ignoriert die Felder im Ereignis, die nicht im Ereignismuster enthalten sind. Das hat zur Folge, dass es einen "*": "*"-Platzhalter bei Feldern gibt, die nicht im Ereignismuster vorkommen.

  • Für die von Ereignismustern abgeglichenen Werte gelten JSON-Regeln. Sie können in Anführungszeichen (") gesetzte Zeichenfolgen sowie Zahlen und die Schlüsselwörter true, false und null verwenden.

  • EventBridge Verwendet für Zeichenketten den exakten character-by-character Abgleich ohne Umschaltung der Groß- und Kleinschreibung oder andere Normalisierung von Zeichenketten.

  • EventBridge Verwendet für Zahlen die Zeichenkettendarstellung. 300, 300,0 und 3,0e2 werden z. B. nicht gleich behandelt.

  • Wenn mehrere Muster für dasselbe JSON-Feld angegeben sind, wird EventBridge nur das letzte verwendet.

  • Beachten Sie, dass beim EventBridge Kompilieren von Ereignismustern zur Verwendung der Punkt (.) als Verbindungszeichen verwendet wird.

    Das bedeutet, EventBridge dass die folgenden Ereignismuster als identisch behandelt werden:

    ## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }

    Und dass beide Ereignismuster den folgenden beiden Ereignissen entsprechen:

    ## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
    Anmerkung

    Dies beschreibt EventBridge das aktuelle Verhalten und man sollte sich nicht darauf verlassen, dass es sich nicht ändert.

  • Ereignismuster, die doppelte Felder enthalten, sind ungültig. Wenn ein Muster doppelte Felder enthält, wird EventBridge nur der endgültige Feldwert berücksichtigt.

    Beispielsweise stimmen die folgenden Ereignismuster mit demselben Ereignis überein:

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }

    Und EventBridge behandelt die folgenden beiden Ereignisse als identisch:

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
    Anmerkung

    Dies beschreibt EventBridge das aktuelle Verhalten und man sollte sich nicht darauf verlassen, dass es sich nicht ändert.

Vergleichsoperationen zur Verwendung in Ereignismustern

Im Folgenden finden Sie eine Zusammenfassung aller Vergleichsoperatoren, die in verfügbar sind EventBridge.

Vergleichsoperatoren funktionieren nur in Blattknoten, mit Ausnahme von $or und anything-but.

Vergleich Beispiel Regelsyntax

And

Location is "New York" and Day is "Monday"

"Location": [ "New York" ], "Day": ["Monday"]

Alles außer State ist ein beliebiger Wert außer „initialisieren“.

"state": [ { "anything-but": "initializing" } ]

Alles andere als (beginnt mit)

Die Region liegt nicht in den USA.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

Alles andere als (endet mit)

FileName endet nicht mit der Erweiterung.png.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

Alles außer (Groß- und Kleinschreibung ignorieren)

State ist ein beliebiger Wert außer „initialisieren“ oder einer anderen Variante der Groß-/Kleinschreibung, z. B. „INITIALIZING“.

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

Beginnt mit

Die Region befindet sich in den USA.

"Region": [ {"prefix": "us-" } ]

Beginnt mit (Groß- und Kleinschreibung ignorieren)

Der Dienstname beginnt mit den Buchstaben „eventb“, unabhängig von der Groß- und Kleinschreibung.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

Leer

LastName ist leer.

"LastName": [""]

Gleichheitszeichen

Name is "Alice"

"Name": [ "Alice" ]

Gleich (Groß-/Kleinschreibung ignorieren)

Name is "Alice"

"Name": [ { "equals-ignore-case": "alice" } ]

Endet mit

FileName endet mit der Erweiterung.png

"FileName": [ { "suffix": ".png" } ]

Endet mit (Groß- und Kleinschreibung ignorieren)

Der Dienstname endet mit den Buchstaben „tbridge“ oder einer anderen Variante der Groß-/Kleinschreibung, z. B. „TBRIDGE“.

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

Vorhanden

ProductName existiert

"ProductName": [ { "exists": true } ]

Nicht vorhanden

ProductName existiert nicht

"ProductName": [ { "exists": false } ]

Nicht

Weather is anything but "Raining"

"Weather": [ { "anything-but": [ "Raining" ] } ]

Null

UserID is null

"UserID": [ null ]

Numerisch (ist gleich)

Price is 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Numerisch (Bereich)

Price is more than 10, and less than or equal to 20

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Oder

PaymentType ist „Kredit“ oder „Lastschrift“

"PaymentType": [ "Credit", "Debit"]

Oder (mehrere Felder)

Location is "New York", or Day is "Monday".

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

Platzhalter

Jede Datei mit der Erweiterung .png, die sich im Ordner „dir“ befindet

"FileName": [ { "wildcard": "dir/*.png" } ]

Beispiele für Ereignisse und Ereignismuster

Sie können alle JSON-Datentypen und -Werte verwenden, um Ereignisse abzugleichen. Die folgenden Beispiele zeigen Ereignisse und die Ereignismuster, die ihnen entsprechen.

Feldabgleich

Sie können anhand des Werts eines Felds einen Abgleich vornehmen. Betrachten Sie das folgende Ereignis von Amazon EC2 Auto Scaling.

{ "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "", "responseElements": null } }

Für das vorhergehende Ereignis können Sie das entsprechende Feld "responseElements" verwenden.

{ "source": ["aws.autoscaling"], "detail-type": ["EC2 Instance Launch Successful"], "detail": { "responseElements": [null] } }

Wertabgleich

Betrachten Sie das folgende Ereignis von Amazon Macie, das gekürzt wurde.

{ "version": "0", "id": "0948ba87-d3b8-c6d4-f2da-732a1example", "detail-type": "Macie Finding", "source": "aws.macie", "account": "123456789012", "time": "2021-04-29T23:12:15Z", "region":"us-east-1", "resources": [ ], "detail": { "schemaVersion": "1.0", "id": "64b917aa-3843-014c-91d8-937ffexample", "accountId": "123456789012", "partition": "aws", "region": "us-east-1", "type": "Policy:IAMUser/S3BucketEncryptionDisabled", "title": "Encryption is disabled for the S3 bucket", "description": "Encryption is disabled for the Amazon S3 bucket. The data in the bucket isn’t encrypted using server-side encryption.", "severity": { "score": 1, "description": "Low" }, "createdAt": "2021-04-29T15:46:02Z", "updatedAt": "2021-04-29T23:12:15Z", "count": 2, . . .

Das folgende Ereignismuster entspricht jedem Ereignis mit einem Schweregrad von 1 und einer Anzahl von 2.

{ "source": ["aws.macie"], "detail-type": ["Macie Finding"], "detail": { "severity": { "score": [1] }, "count":[2] } }