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 (*)
In questo argomento:
- Variabili predefinite
- Esempi di trasformazione di input
- Trasformazione dell'input utilizzando il EventBridge API
- Trasformazione dell'input utilizzando AWS CloudFormation
- Problemi comuni con la trasformazione di input
- Configurazione di un trasformatore di ingresso durante la creazione di una regola in EventBridge
- Test di un trasformatore di ingresso target utilizzando la Sandbox EventBridge
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 ildetail
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 ildetail
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 |
|
|
Stringa con virgolette di escape |
|
Nota che questo è il comportamento della EventBridge console. AWS CLI
esegue l'escape dei caratteri di barra e il risultato è |
Semplice JSON |
|
|
JSONcon stringhe e variabili |
|
|
JSONcon un mix di variabili e informazioni statiche |
|
|
Inclusione di variabili riservate in JSON |
|
|
Inclusione di variabili riservate in una stringa |
|
|
Gruppo di CloudWatch log Amazon |
|
|
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>"