Come posso creare un modello di evento personalizzato per una regola EventBridge?
Desidero acquisire eventi per i servizi AWS con una regola Amazon EventBridge. Tuttavia, non riesco a creare un modello di evento personalizzato che corrisponda all'evento.
Risoluzione
Nota: se si verificano errori durante l'esecuzione dei comandi dell'interfaccia a riga di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
EventBridge accetta eventi da AWS Services, partner EventBridge ed eventi personalizzati. Questo articolo illustra gli eventi JSON originati da servizi AWS. Puoi creare regole EventBridge con modelli di eventi per filtrare gli eventi in entrata. In questo modo, la regola EventBridge corrisponde solo agli eventi desiderati e li inoltra ai target.
Determina il formato JSON dell'evento in entrata
Esistono tre metodi utilizzati per determinare il formato JSON per un evento in entrata:
Consulta questo elenco di esempi di evento da servizi AWS ricevuti da EventBridge .
EventBridge fornisce lo strumento EventBridge Sandbox per aiutare gli utenti a creare e convalidare modelli di eventi. Per esempio, per creare un evento EC2 Instance State-change, completa i seguenti passaggi:
- Apri la console di EventBridge.
- Dal pannello di navigazione, espandi Risorse per sviluppatori, quindi seleziona Sandbox.
- Nella scheda Modello evento, nella sezione Esempio di evento, seleziona Eventi AWS.
- Nel campo Esempi di evento, seleziona Notifica EC2 Instance State-change. Questo popola la finestra con il primo esempio di evento. Per un determinato tipo di evento, potrebbero essere disponibili più esempi.
- Nella sezione Metodo di creazione, scegli di testare lo schema dell’evento.
- Crea una regola EventBridge con un modello di evento semplice che corrisponda a tutti gli eventi per un determinato servizio AWS. Per esempio, questo modello di evento corrisponde a tutti gli eventi Amazon Elastic Compute Cloud (Amazon EC2):
Nota: non sono consentiti eventi vuoti nel modello dell’evento.<{ "source": [ "aws.ec2" ] }
Successivamente, associa un target CloudWatch Log Group o un argomento SNS alla regola per acquisire gli eventi in entrata. Il target deve avere l'opzione Configura l’input del target impostata su Eventi corrispondenti in modo che il JSON emesso dal servizio venga ricevuto correttamente.
Crea un modello di evento nello stesso formato JSON dell'evento in entrata
Prerequisiti:
- tutti i campi che non specifichi nel modello dell'evento vengono abbinati automaticamente. Per esempio, se nel modello di evento Dettaglio non è specificato, il modello di evento corrisponde a ogni evento con qualsiasi dettaglio.
- Per abbinare i campi che si trovano un livello più in basso nella struttura JSON, utilizza le parentesi graffe { }. Un visualizzatore JSON potrebbe essere utile se stai cercando strutture di eventi più grandi.
- La stringa da abbinare dall'evento JSON deve essere racchiusa tra parentesi quadre\ []. Puoi includere più valori tra parentesi quadre in modo che l'evento venga richiamato quando uno dei valori è presente in un evento in entrata. Per esempio, per richiamare un evento basato su ogni evento inviato da Amazon EC2 o Amazon DynamoDB, utilizza il seguente comando:
{ "source": [ "aws.ec2", "aws.dynamodb" ] }
Utilizza a il target CloudWatch o SNS per ottenere l'evento in entrata
L’esempio mostra un evento Route 53 emesso su EventBridge. La chiamata API ChangeResourceRecordsets rappresenta la creazione di un record A in una zona ospitata di Amazon Route 53. Un argomento di Amazon Simple Notification Service (Amazon SNS) o un target Amazon CloudWatch Log Group acquisisce il seguente evento:
{ "version": "0", "id": "d857ae5c-cc83-3742-ab88-d825311ee4e9", "detail-type": "AWS API Call via CloudTrail", "source": "aws.route53", "account": "123456789012", "time": "2019-12-05T16:50:53Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAABCDEFGHIJKLMNOPQ:Admin", "arn": "arn:aws:sts::123456789012:assumed-role/Admin", "accountId": "123456789012", "accessKeyId": "ASIAABCDEFGH12345678", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAABCDEFGHIJKLMNOPQ", "arn": "arn:aws:iam::123456789012:role/Admin", "accountId": "123456789012", "userName": "Admin" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2019-12-05T16:28:27Z" } } }, "eventTime": "2019-12-05T16:50:53Z", "eventSource": "route53.amazonaws.com", "eventName": "ChangeResourceRecordSets", "awsRegion": "us-east-1", "sourceIPAddress": "12.34.56.78", "userAgent": "console.amazonaws.com", "requestParameters": { "hostedZoneId": "Z1RP12345WXRQD", "changeBatch": { "changes": [ { "action": "CREATE", "resourceRecordSet": { "type": "A", "tTL": 300, "resourceRecords": [ { "value": "4.4.4.4" } ], "name": "test.example.us." } } ] } }, "responseElements": { "changeInfo": { "status": "PENDING", "id": "/change/C271P4WIKN511J", "submittedAt": "Dec 5, 2019 4:50:53 PM" } }, "additionalEventData": { "Note": "Do not use to reconstruct hosted zone" }, "requestID": "bbbf9847-96cb-45ef-b617-d535b9fe83d8", "eventID": "74e2d2c8-7497-4292-94d0-348272dbc4f7", "eventType": "AwsApiCall", "apiVersion": "2013-04-01" } }
Crea il modello di evento corrispondente
Questo esempio di modello di evento filtra una serie di campi. Per esempio, eventName, hostedZoneld, action e type. Gli eventi corrispondenti devono contenere tutti i relativi campi e valori. Il modello isola i record A creati rispetto a una specifica zona ospitata.
{ "source": [ "aws.route53" ], "detail": { "eventSource": [ "route53.amazonaws.com" ], "eventName": [ "ChangeResourceRecordSets" ], "requestParameters": { "hostedZoneId": [ "Z1RP12345WXRQD" ], "changeBatch": { "changes": { "action": [ "CREATE" ], "resourceRecordSet": { "type": [ "A" ] } } } } } }
Testa il modello di evento
Utilizza la console di EventBridge per testare il modello di evento
Per sfruttare EventBridge Sandbox, completa i seguenti passaggi:
- Nella sezione Esempio di evento, seleziona o inserisci un esempio di evento.
- Nella sezione Modello di evento, fornisci un modello di evento. Puoi utilizzare i menu del Modulo modello di evento per creare un modello di evento. Oppure puoi inserire un modello di evento personalizzato con i Modelli personalizzati (editor JSON).
- Dopo aver popolato entrambe le sezioni, seleziona Modello di evento per confermare che il modello di evento corrisponda all'esempio di evento specificato.
Utilizza l'interfaccia a riga di comando di AWS per testare il modello di evento
Nell'interfaccia a riga di comando di AWS, esegui il comando test-event-pattern. Per confermare che lo schema degli eventi corrisponde, assicurati che il risultato sia true. Puoi identificare gli eventi JSON inviati dal servizio AWS e aiutare il tuo modello di eventi personalizzato ad acquisire eventi specifici.
Informazioni correlate
Modelli di evento di Amazon EventBridge
Tutorial: Crea una regola EventBridge che reagisca alle chiamate API AWS con CloudTrail
Amazon EventBridge - Qual è la differenza tra CloudWatch Events ed EventBridge? sul sito Web YouTube
Video correlati
![Guarda il video di Rajesh per saperne di più (4:03) Guarda il video di Rajesh per saperne di più (4:03)](https://i.ytimg.com/vi/MxFaPxvERMw/mqdefault.jpg)
![AWS UFFICIALE](/static/images/aws.png)
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa