Vai al contenuto principale

Amazon EventBridge: una guida all'architettura event-driven

Questa guida ti accompagna nell’uso di Amazon EventBridge per creare applicazioni event-driven scalabili, con esempi pratici, passaggi di setup e best practice.
· 11 min leggi

Scopri con l'IA

Amazon EventBridge è un potente servizio serverless di event bus che ti permette di creare architetture event-driven con un overhead operativo minimo. 

Nel mio lavoro con sistemi cloud-native, ho visto quanto siano cruciali la reattività in tempo reale e il disaccoppiamento dei servizi per costruire applicazioni scalabili e manutenibili, ed EventBridge offre proprio questo.

Cos’è Amazon EventBridge?

Prima di entrare nella configurazione, è importante capire che cos’è EventBridge, perché conta e come si inserisce nell’ecosistema più ampio di strumenti event-driven di AWS.

Panoramica di Amazon EventBridge

Amazon EventBridge is è un servizio di event bus completamente gestito e serverless che consente alle applicazioni di comunicare tramite eventi in quasi tempo reale. 

Semplifica l’instradamento degli eventi tra i produttori di eventi (sorgenti di cambiamento, come S3, DynamoDB o app personalizzate) e i consumatori di eventi (servizi che agiscono su tali cambiamenti, come Lambda, Step Functions o SNS).

Immagine con un diagramma che mostra Amazon EventBridge che instrada eventi dai produttori a più destinazioni.

Immagine con un diagramma che mostra Amazon EventBridge che instrada eventi dai produttori a più destinazioni. Fonte: AWS Blogs

EventBridge è progettato con scalabilità e flessibilità in mente. 

Scala automaticamente per gestire milioni di eventi al secondo e consente logiche di routing complesse tramite regole basate su JSON.

Alcune funzionalità chiave includono:

  • Integrazione nativa con oltre 90 servizi AWS (ad es., EC2, CodePipeline, CloudTrail)
  • Supporto per sorgenti eventi SaaS esterne, come Zendesk, Shopify e Datadog
  • Rilevamento e registro degli schemi integrati, che individuano e documentano automaticamente le strutture degli eventi
  • Archiviazione e replay degli eventi, per supportare debug, audit o rielaborazione di eventi passati

Questo rende EventBridge uno strumento fondamentale per creare architetture cloud disaccoppiate e resilienti.

EventBridge e architettura event-driven

EventBridge si basa sul modello di architettura event-driven (EDA).

In EDA, i servizi comunicano emettendo e reagendo agli eventi, invece di effettuare chiamate sincrone tra loro.

Ad esempio, invece che chiamare l’API di un altro servizio per avviare un’attività, un servizio emette semplicemente un evento come "ImageUploaded" e gli altri servizi in ascolto reagiscono di conseguenza.

L’immagine seguente illustra questa configurazione, con Amazon API Gateway che funge da punto d’ingresso sicuro verso l’Event bus centrale di EventBridge.

Immagine che mostra Amazon API Gateway come punto d’ingresso sicuro al bus EventBridge principale.

Immagine che mostra Amazon API Gateway come punto d’ingresso sicuro al bus EventBridge principale. Fonte: AWS Blogs

Vantaggi dell’architettura event-driven:

Immagine che illustra i vantaggi dell’architettura event-driven.

Immagine che illustra i vantaggi dell’architettura event-driven.

  • Loose coupling: i servizi sono indipendenti e non sono a conoscenza dell’esistenza reciproca.
  • Scalabilità: i sistemi possono scalare i singoli componenti in modo indipendente.
  • Tolleranza ai guasti: i malfunzionamenti in una parte del sistema non si propagano alle altre.
  • Elaborazione asincrona: migliora la reattività e le prestazioni del sistema.

EventBridge funge da spina dorsale dell’EDA su AWS, permettendoti di collegare microservizi, risorse cloud e persino sistemi di terze parti senza accoppiarli strettamente.

