Ereignisse in CloudWatch Events - Amazon CloudWatch Events

Ereignisse in CloudWatch Events

Anmerkung

Amazon EventBridge ist die bevorzugte Methode zum Verwalten Ihrer Ereignisse. CloudWatch Events und EventBridge liegen der gleiche Service und die gleiche API zugrunde, EventBridge bietet jedoch mehr Funktionen. Änderungen, die Sie in CloudWatch oder EventBridge vornehmen, werden in jeder Konsole angezeigt. Weitere Informationen finden Sie unter Amazon EventBridge.

Ereignisse in Amazon CloudWatch Events werden als JSON-Objekte dargestellt. Weitere Informationen zu JSON-Objekten finden Sie unter RFC 7159. Folgendes Ereignis wird z. B. erstellt:

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

Es sind die folgenden Details zu einem Ereignis zu beachten:

  • Sie alle verfügen über dieselben Felder oberster Ebene, die wie im obigen Beispiel erscheinen und immer vorhanden sind.

  • Der Inhalt des Feldes detail auf oberster Ebene unterscheidet sich, je nachdem, welcher Service das Ereignis generiert hat und um welches Ereignis es sich handelt. Die Kombination aus den Feldern source und detail-type dient zum Identifizieren der im Feld detail gefundenen Felder und Werte. Beispiele von Ereignissen, die von AWS-Services generiert wurden, finden Sie unter Event Types for CloudWatch Events (Ereignistypen für CloudWatch-Ereignisse).

Nachstehend wird jedes Ereignisfeld beschrieben.

Version

Die Standardeinstellung bei allen Ereignissen lautet 0 (Null).

id

Für jedes Ereignis wird ein einmaliger Wert generiert. Dies kann für die Nachverfolgung von Ereignissen hilfreich sein, da die Werte auf ihrem Weg von den Regeln bis hin zu den Zielen nachgehalten werden können und verarbeitet werden.

detail-type

Identifiziert in Kombination mit dem Feld source die Felder und Werte, die im Feld detail angezeigt werden.

Alle über CloudTrail bereitgestellten Ereignisse weisen für AWS API Call via CloudTrail den Wert detail-type auf. Weitere Informationen finden Sie unter Über CloudTrail übermittelte Ereignisse.

source

Gibt den Service an, aus dem das Ereignis stammt. Alle Veranstaltungen, die ausAWSmit beginnenAWS.“ Vom Kunden generierte Ereignisse können hier jeden Wert haben, solange sie nicht mit“AWS.“ Wir empfehlen, Reverse-Domänennamen-Zeichenfolgen im Namensstil von Java-Paketen zu verwenden.

Die richtigen Werte für source bei einem AWS-Service finden Sie in der Tabelle unter AWSService-Namespaces. Zum Beispiel, der source Wert für Amazon CloudFront ist aws.cloudfront.

Konto

Die 12-stellige Nummer, die ein AWS-Konto identifiziert.

variieren

Der Zeitstempel eines Ereignisses, der von dem Service, aus dem das Ereignis stammt, festgelegt werden kann. Wenn das Ereignis ein Zeitintervall umfasst, könnte der Service dafür optieren, die Startzeit zu berichten, sodass dieser Wert merklich vor dem Zeitpunkt liegen kann, zu dem das Ereignis tatsächlich empfangen wurde.

region

Identifiziert die AWS-Region, aus der Ereignis stammt.

Ressourcen

Dieses JSON-Array enthält die ARNs, die die am Ereignis beteiligten Ressourcen identifizieren. Die Aufnahme dieser ARNs durch den Service erfolgt beliebig. So enthalten Amazon EC2-Instance-Statusänderungen beispielsweise Amazon EC2-Instance-ARNs, und Auto Scaling-Ereignisse umfassen ARNs sowohl für Instances als auch Auto Scaling-Gruppen, jedoch schließen API-Aufrufe mit AWS CloudTrail keine Ressourcen-ARNs ein.

Detail

Ein JSON-Objekt, dessen Inhalt im Ermessen des Services liegt, aus dem das Ereignis stammt. Der Detail-Inhalt im obigen Beispiel ist sehr einfach und umfasst nur zwei Felder. AWS API-Aufruf-Ereignisse besitzen Detail-Objekte mit rund 50 Feldern, die über mehrere Ebenen verschachtelt sind.

Ereignismuster

Regeln verwenden Ereignismuster, um Ereignisse auszuwählen und diese an Ziele zu senden. Ein Muster stimmt entweder mit einem Ereignis überein oder nicht. Ereignismuster werden als JSON-Objekte mit einer Struktur dargestellt, die Strukturen von Ereignissen ähneln, z. B.:

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

