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à.
Le migliori pratiche per i modelli di EventBridge eventi di Amazon
Di seguito sono riportate alcune best practice da prendere in considerazione quando si definiscono modelli di eventi nelle regole di router di eventi.
Evitare di scrivere loop infiniti
In EventBridge, è possibile creare regole che portano a cicli infiniti, in cui una regola viene attivata ripetutamente. Ad esempio, una regola potrebbe rilevare ACLs le modifiche in un bucket S3 e attivare il software per modificarle nello stato desiderato. Se la regola non viene scritta con cura, la successiva modifica alla regola la ACLs riattiva, creando un ciclo infinito.
Per evitare questi problemi, scrivi i modelli di eventi per le tue regole in modo che siano il più precisi possibile, affinché corrispondano solo agli eventi che desideri effettivamente inviare alla destinazione. Nell'esempio precedente, creeresti un modello di eventi per trovare eventi corrispondenti di modo che le azioni attivate non riattivino la stessa regola. Ad esempio, create uno schema di eventi nella regola che corrisponda agli eventi solo se ACLs risultano in cattivo stato, anziché dopo qualsiasi modifica. Per ulteriori informazioni, consulta Rendere i modelli di eventi il più precisi possibile e Definire l'ambito dei modelli di eventi per tenere conto degli aggiornamenti delle origini di eventi.
Un loop infinito può generare rapidamente costi più alti di quelli previsti. Può anche comportare limitazioni e ritardi nella distribuzione degli eventi. Puoi monitorare il limite superiore delle frequenze di invocazioni per essere avvisato in caso di picchi di volume imprevisti.
Utilizza il budgeting per ricevere avvisi quando gli addebiti superano il limite specificato. Per ulteriori informazioni, consulta Gestione dei costi con i budget.
Rendere i modelli di eventi il più precisi possibile
Più preciso è il modello di eventi, più è probabile che corrisponda solo agli eventi effettivamente desiderati e che eviti corrispondenze impreviste quando vengono aggiunti nuovi eventi a un'origine di eventi o gli eventi esistenti vengono aggiornati per includere nuove proprietà.
I modelli di eventi possono includere filtri per trovare corrispondenze con:
Metadati relativi all'evento, ad esempio
source
.detail-type
account
oppureregion
.Dati relativi all'evento, ovvero i campi all'interno dell'oggetto
detail
.Contenuto dell'evento o valori effettivi dei campi all'interno dell'oggetto
detail
.
La maggior parte dei modelli è semplice, ad esempio specificando solo i filtrisource
e detail-type
. Tuttavia, EventBridge i modelli includono la flessibilità di filtrare in base a qualsiasi chiave o valore dell'evento. Inoltre, puoi applicare filtri di contenuto come i filtri prefix
e suffix
per migliorare la precisione dei modelli. Per ulteriori informazioni, consulta Utilizzo degli operatori di confronto nei modelli di EventBridge eventi di Amazon.
Specificare l'origine dell'evento e il tipo di dettagli come filtri
Puoi ridurre la generazione di loop infiniti e la corrispondenza di eventi indesiderati rendendo più precisi i modelli di eventi mediante i campi di metadati source
e detail-type
.
Quando devi trovare la corrispondenza con valori specifici in due o più campi, utilizza l'operatore di confronto $or
anziché elencare tutti i valori possibili in un unico array di valori.
Per gli eventi che vengono erogati tramite AWS CloudTrail, ti consigliamo di utilizzare il eventName
campo come filtro.
Il seguente esempio di pattern di eventi corrisponde CreateQueue
o SetQueueAttributes
proviene dal servizio Amazon Simple Queue Service CreateKey
o a DisableKeyRotation
eventi del AWS Key Management Service servizio.
{ "detail-type": ["AWS API Call via CloudTrail"], "$or": [{ "source": [ "aws.sqs" ], "detail": { "eventName": [ "CreateQueue", "SetQueueAttributes" ] } }, { "source": [ "aws.kms" ], "detail": { "eventName": [ "CreateKey", "DisableKeyRotation" ] } } ] }
Specificare l'account e la Regione come filtri
L'inclusione dei campi account
e region
nel modello di eventi aiuta a limitare la corrispondenza di eventi in più account o regioni.
Specificare filtri basati sul contenuto
I filtri basati sul contenuto possono aiutare a migliorare la precisione dei modelli di eventi, mantenendo comunque al minimo la lunghezza del modello di eventi. Ad esempio, anziché elencare tutti i possibili valori numerici, può risultare più utile avere una corrispondenza basata su un intervallo numerico.
Per ulteriori informazioni, consulta Utilizzo degli operatori di confronto nei modelli di EventBridge eventi di Amazon.
Definire l'ambito dei modelli di eventi per tenere conto degli aggiornamenti delle origini di eventi
Quando crei modelli di eventi, devi considerare che gli schemi e i domini di eventi possono evolversi ed espandersi nel tempo. Anche in questo caso, rendere i modelli di eventi il più precisi possibile aiuta a limitare le corrispondenze impreviste se l'origine dell'evento cambia o si espande.
Ad esempio, supponi di cercare eventi corrispondenti di un nuovo microservizio che pubblica eventi relativi ai pagamenti. Inizialmente, il servizio utilizza il dominio acme.payments
e pubblica un singolo evento, Payment accepted
:
{
"detail-type": "Payment accepted",
"source": "acme.payments",
"detail": {
"type": "credit
",
"amount": "100
",
"date": "2023-06-10
",
"currency": "USD
"
}
}
}
A questo punto, potresti creare un modello di eventi semplice che corrisponda agli eventi per i pagamenti accettati:
{ “source” : “acme.payments” }
Tuttavia, supponi che il servizio introduca in un secondo momento un nuovo evento per i pagamenti rifiutati:
{
"detail-type": "Payment rejected",
"source": "acme.payments",
"detail": {
}
}
In questo caso, il modello di eventi semplice che hai creato ora corrisponderà a entrambi gli eventi Payment accepted
e Payment rejected
. EventBridge indirizza entrambi i tipi di eventi verso la destinazione specificata per l'elaborazione, con possibili errori di elaborazione e costi di elaborazione aggiuntivi.
Per definire l'ambito del modello di eventi affinché sia relativo solo agli eventi Payment accepted
, dovresti specificare, come minimo, source
e detail-type
:
{
"detail-type": "Payment accepted",
"source": "acme.payments"
}
}
Nel modello di eventi puoi anche specificare l'account e la Regione, per limitare ulteriormente l'ambito quando eventi multi-account o multiregionali corrispondono a questa regola.
{
"account": "012345678910
",
"source": "acme.payments",
"region": "AWS-Region
",
"detail-type": "Payment accepted"
}
Convalidare i modelli di eventi
Per garantire che le regole corrispondano agli eventi desiderati, ti consigliamo vivamente di convalidare i modelli di eventi. Puoi convalidare i modelli degli eventi utilizzando la EventBridge console o: API
Nella EventBridge console, puoi creare e testare modelli di eventi come parte della creazione di una regola o separatamente utilizzando la Sandbox.
Puoi testare i modelli degli eventi a livello di codice utilizzando l'azione. TestEventPattern