> Se vuoi costruire una solida comprensione dell’ecosistema event-driven di AWS, esplora il corso AWS Cloud Technology and Services.

Come EventBridge si differenzia da altre opzioni event-driven

AWS offre diversi strumenti per la gestione di eventi e messaggi, ma EventBridge propone funzionalità uniche che lo distinguono da alternative come SNS e SQS.

SNS (Simple Notification Service) 

SNS è ideale per il messaging pub/sub semplice.

Puoi pubblicare un messaggio su un topic e recapitarlo a più iscritti, come email, SMS o Lambda. 

Tuttavia, non offre routing sofisticato e filtraggio degli eventi.

SQS (Simple Queue Service)

SQS fornisce una coda affidabile e scalabile per l’archiviazione e l’elaborazione dei messaggi. 

I consumer interrogano la coda per i messaggi: è utile per sistemi asincroni e disaccoppiati, ma non supporta un routing push in tempo reale.

EventBridge

EventBridge combina il meglio di entrambi: routing in tempo reale, filtraggio avanzato, validazione degli schemi e integrazione con SaaS. 

È progettato per sistemi event-driven complessi e su larga scala che richiedono regole flessibili, destinazioni multiple e integrazioni fluide tra i servizi.

CloudWatch Events

CloudWatch Events è il precursore di EventBridge. 

EventBridge è la sua sostituzione di nuova generazione, che aggiunge:

  • Integrazione con partner SaaS
  • Event bus personalizzati
  • Rilevamento e registro degli schemi
  • Gestione migliorata di regole e permessi

Se stai ancora usando CloudWatch Events, valuta la migrazione a EventBridge per funzionalità più ricche.

Ecco un rapido confronto tra i diversi servizi discussi:

Funzionalità

SNS

SQS

EventBridge

Modello di consegna

Push (pub/sub)

Polling (coda)

Push (con routing basato su regole)

Filtraggio eventi

Base (attributi del messaggio)

Nessuno

Avanzato (pattern matching JSON)

Supporto fan-out

Sì

No

Sì

Supporto schemi

No

No

Sì (schema registry)

Integrazione con SaaS

Limitata

Limitata

Sì (integrazioni SaaS native)

Replay degli eventi

No

Con retention

Sì

Dead-letter Queue (DLQ)

Sì

Sì

Sì

Componenti principali e funzionalità chiave di Amazon EventBridge

Per usare Amazon EventBridge in modo efficace, è fondamentale comprenderne i mattoni di base. 

Questi componenti lavorano insieme per abilitare workflow dinamici e event-driven con un overhead infrastrutturale minimo. 

Di seguito una panoramica dettagliata di ciascun componente, cosa fa e come usarlo.

Event bus

Al centro di EventBridge c’è l’event bus, che funge da canale attraverso cui fluiscono tutti gli eventi. 

Un event bus riceve eventi da servizi AWS, applicazioni personalizzate o provider SaaS e poi li instrada alle destinazioni appropriate in base alle regole di matching.

L’immagine seguente mostra la sezione EventBridge Buses nella Console AWS.

Immagine con uno screenshot della Console AWS che mostra la sezione EventBridge Buses.

Immagine con uno screenshot della Console AWS che mostra la sezione EventBridge Buses.

Tipi di event bus

Ecco i tipi di event bus disponibili in AWS:

Default Event Bus:

  • Provisionato automaticamente in ogni account AWS.
  • Usato principalmente per ricevere eventi dai servizi AWS (come cambi di stato EC2 o eventi S3).
  • Puoi anche inviare i tuoi eventi personalizzati al bus predefinito se non è necessario un altro bus.

Custom Event Buses:

  • Creati da te per supportare domini, servizi o carichi di lavoro diversi.
  • Ideali per isolare gli eventi applicativi o separare ambienti di sviluppo e produzione.
  • Consentono un controllo più fine su policy di accesso e routing degli eventi.

