EventBridge: bus degli eventi e regole
Pubblicare eventi su un bus EventBridge personalizzato, scrivere regole basate su pattern per filtrare e instradare gli eventi verso destinazioni Lambda, SQS o Step Functions
EventBridge: bus degli eventi e regole è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Che cos'è Amazon EventBridge?
Amazon EventBridge (in precedenza CloudWatch Events) è un event bus serverless che semplifica il collegamento tra applicazioni tramite eventi provenienti dai servizi AWS, dalle applicazioni personali e dai provider SaaS. Gli eventi sono oggetti JSON; EventBridge li instrada verso una o più destinazioni in base alle regole dei pattern degli eventi. A differenza di SQS (point-to-point), EventBridge è un livello di routing pub/sub: un singolo evento può essere distribuito contemporaneamente a molte destinazioni.
Event bus: predefiniti, personalizzati e dei partner
EventBridge dispone di tre tipi di event bus. Il bus predefinito riceve eventi dai servizi AWS (cambiamenti di stato di EC2, eventi S3, chiamate API di CloudTrail e così via). I bus personalizzati sono bus creati per gli eventi delle proprie applicazioni e consentono di separare questi eventi da quelli dei servizi AWS. I bus dei partner ricevono eventi direttamente dai provider SaaS (Zendesk, Datadog, GitHub, Shopify) tramite integrazioni predefinite, senza dover ricorrere a una Lambda di polling.
# Create a custom event bus for your application
aws events create-event-bus --name my-app-bus
# Put a custom event onto the bus
aws events put-events --entries '[{
"Source": "com.myapp.orders",
"DetailType": "OrderPlaced",
"Detail": "{\"orderId\": \"ORD-123\", \"total\": 99.99}",
"EventBusName": "my-app-bus"
}]'Regole dei pattern degli eventi
Una regola del pattern di un evento definisce quali eventi intercettare usando un pattern JSON che filtra qualsiasi combinazione di campi dell'evento (source, detail-type, account, region o campi all'interno dell'oggetto detail). EventBridge valuta ogni evento rispetto a tutte le regole del bus. Gli eventi corrispondenti vengono inoltrati alle destinazioni configurate per la regola. Le regole usano l'operatore OR a livello di regola e AND all'interno di un oggetto pattern.
# Create a rule that matches EC2 instance state changes to 'stopped'
aws events put-rule \
--name ec2-stopped-alert \
--event-bus-name default \
--event-pattern '{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["stopped"]
}
}' \
--state ENABLEDConfigurazione delle destinazioni
EventBridge può instradare gli eventi corrispondenti verso oltre 20 tipi di destinazione, tra cui funzioni Lambda, code SQS, topic SNS, macchine a stati Step Functions, flussi di dati Kinesis, endpoint API Gateway, task ECS e persino un altro bus EventBridge (per il routing tra account). Ogni regola può avere fino a 5 destinazioni. EventBridge richiama le destinazioni in modo asincrono e, in caso di errore, riprova con un backoff esponenziale.
# Add an SNS topic and Lambda function as targets for the rule
aws events put-targets \
--rule ec2-stopped-alert \
--event-bus-name default \
--targets '[{
"Id": "notify-ops",
"Arn": "arn:aws:sns:us-east-1:123456789012:ops-alerts"
}, {
"Id": "auto-remediate",
"Arn": "arn:aws:lambda:us-east-1:123456789012:function:RestartEC2"
}]'Trasformazione dell'input
Per impostazione predefinita, EventBridge passa alla destinazione l'intero JSON dell'evento. Usi Input Transformation per modificare la struttura dell'evento prima della consegna: estrarre campi specifici, costruire un nuovo oggetto JSON o creare una stringa personalizzata. È utile quando una funzione Lambda o un endpoint API richiede un payload con una struttura specifica anziché l'intero involucro dell'evento EventBridge, evitando di dover usare una Lambda di passaggio solo per modificare la struttura dei dati.
# Input transformer: extract orderId and total from detail
# InputPathsMap extracts values by JSON path
{
'InputPathsMap': {
'orderId': '$.detail.orderId',
'total': '$.detail.total'
},
'InputTemplate': '{
"message": "New order <orderId> for $<total>",
"channel": "ops"
}'
}Regole pianificate (Cron/Rate)
Le regole EventBridge possono anche attivarsi in base a una pianificazione anziché corrispondere a un evento. Usi un'espressione rate (ad esempio rate(5 minutes)) per i trigger a intervalli fissi oppure un'espressione cron per la pianificazione basata sul calendario. Le regole pianificate sono ideali per attivare funzioni Lambda che eseguono attività di pulizia batch, inviano report periodici o eseguono attività DMS notturne, eliminando la necessità di job cron basati su EC2.
# Create a scheduled rule that fires every day at midnight UTC
aws events put-rule \
--name nightly-cleanup \
--schedule-expression 'cron(0 0 * * ? *)' \
--state ENABLED
aws events put-targets \
--rule nightly-cleanup \
--targets '[{
"Id": "cleanup-lambda",
"Arn": "arn:aws:lambda:us-east-1:123456789012:function:NightlyCleanup"
}]'Archiviazione e riproduzione degli eventi
EventBridge può archiviare tutti gli eventi (o un sottoinsieme filtrato) di un bus in un archivio eventi, conservandoli per un periodo configurabile. È quindi possibile riprodurre gli eventi archiviati nuovamente nel bus in qualsiasi momento: è utile per riprodurre gli eventi e testare una nuova versione Lambda, recuperare da un bug che ha impedito a una destinazione di ricevere alcuni eventi o inizializzare un nuovo servizio con eventi storici. Si tratta di una potente rete di sicurezza operativa, caratteristica esclusiva di EventBridge rispetto agli altri sistemi pub/sub.
# Create an event archive for the custom bus
aws events create-archive \
--archive-name my-app-archive \
--event-source-arn arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus \
--retention-days 30
# Replay archived events from a specific time window
aws events start-replay \
--replay-name replay-missed-orders \
--event-source-arn arn:aws:events:us-east-1:123456789012:archive/my-app-archive \
--event-start-time 2024-01-10T00:00:00Z \
--event-end-time 2024-01-10T06:00:00Z \
--destination '{"Arn": "arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus"}'Routing tra account e tra regioni
EventBridge supporta il routing degli eventi tra account mediante la creazione di una policy basata sulle risorse sul bus di destinazione in un altro account, che autorizza l'account di origine a inserire gli eventi. Ciò consente a un account di monitoraggio centralizzato di ricevere eventi da tutti gli account dei carichi di lavoro oppure di adottare un'architettura con un bus di servizio condiviso, in cui un team della piattaforma instrada gli eventi verso i bus dei team consumer. Il routing tra regioni funziona in modo analogo, usando destinazioni del bus eventi tra regioni configurate esplicitamente.
# Allow a source account (111111111111) to send events to this bus
aws events put-permission \
--event-bus-name my-central-bus \
--action events:PutEvents \
--principal 111111111111 \
--statement-id allow-source-accountEventBridge Pipes
EventBridge Pipes crea integrazioni point-to-point tra una sorgente (SQS, Kinesis, DynamoDB Streams, Kafka) e una destinazione, con filtraggio e arricchimento facoltativi tra le due (tramite Lambda, Step Functions o API Gateway). Pipes è più semplice rispetto alla scrittura di un consumer Lambda di polling: gestisce automaticamente polling, suddivisione in batch, filtraggio e routing. Usi Pipes quando è necessaria una connessione diretta tra sorgente e destinazione senza un bus pub/sub completo.
# Create an EventBridge Pipe from SQS to Lambda
aws pipes create-pipe \
--name sqs-to-processor \
--source arn:aws:sqs:us-east-1:123456789012:incoming-orders \
--target arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder \
--role-arn arn:aws:iam::123456789012:role/PipeRole \
--source-parameters '{
"SqsQueueParameters": {"BatchSize": 10}
}' \
--filter-criteria '{
"Filters": [{"Pattern": "{\"body\": {\"orderType\": [\"PRIORITY\"]}}"}]
}'EventBridge a confronto con SNS e SQS
Questi tre servizi presentano alcune sovrapposizioni, ma rispondono a casi d'uso diversi. SNS: distribuzione push a ventaglio verso i sottoscrittori (email, HTTP, SQS, Lambda), con un modello pub/sub semplice e senza filtraggio. SQS: coda di messaggi durevole per il disaccoppiamento point-to-point, con semantica di consumo pull. EventBridge: bus di routing basato sul contenuto, con registro degli schemi, archiviazione/riproduzione, partner SaaS e distribuzione tra account; è ideale per il routing complesso degli eventi tra molti servizi. Usi EventBridge quando sono necessarie regole di routing avanzate, non solo una semplice distribuzione a ventaglio.
Registro degli schemi di EventBridge
EventBridge Schema Registry rileva e cataloga automaticamente la struttura degli eventi che attraversano i bus degli eventi. Archivia gli schemi in formato OpenAPI 3.0, consentendo agli sviluppatori di scoprire quali eventi sono disponibili e di generare binding di codice (Java, Python, TypeScript) che deserializzano gli eventi in oggetti tipizzati. In questo modo si elimina il codice manuale per l'analisi JSON e si garantisce la sicurezza dei tipi tra i servizi basati sugli eventi. È anche possibile registrare manualmente schemi di eventi personalizzati per gli eventi prodotti dalle proprie applicazioni.
# Enable schema discovery on a custom event bus
aws schemas create-discoverer \
--source-arn arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus \
--description 'Auto-discover schemas from app bus'
# List discovered schemas
aws schemas list-schemas \
--registry-name discovered-schemasVerifica rapida
Verifichi la Sua comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: EventBridge instrada gli eventi usando regole dei pattern basate sul contenuto verso più destinazioni contemporaneamente, l'archiviazione e la riproduzione consentono di conservare e rielaborare gli eventi storici senza modifiche al codice e EventBridge Pipes fornisce pipeline gestite dalla sorgente alla destinazione per le sorgenti di streaming. Nella prossima lezione esploreremo Step Functions per orchestrare workflow serverless composti da più passaggi.
Domande Frequenti
La lezione «EventBridge: bus degli eventi e regole» è gratuita?
Sì — il testo completo di «EventBridge: bus degli eventi e regole» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «EventBridge: bus degli eventi e regole»?
Pubblicare eventi su un bus EventBridge personalizzato, scrivere regole basate su pattern per filtrare e instradare gli eventi verso destinazioni Lambda, SQS o Step Functions Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «EventBridge: bus degli eventi e regole»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- EventBridge: bus degli eventi e regole
- Step Functions: orchestrazione dei flussi di lavoro serverless
- Kinesis Data Streams per l'elaborazione degli eventi in tempo reale
- Pattern di choreography e orchestration