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

Sie können den Text aus einem Ereignis anpassen, bevor EventBridge die Informationen an das Ziel einer Regel übergibt. Mithilfe des Eingabe-Transformators in der Konsole oder der API definieren Sie Variablen, die den JSON-Pfad verwenden, um auf Werte in der ursprünglichen Ereignisquelle zu verweisen. Das transformierte Ereignis wird anstelle des ursprünglichen Ereignisses an ein Ziel gesendet. Dynamische Pfadparameter müssen jedoch auf das ursprüngliche Ereignis verweisen, nicht auf das transformierte Ereignis. Sie können bis zu 100 Variablen definieren und dabei jeder einen Wert aus der Eingabe zuweisen. Anschließend können Sie diese Variablen in der Eingabevorlage als <variable-name> verwenden.

Ein Tutorial zur Verwendung des Eingabe-Transformators finden Sie unter Tutorial: Verwenden des Eingabe-Transformators, um die EventBridge-Ausgabe an das Ereignisziel anzupassen.

Anmerkung

EventBridge unterstützt nicht die gesamte JSON-Pfadsyntax und wertet sie zur Laufzeit aus. Die unterstützte Syntax umfasst:

  • Punktnotation (zum Beispiel $.detail)

  • Bindestriche

  • Unterstriche

  • Alphanumerische Zeichen

  • Array-Indizes

  • Platzhalter (*)

Vordefinierte Variablen

Es gibt vordefinierte Variablen, die Sie verwenden können, ohne einen JSON-Pfad zu definieren. Diese Variablen sind reserviert und Sie können keine Variablen mit diesen Namen erstellen:

  • aws.events.rule-arn – Der Amazon-Ressourcenname (ARN) der EventBridge Regel.

  • aws.events.rule-name – Der Name der EventBridge Regel.

  • aws.events.event.ingestion-time – Der Zeitpunkt, zu dem das Ereignis von empfangen wurde EventBridge. Dies ist ein ISO-8601-Zeitstempel. Diese Variable wird von generiert EventBridge und kann nicht überschrieben werden.

  • aws.events.event – Die ursprüngliche Ereignisnutzlast als JSON (ohne das detail-Feld) Kann nur als Wert für ein JSON-Feld verwendet werden, da dessen Inhalt nicht durch Escape-Zeichen geschützt ist

  • aws.events.event.json – Die gesamte ursprüngliche Ereignisnutzlast als JSON (mit dem detail-Feld) Kann nur als Wert für ein JSON-Feld verwendet werden, da dessen Inhalt nicht durch Escape-Zeichen geschützt ist

Beispiele für die Eingabetransformation

Im Folgenden sehen Sie ein Amazon-EC2-Beispielereignis.

{ "version": "0", "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-abcd1111" ], "detail": { "instance-id": "i-0123456789", "state": "RUNNING" } }

Wenn Sie eine Regel in der Konsole definieren, wählen Sie die Option Input Transformer unter Configure input (Eingabe konfigurieren) aus. Diese Option zeigt zwei Textfelder an: eines für den Input Path (Eingabepfad) und eines für die Input Template (Eingabevorlage).

Der Eingabepfad wird verwendet, um Variablen zu definieren. Verwenden Sie den JSON-Pfad, um auf Elemente in Ihrem Ereignis zu verweisen und diese Werte in Variablen zu speichern. Sie könnten beispielsweise einen Eingabepfad erstellen, um auf Werte in dem Beispielereignis zu verweisen, indem Sie Folgendes in das erste Textfeld eingeben. Sie können auch Klammern und Indizes verwenden, um Elemente aus Arrays abzurufen.

Anmerkung

EventBridge ersetzt Eingabe-Transformatoren zur Laufzeit, um eine gültige JSON-Ausgabe sicherzustellen. Setzen Sie aus diesem Grund Variablen, die auf JSON-Pfadparameter verweisen, in Anführungszeichen, Variablen, die sich auf JSON-Objekte oder -Arrays beziehen, jedoch nicht in Anführungszeichen.

{ "timestamp" : "$.time", "instance" : "$.detail.instance-id", "state" : "$.detail.state", "resource" : "$.resources[0]" }

Damit werden vier Variablen definiert, <timestamp>, <instance>, <state> und <resource>. Sie können auf diese Variablen beim Erstellen Ihrer Eingabevorlage verweisen.

Die Eingabevorlage ist eine Vorlage für die Informationen, die Sie an Ihr Ziel übergeben möchten. Sie können eine Vorlage erstellen, die entweder eine Zeichenfolge oder JSON an das Ziel übergibt. Unter Verwendung des vorherigen Ereignisses und Eingabepfads wird das Ereignis in den folgenden Beispielen für Eingabevorlagen in die Beispielausgabe transformiert, bevor es an ein Ziel weitergeleitet wird.

Beschreibung Vorlage Output
Einfache Zeichenfolge
"instance <instance> is in <state>"
"instance i-0123456789 is in RUNNING"

