Trasformazione degli EventBridge input di Amazon - Amazon EventBridge

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Trasformazione degli EventBridge input di Amazon

È possibile personalizzare il testo di un evento prima di EventBridge passare le informazioni alla destinazione di una regola. Utilizzando il trasformatore di input nella console o ilAPI, si definiscono le variabili che utilizzano il JSON percorso per fare riferimento ai valori nella fonte dell'evento originale. L'evento trasformato viene inviato a una destinazione anziché all'evento originale. Tuttavia, i parametri di percorso dinamici devono fare riferimento all'evento originale, non all'evento trasformato. Puoi definire fino a 100 variabili, assegnando a ciascuna un valore dall'input. Quindi puoi usare quelle variabili nel modello di input come <variable-name>.

Per un tutorial sull'uso del trasformatore di input, consulta Tutorial: usa i trasformatori di input per trasformare gli eventi in EventBridge.

Nota

EventBridge non supporta tutta la sintassi di JSON Path e la valuta in fase di esecuzione. La sintassi supportata include:

  • notazione a punti (ad esempio, $.detail)

  • trattini

  • caratteri di sottolineatura

  • caratteri alfanumerici

  • indici array

  • caratteri jolly (*)

Variabili predefinite

Esistono variabili predefinite che è possibile utilizzare senza definire un JSON percorso. Queste variabili sono riservate e non puoi creare variabili con questi nomi:

  • aws.events.rule-arn— L'Amazon Resource Name (ARN) della EventBridge regola.

  • aws.events.rule-name— Il nome della EventBridge regola.

  • aws.events.event.ingestion-time— L'ora in cui l'evento è stato ricevuto da EventBridge. Si tratta di un ISO timestamp 8601. Questa variabile è generata da EventBridge e non può essere sovrascritta.

  • aws.events.event— Il payload originale dell'evento as JSON (senza il detail campo). Può essere utilizzato solo come valore per un JSON campo, poiché il suo contenuto non viene ignorato.

  • aws.events.event.json— Il payload completo dell'evento originale come. JSON (con il detail campo). Può essere usato solo come valore per un JSON campo, poiché il suo contenuto non viene escluso.

Esempi di trasformazione di input

Di seguito è riportato un esempio di EC2 evento Amazon.

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

Quando definisci una regola nella console, seleziona l'opzione Input Transformer (Trasformatore di input) in Configure input (Configura input). Questa opzione visualizza due caselle di testo: una per Input Path (Percorso di input) e una per Input Template (Modello di input).

Percorso di input

Percorso di input viene utilizzato per definire le variabili. Usa JSON path per fare riferimento agli elementi del tuo evento e memorizza quei valori in variabili. Ad esempio, puoi creare un Input Path (Percorso di input) per fare riferimento ai valori nell'evento di esempio immettendo quanto segue nella prima casella di testo. È inoltre possibile utilizzare parentesi e indici per ottenere elementi dagli array.

Nota

EventBridge sostituisce i trasformatori di ingresso in fase di esecuzione per garantire un output valido. JSON Per questo motivo, inserite tra virgolette le variabili che fanno riferimento ai parametri del JSON percorso, ma non le virgolette attorno alle variabili che si riferiscono a JSON oggetti o matrici.

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

In questo modo, si definiscono quattro variabili, <timestamp>, <instance>, <state> e <resource>. Puoi fare riferimento a queste variabili durante la creazione di Input Path (Percorso di input).

Nota

Amazon CloudWatch Logs e SSM target non supportano l'uso di Input e InputPath nei rispettivi trasformatori di input.

Modello di input

Input Template (Modello di input) è un modello per le informazioni che desideri passare alla destinazione. È possibile creare un modello che passi una stringa o JSON al bersaglio. Utilizzando l'evento precedente e Input Path (Percorso di input), i seguenti esempi di Input Template (Modello di input) trasformeranno l'evento nell'output di esempio prima di indirizzarlo a una destinazione.

