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

Amazon- EventBridge 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 Drosselung 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 Amazon- EventBridge Ereignismustern.

Das folgende Video befasst sich mit den Grundlagen von Ereignismustern:

Das folgende Ereignis zeigt ein einfaches AWS Ereignis von 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 stellt nur Werte für drei Felder bereit: die Felder der obersten Ebene "source" und und das "state" Feld innerhalb des "detail" Objektfelds. EventBridge ignoriert alle anderen Felder im Ereignis"detail-type", 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 von Amazon EC2 oder abzugleichen AWS Fargate, könnten Sie das folgende Muster verwenden, das mit Ereignissen übereinstimmt, bei denen der Wert für das "source" Feld entweder "aws.ec2" oder ist"aws.fargate".

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

  • Bei Zeichenfolgen EventBridge verwendet einen exakten character-by-character Abgleich ohne Groß- und Kleinschreibung oder eine andere Zeichenfolgennormalisierung.

  • Für Zahlen EventBridge verwendet eine Zeichenfolgendarstellung. 300, 300,0 und 3,0e2 werden z. B. nicht gleich behandelt.

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

  • Beachten Sie, dass beim EventBridge Kompilieren von Ereignismustern für die Verwendung Punkt (.) als Verbindungszeichen verwendet wird.

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

    ## 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 das aktuelle EventBridge Verhalten und sollte nicht darauf angewiesen sein, sich nicht zu ändern.

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

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

    behandelt EventBridge 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 das aktuelle EventBridge Verhalten und sollte nicht darauf angewiesen sein, sich nicht zu ändern.

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 Der Status ist ein beliebiger Wert außer „initialisieren“.

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

Alles andere als (beginnt mit)

Die Region befindet sich nicht in den USA.

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

Alles andere als (endet mit)

FileName endet nicht mit einer PNG-Erweiterung.

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

Alles andere als (Groß-/Kleinschreibung ignorieren)

Der Status ist ein anderer Wert als „initialisieren“ oder eine andere Groß-/Kleinschreibungsvariante, 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ß-/Kleinschreibung ignorieren)

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

{"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 einer PNG-Erweiterung

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

Endet mit (Groß-/Kleinschreibung ignorieren)

Der Servicename endet mit den Buchstaben „tbridge“ oder einer anderen Groß-/Kleinschreibungsvariante, z. B. „TBRIDGE“.

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

Vorhanden

ProductName existiert

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

Nicht vorhanden

ProductName ist nicht vorhanden

"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 „Guthaben“ oder „Debit“

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