Esempio d’uso:

Crea event bus separati per domini diversi, ad esempio uno per le operazioni e-commerce e un altro per l’analisi, per mantenere i flussi di eventi isolati e gestibili.

Creare un event bus personalizzato:

aws events create-event-bus --name my-app-bus

Capire regole e target

Le regole definiscono quali eventi devono essere instradati verso quali target. 

Usano il pattern matching JSON per filtrare gli eventi in arrivo sul bus e inoltrarli a una o più destinazioni.

Aspetti chiave delle regole:

  • Puoi filtrare su qualsiasi attributo dell’evento, come source, detail-type o campi annidati in detail.
  • Più regole possono fare match con lo stesso evento, abilitando il comportamento fan-out.
  • Una singola regola può avere più target, permettendo a un evento di attivare pipeline di elaborazione parallele.

Target supportati includono:

  • AWS Lambda
  • Step Functions
  • Kinesis Data Streams
  • SNS, SQS
  • Attività ECS
  • API Gateway

Immagine con le icone dei servizi AWS per i target supportati.

Immagine con le icone dei servizi AWS per i target supportati.

Il seguente esempio mostra come definire una regola evento e collegarla a una funzione Lambda come target:

aws events put-rule \
  --name "ImageUploadRule" \
  --event-pattern file://event-pattern.json \
  --event-bus-name my-app-bus

aws events put-targets \
  --rule "ImageUploadRule" \
  --targets "Id"="1","Arn"="arn:aws:lambda:region:account-id:function:ImageProcessor"

Esempio di event pattern (event-pattern.json):

{
  "source": ["myapplication.upload"],
  "detail-type": ["Image Uploaded"]
}

Pipes

EventBridge Pipes semplifica la connessione tra sorgenti (come DynamoDB Streams) e target (come SQS o Lambda) senza bisogno di codice personalizzato.

L’immagine seguente mostra la sezione EventBridge Pipes nella Console AWS.

Immagine con uno screenshot della Console AWS che mostra la sezione EventBridge Pipes.

Immagine con uno screenshot della Console AWS che mostra la sezione EventBridge Pipes.

Funzionalità chiave di Pipes:

  • Filtraggio: usa event pattern per limitare quali eventi passano attraverso la pipe.
  • Arricchimento: aggiungi contesto invocando una funzione Lambda per arricchire l’evento prima della consegna.
  • Trasformazione: modifica la forma dell’evento usando input transformer.

Quando usare Pipes:

  • Collegare data stream (ad es., Kinesis o DynamoDB) a consumer a valle.
  • Integrare servizi AWS con formati di evento diversi.

Scheduler

EventBridge Scheduler abilita l’esecuzione di task basati sul tempo, perfetti per automatizzare operazioni come backup giornalieri, sincronizzazioni orarie dei dati o l’avvio di workflow a orario.

L’immagine seguente mostra la sezione EventBridge Scheduler nella Console AWS.

Immagine con uno screenshot della Console AWS che mostra la sezione EventBridge Scheduler.

Immagine con uno screenshot della Console AWS che mostra la sezione EventBridge Scheduler.

Le funzionalità principali includono:

  • Esecuzioni una tantum o ricorrenti
  • Supporto per espressioni cron o rate-based
  • Controllo su fusi orari, finestre di avvio/fine e logica di retry

Crea un evento pianificato:

aws scheduler create-schedule \
  --name "DailyETLJob" \
  --schedule-expression "rate(1 day)" \
  --flexible-time-window '{"Mode":"OFF"}' \
  --target '{"Arn":"arn:aws:lambda:region:account-id:function:RunETL", "RoleArn":"arn:aws:iam::account-id:role/SchedulerExecutionRole"}'

Questa pianificazione invoca la funzione Lambda RunETL ogni giorno.

Schema Registry e Event Replays

Schema Registry aiuta gli sviluppatori a comprendere e documentare la struttura degli eventi. 