Descrizione Modello Output
Stringa semplice
"instance <instance> is in <state>"
"instance i-0123456789 is in RUNNING"

Stringa con virgolette di escape

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

Nota che questo è il comportamento della EventBridge console. AWS CLI esegue l'escape dei caratteri di barra e il risultato è "instance "i-0123456789" is in RUNNING".

Semplice JSON

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

JSONcon stringhe e variabili

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

JSONcon un mix di variabili e informazioni statiche

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

Inclusione di variabili riservate 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 } }

Inclusione di variabili riservate in una stringa

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

Gruppo di CloudWatch log Amazon

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

Trasformazione dell'input utilizzando il EventBridge API

Per informazioni sull'utilizzo dell'input EventBridge API per trasformare, consulta Use Input Transformer per estrarre dati da un evento e immettere tali dati nella destinazione.

Trasformazione dell'input utilizzando AWS CloudFormation

Per informazioni sull'utilizzo AWS CloudFormation per trasformare l'input, vedere AWS: :Events: :Rule. InputTransformer

Problemi comuni con la trasformazione di input

Questi sono alcuni problemi comuni quando si trasforma l'input in: EventBridge

  • Per le stringhe, le virgolette sono obbligatorie.

  • Non è prevista alcuna convalida durante la creazione del JSON percorso per il modello.

  • Se specifichi una variabile in modo che corrisponda a un JSON percorso che non esiste nell'evento, quella variabile non viene creata e non verrà visualizzata nell'output.

  • JSONproprietà come aws.events.event.json possono essere utilizzate solo come valore di un JSON campo, non in linea in altre stringhe.

  • EventBridge non sfugge ai valori estratti da Input Path, quando compila il modello di input per un target.

  • Se un JSON percorso fa riferimento a un JSON oggetto o a un array, ma la variabile è referenziata in una stringa, EventBridge rimuove tutte le virgolette interne per garantire una stringa valida. Ad esempio, per una variabile <detail> puntata$.detail, «Detail is<detail>" comporterebbe la EventBridge rimozione delle virgolette dall'oggetto.

    Pertanto, se si desidera generare un JSON oggetto basato su una singola variabile di JSON percorso, è necessario posizionarlo come chiave. In questo esempio, {"detail": <detail>}.

  • Le virgolette non sono necessarie per le variabili che rappresentano stringhe. Sono consentite, ma aggiungono EventBridge automaticamente le virgolette ai valori delle variabili di stringa durante la trasformazione, per garantire che l'output della trasformazione sia validoJSON. EventBridge non aggiunge virgolette alle variabili che rappresentano JSON oggetti o matrici. Non aggiungete virgolette per le variabili che rappresentano JSON oggetti o matrici.

    Ad esempio, il seguente modello di input include variabili che rappresentano sia stringhe che oggetti: JSON

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

    Risulta valido JSON con la citazione corretta:

    { "ruleArn" : "arn:aws:events:us-east-2:123456789012:rule/example", "ruleName" : "example", "originalEvent" : { ... // commented for brevity } }
  • Per l'output (nonJSON) testuale come stringhe multilinea, raccogli ogni riga separata del modello di input tra virgolette doppie.

    Ad esempio, se stavi Amazon Inspector confrontando gli eventi di Finding con il seguente schema di eventi:

    { "detail": { "severity": ["HIGH"], "status": ["ACTIVE"] }, "detail-type": ["Inspector2 Finding"], "source": ["inspector2"] }

    E utilizzando il seguente percorso di input:

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

    È possibile utilizzare il modello di input seguente per generare un output di stringhe multilinea:

    "<severity> severity finding <title>" "Description: <description>" "ARN: \"<arn>\"" "Type: <type>" "AWS Account: <account>" "Region: <region>" "EC2 Instance: <instance>" "Platform: <platform>" "AMI: <ami>"