Zeichenfolge mit Anführungszeichen, die durch Escape-Zeichen geschützt sind

"instance \"<instance>\" is in <state>"
"instance \"i-0123456789\" is in RUNNING"

Beachten Sie, dass dies das Verhalten in der - EventBridge Konsole ist. In der AWS CLI werden die Schrägstriche durch Escape-Zeichen geschützt. Das Ergebnis lautet "instance "i-0123456789" is in RUNNING".

Einfache JSON

{ "instance" : <instance>, "state": <state> }
{ "instance" : "i-0123456789", "state": "RUNNING" }

JSON mit Zeichenfolgen und Variablen

{ "instance" : <instance>, "state": "<state>", "instanceStatus": "instance \"<instance>\" is in <state>" }
{ "instance" : "i-0123456789", "state": "RUNNING", "instanceStatus": "instance \"i-0123456789\" is in RUNNING" }

JSON mit einer Mischung aus Variablen und statischen Informationen

{ "instance" : <instance>, "state": [ 9, <state>, true ], "Transformed" : "Yes" }
{ "instance" : "i-0123456789", "state": [ 9, "RUNNING", true ], "Transformed" : "Yes" }

Einbeziehen von reservierten Variablen in JSON

{ "instance" : <instance>, "state": <state>, "ruleArn" : <aws.events.rule-arn>, "ruleName" : <aws.events.rule-name>, "originalEvent" : <aws.events.event.json> }
{ "instance" : "i-0123456789", "state": "RUNNING", "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example", "ruleName" : "example", "originalEvent" : { ... // commented for brevity } }

Einbeziehen von reservierten Variablen in eine Zeichenfolge

"<aws.events.rule-name> triggered"
"example triggered"

Amazon- CloudWatch Protokollgruppe

{ "timestamp" : <timestamp>, "message": "instance \"<instance>\" is in <state>" }
{ "timestamp" : 2015-11-11T21:29:54Z, "message": "instance "i-0123456789" is in RUNNING }

Transformieren von Eingaben mithilfe der EventBridge API

Informationen zur Verwendung der EventBridge API zum Transformieren von Eingaben finden Sie unter Verwenden von Input Transformer zum Extrahieren von Daten aus einem Ereignis und zum Eingeben dieser Daten in die Ziel-.

Transformieren von Eingaben mithilfe von AWS CloudFormation

Informationen zur Verwendung von AWS CloudFormation zur Transformation von Eingaben finden Sie unter AWS::Events::Rule InputTransformer.

Häufige Probleme beim Transformieren von Eingaben

Dies sind einige häufige Probleme bei der Transformation von Eingaben in EventBridge:

  • Für Zeichenfolgen sind Anführungszeichen erforderlich.

  • Beim Erstellen des JSON-Pfads für Ihre Vorlage erfolgt keine Validierung.

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

  • JSON-Eigenschaften wie aws.events.event.json können nur als Wert eines JSON-Felds verwendet werden, nicht inline in anderen Zeichenfolgen.

  • EventBridge maskiert keine vom Eingabepfad extrahierten Werte, wenn die Eingabevorlage für ein Ziel ausgefüllt wird.

  • Wenn ein JSON-Pfad auf ein JSON-Objekt oder Array verweist, die Variable jedoch in einer Zeichenfolge referenziert wird, EventBridge entfernt alle internen Anführungszeichen, um eine gültige Zeichenfolge sicherzustellen. Für eine Variable, die auf <detail> verweist$.detail, würde beispielsweise „Detail ist <Detail>“ dazu führen, dass Anführungszeichen aus dem Objekt EventBridge entfernt werden.

    Wenn Sie also ein JSON-Objekt ausgeben möchten, das auf einer einzelnen JSON-Pfadvariablen basiert, müssen Sie es als Schlüssel platzieren. In diesem Beispiel {"detail": <detail>}.

  • Für Variablen, die Zeichenfolgen darstellen, sind keine Anführungszeichen erforderlich. Sie sind zulässig, fügen jedoch während der Transformation EventBridge automatisch Anführungszeichen zu Zeichenfolgenvariablenwerten hinzu, um sicherzustellen, dass die Transformationsausgabe gültiges JSON ist. EventBridge fügt keine Anführungszeichen zu Variablen hinzu, die JSON-Objekte oder Arrays darstellen. Fügen Sie für Variablen, die JSON-Objekte oder -Arrays darstellen, keine Anführungszeichen hinzu.

    Die folgende Eingabevorlage enthält beispielsweise Variablen, die sowohl Zeichenfolgen als auch JSON-Objekte darstellen:

    { "ruleArn" : <aws.events.rule-arn>, "ruleName" : <aws.events.rule-name>, "originalEvent" : <aws.events.event.json> }

    Das Ergebnis ist gültiges JSON mit den richtigen Anführungszeichen:

    { "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example", "ruleName" : "example", "originalEvent" : { ... // commented for brevity } }