Rileva automaticamente gli schemi dai servizi AWS e dalle applicazioni personalizzate e li archivia in un registro.

I vantaggi dello Schema Registry includono:

  • Generazione di binding di codice fortemente tipizzati in Java, Python e TypeScript.
  • Miglioramento della coerenza e riduzione degli errori di parsing nelle applicazioni event-driven.

Event Replays ti permette di archiviare gli eventi sul bus e riprodurli in seguito. 

Questo è prezioso per:

  • Debug di workflow falliti
  • Replay degli eventi dopo una correzione di bug
  • Recupero di elaborazioni dati perse o in ritardo

Immagine con un diagramma concettuale che illustra il routing degli eventi di EventBridge.

Immagine con un diagramma concettuale che illustra il routing degli eventi di EventBridge. Fonte: AWS Blogs

Abilita l’archiviazione degli eventi:

aws events create-archive \
  --archive-name "MyApplicationArchive" \
  --event-source-arn "arn:aws:events:region:account-id:event-bus/my-application-bus" \
  --retention-days 7

Riproduci gli eventi archiviati:

aws events start-replay \
  --replay-name "MyReplay" \
  --source-arn "arn:aws:events:region:account-id:archive/MyApplicationArchive" \
  --destination "arn:aws:events:region:account-id:event-bus/my-application-bus"

Questi componenti — event bus, regole, pipe, scheduler e schema registry — insieme formano una piattaforma completa e flessibile per creare e gestire architetture event-driven robuste su AWS. 

Ognuno svolge un ruolo unico nel disaccoppiare i servizi, migliorare la scalabilità e abilitare uno sviluppo applicativo più rapido.

Creare applicazioni event-driven con EventBridge

Messa da parte la configurazione di base, è il momento di applicare Amazon EventBridge in workflow applicativi reali. 

Configurare EventBridge nella tua applicazione

Ecco come emettere eventi personalizzati dalla tua applicazione usando l’AWS CLI:

aws events put-events --entries '[
  {
    "Source": "myapplication.media",
    "DetailType": "ImageUploaded",
    "Detail": "{\"bucket\": \"my-bucket-name\", \"key\": \"image.jpg\"}",
    "EventBusName": "default"
  }
]'

Spiegazione:

  • Source: il nome o il dominio del servizio emittente.
  • DetailType: il tipo di evento emesso.
  • Detail: il payload, codificato come JSON in stringa.
  • EventBusName: il bus che riceverà e instraderà l’evento.

Puoi integrare questa logica direttamente nelle tue funzioni Lambda, servizi backend o workload containerizzati usando gli SDK (ad es., Boto3, AWS SDK for JavaScript).

Instradare eventi tra servizi AWS

Instradare eventi tra servizi AWS abilita integrazioni fluide, come attivare funzioni Lambda da azioni S3 via EventBridge.

Scenario di esempio: collega Amazon S3 a una funzione Lambda tramite EventBridge.

Passo 01: crea un bucket S3 e carica un oggetto.

Passo 02: abilita le notifiche evento S3 via EventBridge:

  • Vai al bucket S3.
  • Abilita l’opzione "EventBridge" sotto Event Notifications.

Passo 03: crea una regola EventBridge per fare match con il pattern dell’evento:

{
  "source": ["aws.s3"],
  "detail-type": ["Object Created"],
  "detail": {
    "bucket": {
      "name": ["my-bucket"]
    }
  }
}

Passo 04: collega una funzione Lambda come target della regola per elaborare l’oggetto caricato.

Questo schema ti permette di estendere in seguito l’elaborazione aggiungendo altri target come Step Functions o SNS per le notifiche.

Esempio pratico: workflow di upload e resize di immagini

Vediamo una pipeline event-driven tipica:

01: l’utente carica un’immagine su S3.

02: S3 emette un evento al bus predefinito di EventBridge.

