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.
Transformation Amazon EventBridge Amazon-Eingaben
Sie können den Text eines Ereignisses anpassen, bevor EventBridge die Informationen an das Ziel einer Regel weitergegeben werden. Mithilfe des Eingangstransformators in der Konsole oder des definieren Sie VariablenAPI, die mithilfe von JSON Pfaden auf Werte in der ursprünglichen Ereignisquelle 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 < verwendenvariable-name
>.
Ein Tutorial zur Verwendung des Eingabe-Transformators finden Sie unter Tutorial: Verwenden Sie Eingangstransformatoren, um Ereignisse zu transformieren in EventBridge.
Anmerkung
EventBridge unterstützt nicht die gesamte JSON Path-Syntax und wertet sie zur Laufzeit aus. Die unterstützte Syntax umfasst:
Punktnotation (zum Beispiel
$.detail
)Bindestriche
Unterstriche
Alphanumerische Zeichen
Array-Indizes
Platzhalter (*)
In diesem Thema:
- Vordefinierte Variablen
- Beispiele für die Eingabetransformation
- Transformieren von Eingaben mithilfe der EventBridge API
- Transformieren von Eingaben mithilfe von AWS CloudFormation
- Häufige Probleme beim Transformieren von Eingaben
- Konfiguration eines Eingangstransformators beim Erstellen einer Regel in EventBridge
- Testen eines Zieleingangstransformators mit der EventBridge Sandbox
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
— Die Uhrzeit, zu der die Veranstaltung bei eingegangen ist EventBridge. Dies ist ein ISO 8601-Zeitstempel. Diese Variable wird von generiert EventBridge und kann nicht überschrieben werden. -
aws.events.event
— Die ursprüngliche Event-Payload als JSON (ohne dasdetail
Feld). Kann nur als Wert für ein JSON Feld verwendet werden, da dessen Inhalt nicht maskiert wird. -
aws.events.event.json
— Die vollständige ursprüngliche Event-Payload alsJSON. (mit demdetail
Feld). Kann nur als Wert für ein JSON Feld verwendet werden, da dessen Inhalt nicht maskiert wird.
Beispiele für die Eingabetransformation
Das Folgende ist ein Beispiel für eine EC2 Amazon-Veranstaltung.
{
"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).
Eingabepfad
Der Eingabepfad wird verwendet, um Variablen zu definieren. Verwenden Sie JSON den Pfad, um auf Elemente in Ihrem Ereignis zu verweisen, und speichern Sie diese Werte in Variablen. 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 Eingangstransformatoren zur Laufzeit, um eine gültige JSON Ausgabe sicherzustellen. Setzen Sie aus diesem Grund Variablen, die sich auf JSON Pfadparameter beziehen, 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.
Anmerkung
Amazon CloudWatch Logs and SSM Targets unterstützen die Verwendung von Input
und InputPath
in ihren Eingangstransformatoren nicht.
Eingabevorlage
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 weitergibt. 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 |
|
|
Zeichenfolge mit Anführungszeichen, die durch Escape-Zeichen geschützt sind |
|
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 |
Einfach JSON |
|
|
JSONmit Zeichenketten und Variablen |
|
|
JSONmit einer Mischung aus Variablen und statischen Informationen |
|
|
Einschließlich reservierter Variablen in JSON |
|
|
Einbeziehen von reservierten Variablen in eine Zeichenfolge |
|
|
CloudWatch Amazon-Protokollgruppe |
|
|
Transformieren von Eingaben mithilfe der EventBridge API
Informationen zur Verwendung von EventBridge API zum Transformieren von Eingaben finden Sie unter Verwenden des Eingangstransformators, um Daten aus einem Ereignis zu extrahieren und diese Daten in das Ziel einzugeben.
Transformieren von Eingaben mithilfe von AWS CloudFormation
Informationen zur Verwendung AWS CloudFormation zum Transformieren von Eingaben finden Sie unter AWS: :Events: InputTransformer :Rule.
Häufige Probleme beim Transformieren von Eingaben
Dies sind einige häufig auftretende 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 Überprüfung.
-
Wenn Sie eine Variable angeben, die einem JSON Pfad entspricht, der in dem Ereignis nicht existiert, wird diese Variable nicht erstellt und erscheint nicht in der Ausgabe.
-
JSONEigenschaften wie
aws.events.event.json
können nur als Wert eines JSON Felds verwendet werden, nicht als Inline in anderen Zeichenketten. -
EventBridge maskiert Werte, die vom Eingabepfad extrahiert wurden, nicht, wenn die Eingabevorlage für ein Ziel gefüllt wird.
-
Wenn ein JSON Pfad auf ein JSON Objekt oder ein Array verweist, die Variable jedoch in einer Zeichenfolge referenziert wird, werden alle internen Anführungszeichen EventBridge entfernt, um sicherzustellen, dass es sich um eine gültige Zeichenfolge handelt. Bei einer Variablen, auf die
<detail>
verwiesen wird$.detail
, <detail>würde „Detail is“ beispielsweise 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 aber während der Transformation EventBridge automatisch Anführungszeichen zu Zeichenkettenvariablenwerten hinzu, um sicherzustellen, dass die Transformationsausgabe gültig istJSON. EventBridge fügt Variablen, die JSON Objekte oder Arrays darstellen, keine Anführungszeichen hinzu. Fügen Sie keine Anführungszeichen für Variablen hinzu, die JSON Objekte oder Arrays darstellen.
Die folgende Eingabevorlage enthält beispielsweise Variablen, die sowohl Zeichenketten als auch JSON Objekte darstellen:
{ "ruleArn" : <aws.events.rule-arn>, "ruleName" : <aws.events.rule-name>, "originalEvent" : <aws.events.event.json> }
Das Ergebnis ist gültig JSON mit dem richtigen Zitat:
{ "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example", "ruleName" : "example", "originalEvent" : { ... // commented for brevity } }
-
Bei (Nicht-JSON) Textausgabe als mehrzeilige Zeichenketten setzen Sie jede einzelne Zeile in Ihrer Eingabevorlage in doppelte Anführungszeichen.
Wenn Sie beispielsweise Amazon Inspector Finding-Ereignisse mit dem folgenden Ereignismuster abgleichen würden:
{ "detail": { "severity": ["HIGH"], "status": ["ACTIVE"] }, "detail-type": ["Inspector2 Finding"], "source": ["inspector2"] }
Und mit dem folgenden Eingabepfad:
{ "account": "$.detail.awsAccountId", "ami": "$.detail.resources[0].details.awsEc2Instance.imageId", "arn": "$.detail.findingArn", "description": "$.detail.description", "instance": "$.detail.resources[0].id", "platform": "$.detail.resources[0].details.awsEc2Instance.platform", "region": "$.detail.resources[0].region", "severity": "$.detail.severity", "time": "$.time", "title": "$.detail.title", "type": "$.detail.type" }
Sie könnten die folgende Eingabevorlage verwenden, um eine mehrzeilige Zeichenkettenausgabe zu generieren:
"<severity> severity finding <title>" "Description: <description>" "ARN: \"<arn>\"" "Type: <type>" "AWS Account: <account>" "Region: <region>" "EC2 Instance: <instance>" "Platform: <platform>" "AMI: <ami>"