Wie erstelle ich ein benutzerdefiniertes Ereignismuster für eine EventBridge-Regel?
Ich möchte Ereignisse für AWS-Services mit einer Amazon EventBridge-Regel erfassen. Ich kann jedoch kein benutzerdefiniertes Ereignismuster erstellen, das dem Ereignis entspricht.
Behebung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
EventBridge akzeptiert Ereignisse von AWS-Services, EventBridge-Partner und benutzerdefinierte Ereignisse. In diesem Artikel werden JSON-Ereignisse behandelt, die von AWS-Services stammen. Du kannst EventBridge-Regeln mit Ereignismustern erstellen, um eingehende Ereignisse zu filtern. Auf diese Weise stimmt die EventBridge-Regel nur mit den gewünschten Ereignissen überein und leitet diese Ereignisse an die Ziele weiter.
Das JSON-Format des eingehenden Ereignisses bestimmen
Es gibt drei Methoden, um das JSON-Format für ein eingehendes Ereignis zu bestimmen:
Sieh dir diese Liste mit Beispielereignissen von AWS-Services an, die EventBridge erhält.
EventBridge stellt das EventBridge Sandbox-Tool zur Verfügung, mit dem Benutzer Ereignismuster erstellen und validieren können. Um beispielsweise ein EC2-Instance-Statusänderungs-Ereignis zu erstellen, führe die folgenden Schritte aus:
- Öffne die EventBridge-Konsole.
- Erweitere im Navigationsbereich die Option Entwicklerressourcen und wähle dann Sandbox aus.
- Wähle auf der Registerkarte Ereignismuster im Abschnitt Beispielereignis die Option AWS-Ereignisse aus.
- Wähle im Feld Beispielereignisse die Option EC2 Instance State-change Notification (EC2 Instance-Statusänderungs-Benachrichtigung) aus. Dadurch wird das Fenster mit dem ersten Beispielereignis gefüllt. Für einen bestimmten Ereignistyp sind möglicherweise mehrere Beispiele verfügbar.
- Wähle im Abschnitt Methode der Erstellung aus, ob das Ereignismuster getestet werden soll.
- Erstelle eine EventBridge-Regel mit einem einfachen Ereignismuster, das allen Ereignissen für einen bestimmten AWS-Service entspricht. Dieses Ereignismuster entspricht beispielsweise allen Amazon Elastic Compute Cloud (Amazon EC2)-Ereignissen:
Hinweis: Leere Ereignisse sind im Ereignismuster nicht zulässig.<{ "source": [ "aws.ec2" ] }
Ordne als Nächstes der Regel ein SNS- oder ein CloudWatch-Protokollgruppen-Ziel zu, um eingehende Ereignisse zu erfassen. Für das Ziel muss die Option Zieleingabe konfigurieren auf Übereinstimmende Ereignisse gesetzt sein, damit die vom Service ausgegebene JSON korrekt empfangen wird.
Ein Ereignismuster im gleichen JSON-Format wie das eingehende Ereignis erstellen
Voraussetzungen:
- Alle Felder, die du nicht in deinem Ereignismuster angibst, werden automatisch abgeglichen. Wenn Detail beispielsweise nicht im Ereignismuster angegeben ist, entspricht das Ereignismuster jedem Ereignis mit einem beliebigen Detail.
- Verwende geschweifte Klammern { }, um Felder abzugleichen, die sich in der JSON-Struktur eine Ebene weiter unten befinden. Ein JSON-Viewer kann hilfreich sein, wenn du dir größere Ereignisstrukturen ansiehst.
- Die Zeichenfolge, die aus dem JSON-Ereignis abgeglichen werden soll, muss in **eckigen Klammern [ ]**stehen. Du kannst mehrere Werte in eckigen Klammern angeben, sodass das Ereignis aufgerufen wird, wenn einer der Werte in einem eingehenden Ereignis vorhanden ist. Um beispielsweise ein Ereignis aufzurufen, das auf jedem von Amazon EC2 oder Amazon DynamoDB gesendeten Ereignis basiert, verwende den folgenden Befehl:
{ "source": [ "aws.ec2", "aws.dynamodb" ] }
Ein SNS- oder CloudWatch-Ziel verwenden, um das eingehende Ereignis abzurufen
Dieses Beispiel zeigt ein Route 53-Ereignis, das an EventBridge ausgegeben wird. Der API-Aufruf ChangeResourceRecordSets stellt die Erstellung eines A-Datensatzes in einer von Amazon Route 53 gehosteten Zone dar. Ein Amazon Simple Notification Service (Amazon SNS)-Thema oder ein Amazon CloudWatch-Protokollgruppenziel erfasst das folgende Ereignis:
{ "version": "0", "id": "d857ae5c-cc83-3742-ab88-d825311ee4e9", "detail-type": "AWS API Call via CloudTrail", "source": "aws.route53", "account": "123456789012", "time": "2019-12-05T16:50:53Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAABCDEFGHIJKLMNOPQ:Admin", "arn": "arn:aws:sts::123456789012:assumed-role/Admin", "accountId": "123456789012", "accessKeyId": "ASIAABCDEFGH12345678", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAABCDEFGHIJKLMNOPQ", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-12-05T16:28:27Z" } } }, "eventTime": "2019-12-05T16:50:53Z", "eventSource": "route53.amazonaws.com", "eventName": "ChangeResourceRecordSets", "awsRegion": "us-east-1", "sourceIPAddress": "12.34.56.78", "userAgent": "console.amazonaws.com", "requestParameters": { "hostedZoneId": "Z1RP12345WXRQD", "changeBatch": { "changes": [ { "action": "CREATE", "resourceRecordSet": { "type": "A", "tTL": 300, "resourceRecords": [ { "value": "4.4.4.4" } ], "name": "test.example.us." } } ] } }, "responseElements": { "changeInfo": { "status": "PENDING", "id": "/change/C271P4WIKN511J", "submittedAt": "Dec 5, 2019 4:50:53 PM" } }, "additionalEventData": { "Note": "Do not use to reconstruct hosted zone" }, "requestID": "bbbf9847-96cb-45ef-b617-d535b9fe83d8", "eventID": "74e2d2c8-7497-4292-94d0-348272dbc4f7", "eventType": "AwsApiCall", "apiVersion": "2013-04-01" } }
Das entsprechende Ereignismuster erstellen
Dieses Beispiel für ein Ereignismuster filtert nach einer Reihe von Feldern. Zum Beispiel eventName, hostedZoneld, action und type. Übereinstimmende Ereignisse müssen alle Felder und die entsprechenden Werte enthalten. Das Muster isoliert die A-Datensätze, die für eine bestimmte gehostete Zone erstellt wurden.
{ "source": [ "aws.route53" ], "detail": { "eventSource": [ "route53.amazonaws.com" ], "eventName": [ "ChangeResourceRecordSets" ], "requestParameters": { "hostedZoneId": [ "Z1RP12345WXRQD" ], "changeBatch": { "changes": { "action": [ "CREATE" ], "resourceRecordSet": { "type": [ "A" ] } } } } } }
Das Ereignismuster testen
Die EventBridge-Konsole verwenden, um das Ereignismuster zu testen
Gehe wie folgt vor, um die EventBridge-Sandbox zu nutzen:
- Wähle im Abschnitt Beispielereignis ein Beispielereignis aus, oder gib eines ein.
- Gib im Abschnitt Ereignismuster ein Ereignismuster ein. Du kannst die Menüs im Ereignismusterformat verwenden, um ein Ereignismuster zu erstellen. Oder du kannst ein benutzerdefiniertes Ereignismuster mit den benutzerdefinierten Mustern (JSON-Editor) eingeben.
- Nachdem beide Abschnitte ausgefüllt wurden, wähle Muster testen aus, um zu bestätigen, dass das Ereignismuster mit dem angegebenen Beispielereignis übereinstimmt.
Die AWS CLI verwenden, um das Ereignismuster zu testen
Führe in der AWS CLI den Befehl test-event-pattern aus. Um dich zu vergewissern, dass das Ereignismuster übereinstimmt, stelle sicher, dass das Ergebnis wahr ist. Du kannst die vom AWS-Service gesendeten JSON-Ereignisse identifizieren und dem benutzerdefinierten Ereignismuster helfen, bestimmte Ereignisse zu erfassen.
Ähnliche Informationen
Amazon EventBridge-Ereignismuster
Tutorial: Mit CloudTrail eine EventBridge-Regel erstellen, die auf AWS-API-Aufrufe reagiert
Amazon EventBridge - What's the difference between CloudWatch Events and EventBridge? (Amazon EventBridge – Was ist der Unterschied zwischen CloudWatch Events und EventBridge?) auf der YouTube-Website
- Sprache
- Deutsch
Ähnliche Videos