03: EventBridge fa match con una regola per s3:ObjectCreated:* e lo instrada a una funzione Lambda.

04: la Lambda ridimensiona l’immagine, la salva in un altro bucket S3 e registra l’output.

Questo schema è potente perché:

  • è scalabile (ovvero può elaborare migliaia di eventi al secondo);
  • è modulare (ovvero puoi sostituire la funzione di resize senza toccare gli altri componenti);
  • abilita il parallelismo (ovvero puoi inviare lo stesso evento a pipeline di analytics o notifiche in parallelo).

Aggiungere regole per scalabilità e flessibilità

Puoi effettuare facilmente il fan-out degli eventi collegando più target a una singola regola:

aws events put-targets --rule image-uploaded \
  --targets '[
    {"Id": "resizeLambda", "Arn": "arn:aws:lambda:region:account-id:function:ResizeImage"},
    {"Id": "notifySNS", "Arn": "arn:aws:sns:region:account-id:ImageUploadedTopic"}
]'

Questo permette alla tua applicazione di elaborare l’evento, inviare notifiche e aggiornare i log, tutto in parallelo, senza accoppiare tra loro questi compiti.

Ottimizzare le prestazioni e garantire la sicurezza

Ottimizza prestazioni e sicurezza progettando event pattern precisi che riducano l’elaborazione non necessaria e il rischio.

Progettare event pattern efficienti

Evita pattern generici o “catch-all” che attivano esecuzioni non necessarie. Invece, filtra gli eventi con precisione:

{
  "source": ["myapplication.service"],
  "detail-type": ["ImageUploaded"],
  "detail": {
    "bucket": ["media-uploads"]
  }
}

Questo riduce i costi, migliora la latenza e garantisce che vengano elaborati solo gli eventi rilevanti.

Implementare controlli di sicurezza robusti

La sicurezza è fondamentale in qualsiasi architettura serverless. Segui queste linee guida:

  • Usa il principio del minimo privilegio (IAM): concedi solo i permessi necessari per pubblicare o consumare eventi.
  • Abilita la crittografia: EventBridge supporta la crittografia a riposo tramite AWS KMS.
  • Implementa DLQ (Dead Letter Queue) per le consegne non riuscite:
"DeadLetterConfig": {
  "Arn": "arn:aws:sqs:region:account-id:my-dlq"
}

Le DLQ catturano gli eventi non recapitabili, permettendoti di diagnosticarli e rielaborarli in seguito.

> Se vuoi approfondire la sicurezza delle applicazioni cloud e la gestione dei permessi AWS, consulta il corso AWS Security and Cost Management.

Gestire costi e quote del servizio

Per gestire efficacemente costi e prestazioni, è importante comprendere il modello di prezzo di EventBridge e monitorare regolarmente le quote del servizio.

Comprendere la struttura dei prezzi

La fatturazione avviene per:

  • Evento pubblicato ($ per milione di eventi)
  • Evento riprodotto
  • Uso delle pipe
  • Job dello Scheduler

Il free tier include 100.000 eventi al mese, più che sufficiente per la maggior parte degli usi di sviluppo e piccole produzioni.

Monitorare e adeguare le quote del servizio

Tieni traccia e richiedi aumenti usando:

aws service-quotas list-service-quotas --service-code events

Quote chiave da monitorare:

  • Regole per event bus
  • Target per regola
  • Invocazioni al secondo

Scalare l’uso in modo responsabile garantisce che il sistema rimanga affidabile all’aumentare del carico.

Configurazioni avanzate di EventBridge e alternative

Per architetture event-driven più complesse, valuta funzionalità avanzate di EventBridge e pattern alternativi per migliorare controllo, sicurezza e flessibilità della pianificazione.

Distribuzione di eventi cross-account

Abilita la condivisione sicura di eventi tra account AWS:

{
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": "arn:aws:iam::123456789012:root"},
    "Action": "events:PutEvents",
    "Resource": "arn:aws:events:region:account-id:event-bus/shared-bus"
  }]
}

