Tutorial: Verwenden des Input Transformers, um die Ausgabe an das Ereignisziel anzupassen - Amazon CloudWatch Events

Tutorial: Verwenden des Input Transformers, um die Ausgabe an das Ereignisziel anzupassen

Anmerkung

Amazon EventBridge ist die bevorzugte Methode zum Verwalten Ihrer Ereignisse. Amazon 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 allen Konsolen angezeigt. Weitere Informationen finden Sie unter Amazon EventBridge.

Sie können die Input Transformer-Funktion von CloudWatch Events verwenden, um Text anzupassen, der aus einem Ereignis stammt, bevor er in das Ziel einer Regel eingegeben wird.

Sie können mehrere JSON-Pfade aus dem Ereignis definieren und ihre Ausgaben unterschiedlichen Variablen zuweisen. Anschließend können Sie diese Variablen in der Eingabe-Vorlage in Form von <variable-name> verwenden. Die Zeichen < und > können nicht durch Escape-Zeichen geschützt werden.

Wenn Sie eine Variable angeben, die einem JSON-Pfad entspricht, der in dem Ereignis nicht vorhanden ist, wird diese Variable nicht erstellt und nicht in der Ausgabe angezeigt.

In diesem Tutorial extrahieren wir die Instance-ID und Status einer Amazon EC2-Instance aus dem Instance-Statusänderungsereignis. Wir verwenden den Input Transformator, um Daten in eine leicht lesbare Nachricht einzufügen, die an ein Amazon SNS-Thema gesendet wird. Die Regel wird ausgelöst, wenn eine beliebige Instance in irgendeinen Status übergeht. Beispielsweise erzeugt mit dieser Regel die folgende Amazon EC2-Instance-Statusänderungsbenachrichtigungsereignis die Amazon SNS-Nachricht The EC2 instance i-1234567890abcdef0 has changed state to stopped.

{ "id":"7bf73129-1428-4cd3-a780-95db273d1602", "detail-type":"EC2 Instance State-change Notification", "source":"aws.ec2", "account":"123456789012", "time":"2015-11-11T21:29:54Z", "region":"us-east-1", "resources":[ "arn:aws:ec2:us-east-1:123456789012:instance/ i-1234567890abcdef0" ], "detail":{ "instance-id":" i-1234567890abcdef0", "state":"stopped" } }

Dies realisieren wir, indem wir die instance-Variable auf den $.detail.instance-idJSON-Pfad aus dem Ereignis abbilden, und die state-Variable auf den $.detail.stateJSON-Pfad. Anschließend setzen wir die Eingabevorlage auf „Die EC2-Instance <instance> hat ihren Status in <status> geändert.“

Erstellen einer Regel

Anpassung der Instance-Statusänderungsinformation, die an ein Ziel gesendet wird, unter Verwendung des Input Transformers
  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im Navigationsbereich Events und die Option Create rule aus.

  3. Führen Sie für Ereignisquelle folgende Schritte aus:

    1. Wählen Sie Event Pattern aus.

    2. Wählen Sie Build event pattern to match events by service aus.

    3. Wählen Sie EC2, EC2 Instance State-change Notification (Benachrichtigung über die Statusänderung der EC2-Instance).

    4. Wählen Sie Any state (Beliebiger Status) und Any instance (Beliebige Instance) aus.

  4. Wählen Sie für Targets die Option Add Target (Ziel hinzufügen) und SNS topic (SNS-Thema) aus.

  5. Für Topic (Thema) wählen Sie das Amazon SNS-Thema, das benachrichtigt werden soll, wenn Amazon EC2-Instances ihren Status ändern.

  6. Wählen Sie Configure input, Input Transformer.

  7. Geben Sie im nächsten Feld {"state" : "$.detail.state", "instance" : "$.detail.instance-id"} ein

  8. Geben Sie im nächste Feld „Die EC2-Instance <instance> hat ihren Status geändert in <state>."

  9. Wählen Sie Configure details.

  10. Geben Sie einen Namen und eine Beschreibung für die Regel ein und wählen Sie Create rule aus.