Es sind die folgenden Informationen zum Übereinstimmen von Ereignismustern zu beachten:

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

  • Andere Felder des Ereignisses, die nicht im Muster genannt werden, werden ignoriert; faktisch wird für nicht genannte Felder ein Platzhalter „*”: „*” angegeben.

  • Die Übereinstimmung ist exakt (Zeichen um Zeichen), ohne Umwandlung von Groß- in Kleinschreibung oder andere Zeichenfolgennormierung.

  • Die abgeglichenen Werte befolgen JSON-Regeln: Zeichenfolgen in Anführungszeichen, Zahlen und Schlüsselwörter ohne Anführungszeichen true, false, und null.

  • Der Abgleich von Zahlen erfolgt auf Ebene der Zeichenfolgendarstellung. 300, 300,0 und 3,0e2 werden z. B. nicht gleich behandelt.

Wenn Sie Muster schreiben, die zu Ereignissen passen, können Sie die Funktion TestEventPattern-API oder den test-event-pattern-CLI-Befehl verwenden, um sicherzustellen, dass Ihr Muster den gewünschten Ereignissen entspricht. Weitere Informationen finden Sie unter TestEventPattern oder test-event-pattern.

Die folgenden Ereignismuster würden mit dem Ereignis oben auf dieser Seite nicht übereinstimmen. Die erste Muster stimmt überein, da einer der im Muster angegebenen Instance-Werte mit dem Ereignis übereinstimmt (und das Muster gibt keine zusätzlichen Felder an, die nicht im Ereignis enthalten sind). Das zweite Muster stimmt überein, da der Status „beendet” im Ereignis enthalten ist.

{ "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-12345678", "arn:aws:ec2:us-east-1:123456789012:instance/i-abcdefgh" ] }
{ "detail": { "state": [ "terminated" ] } }

Diese Ereignismuster stimmen nicht mit dem Ereignis oben auf dieser Seite überein. Das erste Muster stimmt nicht überein, da es für den Status einen Wert „schwebend” angibt, der nicht im Ereignis angezeigt wird. Das zweite Muster stimmt nicht über, da der im Muster angegebene Ressourcen-Wert im Ereignis nicht angezeigt wird.

{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "detail": { "state": [ "pending" ] } }
{ "source": [ "aws.ec2" ], "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1::image/ami-12345678" ] }

Abgleich von Nullwerten und leeren Zeichenketten in Ereignismustern

Sie können ein Muster erstellen, das einem Ereignisfeld entspricht, das einen Nullwert oder eine leere Zeichenfolge hat. Um zu sehen, wie dies funktioniert, betrachten Sie das folgende Beispiel-Ereignis:

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

Um Ereignisse abzugleichen, bei denen der Wert von eventVersion eine leere Zeichenfolge ist, verwenden Sie das folgende Muster, das dem Ereignisbeispiel entspricht.

{ "detail": { "eventVersion": [""] } }

Um Ereignisse abzugleichen, bei denen der Wert von responseElements null ist, verwenden Sie das folgende Muster, das dem Ereignisbeispiel entspricht.

{ "detail": { "responseElements": [null] } }

Nullwerte und leere Zeichenfolgen sind beim Musterabgleich nicht austauschbar. Ein Muster, das geschrieben wird, um leere Zeichenfolgen zu erkennen, erfasst keine Werte von null.

Arrays in CloudWatch Events-Muster

Der Wert jedes Feld im Muster ist ein Array, das ein oder mehrere Werte enthält, und das Muster stimmt überein, wenn die Werte im Array mit dem Wert im Ereignis übereinstimmen. Ist der Wert im Ereignis ein Array, dann stimmt das Muster überein, wenn die Schnittmenge aus dem Muster-Array und dem Ereignis-Array nicht leer ist.

Wenn beispielsweise ein Ereignismuster den folgenden Text enthält:

"resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f", "arn:aws:ec2:us-east-1:111122223333:instance/i-b188560f", "arn:aws:ec2:us-east-1:444455556666:instance/i-b188560f", ]

Das Beispielmuster würde mit einem Ereignis übereinstimmen, das den folgenden Text enthält, da das erste Element im Muster-Array dem zweiten Element im Ereignis-Array entspricht.

"resources": [ "arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:eb56d16b-bbf0-401d-b893-d5978ed4a025:autoScalingGroupName/ASGTerminate", "arn:aws:ec2:us-east-1:123456789012:instance/i-b188560f" ]