Modelli di EventBridge eventi 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à.

Modelli di EventBridge eventi Amazon

I modelli di eventi hanno la stessa struttura degli eventi a cui corrispondono. Le regole utilizzano modelli di eventi per selezionare eventi e inviarli alle destinazioni. Un modello di eventi può corrispondere o meno a un evento.

Importante

Nel EventBridge, è possibile creare regole che possono portare ad higher-than-expected addebiti e limitazioni. Ad esempio, puoi creare inavvertitamente una regola che genera un ciclo infinito, in cui una regola viene attivata in modo ricorsivo senza fine. Ad esempio, hai creato una regola per rilevare eventuali modifiche alle liste di controllo degli accessi (ACL) in un bucket S3 e attivare un programma software che le imposti sullo stato desiderato. Se la regola non è scritta con attenzione, la successiva modifica alle ACL la riattiva, creando un loop infinito.

Per indicazioni su come scrivere regole e modelli di eventi precisi per ridurre al minimo tali risultati imprevisti, consulta Best practice per la definizione di regole Amazon EventBridge e Le migliori pratiche per la definizione dei modelli di EventBridge eventi Amazon.

Il video seguente fornisce informazioni di base sui modelli di eventi:

L'evento seguente mostra un semplice AWS evento di Amazon EC2.

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "111122223333", "time": "2017-12-22T18:43:48Z", "region": "us-west-1", "resources": [ "arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0" ], "detail": { "instance-id": "i-1234567890abcdef0", "state": "terminated" } }

Il seguente modello di eventi elabora tutti gli eventi instance-termination di Amazon EC2.

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

Creazione di modelli di eventi

Per creare un modello di eventi, specifichi i campi di un evento a cui deve corrispondere il modello. Specifica solo i campi che utilizzi per la corrispondenza. Il precedente esempio di modello di evento fornisce solo valori per tre campi: i campi di primo livello "source" e e "detail-type" il "state" campo all'interno del campo "detail" oggetto. EventBridge ignora tutti gli altri campi dell'evento quando applica la regola.

Affinché un modello di eventi corrisponda a un evento, l'evento deve contenere tutti i nomi di campo elencati nel modello di eventi. I nomi di campo devono essere visualizzati nell'evento con la stessa struttura di nidificazione.

Quando si scrivono modelli di eventi per la corrispondenza con gli eventi, è possibile utilizzare l'API TestEventPattern o il comando CLI test-event-pattern per verificare che il modello corrisponda agli eventi corretti. Per ulteriori informazioni, vedere TestEventPattern.

Valori di eventi corrispondenti

In un modello di eventi, il valore per la corrispondenza si trova in un array JSON, racchiuso tra parentesi quadre ("[", "]") in modo da poter fornire più valori. Ad esempio, per abbinare gli eventi di Amazon EC2 oppure AWS Fargate, puoi utilizzare lo schema seguente, che corrisponde agli eventi in cui il valore del "source" campo è o"aws.ec2". "aws.fargate"

{ "source": ["aws.ec2", "aws.fargate"] }

Considerazioni sulla creazione di modelli di eventi

Di seguito sono riportati alcuni aspetti da considerare nella creazione dei modelli di eventi:

  • EventBridge ignora i campi dell'evento che non sono inclusi nel modello di evento. L'effetto è che esiste un carattere jolly "*": "*" per i campi che non compaiono nel modello di eventi.

  • I valori che corrispondono ai modelli di eventi seguono le regole JSON. È possibile includere stringhe racchiuse tra virgolette ("), numeri e parole chiave true, false, e null.

  • Per le stringhe, EventBridge utilizza la character-by-character corrispondenza esatta senza ripiegamento tra maiuscole e minuscole o qualsiasi altra normalizzazione delle stringhe.

  • Per i numeri, utilizza la rappresentazione in formato stringa EventBridge . Ad esempio, 300, 300.0 e 3.0e2 non sono considerati uguali.

  • Se vengono specificati più modelli per lo stesso campo JSON, utilizza EventBridge solo l'ultimo.

  • Tieni presente che quando EventBridge compila i modelli di eventi da utilizzare, usa dot (.) come carattere di unione.

    Ciò significa che EventBridge tratterà i seguenti modelli di eventi come identici:

    ## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }

    Entrambi i modelli di eventi corrisponderanno quindi ai due eventi seguenti:

    ## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
    Nota

    Questo descrive EventBridge il comportamento attuale e non dovrebbe essere considerato tale da non cambiare.

  • I modelli di eventi contenenti campi duplicati non sono validi. Se un modello contiene campi duplicati, considera EventBridge solo il valore finale del campo.

    Ad esempio, i seguenti modelli di eventi corrisponderanno allo stesso evento:

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }

    E EventBridge tratta i due eventi seguenti come identici:

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
    Nota

    Questo descrive EventBridge il comportamento attuale e non dovrebbe essere considerato tale da non cambiare.