Usa AWS CloudTrail per fare audit dell’utilizzo e garantire la conformità.

Funzionalità avanzate dello scheduler di EventBridge

Vai oltre la pianificazione di base con:

  • Strategie di retry flessibili
  • Conformità a finestre temporali
  • Supporto per espressioni cron o rate()

Esempio di espressione cron:

Attiva un workflow alle 9:00 ogni lunedì:

--schedule-expression "cron(0 9 ? * MON *)"

Quando considerare alternative

A seconda dei requisiti, potresti considerare altri servizi AWS più adatti a casi d’uso specifici. 

Ecco alcuni esempi:

Caso d’uso

Alternativa

FIFO o ordering rigoroso

Amazon SQS FIFO

Alto throughput e bassa latenza

Amazon MSK (Kafka)

Orchestrazione complessa

Step Functions

Notifiche semplici

Amazon SNS

Conclusione

Amazon EventBridge è un blocco costruttivo fondamentale per le applicazioni moderne cloud-native: ti permette di creare sistemi scalabili e debolmente accoppiati, rispondere a eventi in tempo reale su piattaforme AWS e SaaS e integrare workflow con un overhead infrastrutturale minimo. 

Per avere successo con EventBridge, concentrati sul progettare domini modulari basati su eventi, applicare best practice di minimo privilegio e dead-letter queue e monitorare costantemente uso, quote e costi.

Se vuoi approfondire la tua esperienza su AWS, esplora il percorso del corso AWS Cloud Practitioner!

FAQs

In cosa EventBridge differisce da SNS e SQS?

EventBridge offre filtraggio basato su regole, supporto degli schemi e integrazioni con piattaforme SaaS, funzionalità non disponibili in SNS o SQS.

EventBridge è serverless?

Sì, EventBridge è un servizio completamente gestito e serverless che scala automaticamente in base al volume degli eventi.

Posso usare EventBridge per attivare funzioni Lambda?

Sì. EventBridge può instradare eventi a funzioni Lambda in base a regole e filtri personalizzati.

Cosa sono le EventBridge Pipes e quando dovrei usarle?

Le Pipes consentono integrazioni dirette point‑to‑point tra sorgenti e target, con supporto per filtraggio, trasformazione e arricchimento.

Come metto in sicurezza i miei workflow con EventBridge?

Usa policy IAM, crittografia e dead-letter queue per mettere in sicurezza e monitorare la tua architettura event-driven.

EventBridge supporta il routing di eventi cross-account?

Sì, EventBridge supporta il routing di eventi tra account tramite policy e permessi basati sulle risorse.

Cos’è l’EventBridge Scheduler?

Lo Scheduler è una funzionalità integrata per trigger basati sul tempo con logica di retry ed opzioni di pianificazione flessibili.

Come funziona la tariffazione di EventBridge?

EventBridge addebita in base al numero di eventi pubblicati, consegnati e riprodotti, con un generoso free tier.

Posso riprodurre eventi passati in EventBridge?

Sì, usando la funzionalità di replay degli eventi, quelli archiviati possono essere riprodotti per troubleshooting o rielaborazione.

Don Kaluarachchi

Autore

Don Kaluarachchi

Sono Don—Consulente, Developer, Ingegnere, Architetto Digitale e Scrittore (in pratica, indosso molti cappelli 👨‍💻🎩). Mi piace mantenere le piattaforme digitali stabili e trovare sempre nuovi modi per migliorarle. Quando non scrivo codice, scrivo di intelligenza artificiale, data science e tecnologia in generale.
 
Nel corso degli anni ho lavorato su tutto: dalla creazione e ottimizzazione di software al deployment di modelli di IA, fino alla progettazione di soluzioni cloud. Ho conseguito un Master of Science in Artificial Intelligence e un Bachelor of Science in Computer Science, entrambi alla Brunel University London.

Argomenti

Correlato