Operazioni di confronto da utilizzare in modelli di eventi

Di seguito un riepilogo di tutti gli operatori di confronto disponibili in EventBridge.

Gli operatori di confronto funzionano solo su nodi foglia, a eccezione di $or e anything-but.

Confronto Esempio Sintassi delle regole

And

La posizione è "New York" e il giorno è "lunedì"

"Location": [ "New York" ], "Day": ["Monday"]

Tutto tranne Lo stato è qualsiasi valore oltre a «inizializzazione».

"state": [ { "anything-but": "initializing" } ]

Qualsiasi cosa tranne (inizia con)

La regione non è negli Stati Uniti.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

Tutto tranne (finisce con)

FileName non termina con un'estensione.png.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

Tutto tranne (ignora maiuscole e minuscole)

Lo stato è qualsiasi valore oltre a «inizializzazione» o qualsiasi altra variazione di maiuscolo/minuscolo, come «INITIALIZING».

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

Begins with

La regione è negli Stati Uniti.

"Region": [ {"prefix": "us-" } ]

Inizia con (ignora maiuscole e minuscole)

Il nome del servizio inizia con le lettere «eventb», indipendentemente da maiuscole e minuscole.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

Empty

LastName è vuoto.

"LastName": [""]

Equals

Il nome è "Alice"

"Name": [ "Alice" ]

Equals (ignora maiuscole e minuscole)

Il nome è "Alice"

"Name": [ { "equals-ignore-case": "alice" } ]

Ends with

FileName termina con un'estensione.png

"FileName": [ { "suffix": ".png" } ]

Termina con (ignora maiuscole)

Il nome del servizio termina con le lettere «tbridge» o con qualsiasi altra variante di maiuscola, ad esempio «TBRIDGE».

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

Exists

ProductName esiste

"ProductName": [ { "exists": true } ]

Does not exist

ProductName non esiste

"ProductName": [ { "exists": false } ]

Not

Il tempo è qualsiasi tranne "piovoso"

"Weather": [ { "anything-but": [ "Raining" ] } ]

Null

UserID è nullo

"UserID": [ null ]

Numeric (uguale)

Il prezzo è 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Numeric (intervallo)

Il prezzo è superiore a 10 e inferiore o uguale a 20

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Or

PaymentType è «Credito» o «Debito»

"PaymentType": [ "Credit", "Debit"]

Or (campi multipli)

La posizione è "New York" o il giorno è "lunedì".

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

Carattere jolly

Qualsiasi file con estensione .png, situato nella cartella "dir"

"FileName": [ { "wildcard": "dir/*.png" } ]

Esempi di eventi e modelli di eventi

Puoi utilizzare tutti i tipi e i valori di dati JSON per trovare eventi corrispondenti. Di seguito sono riportati esempi di eventi e modelli di eventi corrispondenti.

Corrispondenza in base ai campi

È possibile trovare una corrispondenza in base al valore di un campo. Considera il seguente evento di Dimensionamento automatico Amazon EC2.

{ "version": "0", "id": "3e3c153a-8339-4e30-8c35-687ebef853fe", "detail-type": "EC2 Instance Launch Successful", "source": "aws.autoscaling", "account": "123456789012", "time": "2015-11-11T21:31:47Z", "region": "us-east-1", "resources": [], "detail": { "eventVersion": "", "responseElements": null } }

Per l'evento precedente, puoi utilizzare il campo "responseElements" come criterio di corrispondenza.

{ "source": ["aws.autoscaling"], "detail-type": ["EC2 Instance Launch Successful"], "detail": { "responseElements": [null] } }

Corrispondenza in base ai valori

Considera il seguente evento Amazon Macie, che è troncato.

{ "version": "0", "id": "0948ba87-d3b8-c6d4-f2da-732a1example", "detail-type": "Macie Finding", "source": "aws.macie", "account": "123456789012", "time": "2021-04-29T23:12:15Z", "region":"us-east-1", "resources": [ ], "detail": { "schemaVersion": "1.0", "id": "64b917aa-3843-014c-91d8-937ffexample", "accountId": "123456789012", "partition": "aws", "region": "us-east-1", "type": "Policy:IAMUser/S3BucketEncryptionDisabled", "title": "Encryption is disabled for the S3 bucket", "description": "Encryption is disabled for the Amazon S3 bucket. The data in the bucket isn’t encrypted using server-side encryption.", "severity": { "score": 1, "description": "Low" }, "createdAt": "2021-04-29T15:46:02Z", "updatedAt": "2021-04-29T23:12:15Z", "count": 2, . . .

Il seguente modello di eventi corrisponde a qualsiasi evento con un punteggio di gravità pari a 1 e un conteggio pari a 2.

{ "source": ["aws.macie"], "detail-type": ["Macie Finding"], "detail": { "severity": { "score": [1] }, "count":[2] } }