EventBridge: Hendelsesbuss og regler
Publiser hendelser til en egendefinert EventBridge-buss, skriv regler for hendelsesmønstre for å filtrere og rute hendelser til Lambda-, SQS- eller Step Functions-mål
EventBridge: Hendelsesbuss og regler er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.
Hva er Amazon EventBridge?
Amazon EventBridge (tidligere CloudWatch Events) er en serverless eventbuss som gjør det enkelt å koble sammen applikasjoner ved hjelp av hendelser fra AWS-tjenester, egne applikasjoner og SaaS-leverandører. Hendelser er JSON-objekter, og EventBridge ruter dem til ett eller flere mål basert på regler for hendelsesmønstre. I motsetning til SQS (punkt-til-punkt) er EventBridge et pub/sub-rutingslag — én hendelse kan distribueres til mange mål samtidig.
Hendelsesbusser: standard, egendefinerte og partnerbaserte
EventBridge har tre typer hendelsesbusser. Standardbussen mottar hendelser fra AWS-tjenester (statusendringer i EC2, S3-hendelser, CloudTrail API-kall osv.). Egendefinerte busser er busser De oppretter for hendelser fra egne applikasjoner — de skiller applikasjonshendelsene fra hendelser fra AWS-tjenester. Partnerbusser mottar hendelser direkte fra SaaS-leverandører (Zendesk, Datadog, GitHub, Shopify) gjennom ferdigbygde integrasjoner, uten behov for en Lambda som utfører 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"
}]'Regler for hendelsesmønstre
En regel for hendelsesmønstre definerer hvilke hendelser som skal samsvare, ved hjelp av et JSON-mønster som filtrerer på en hvilken som helst kombinasjon av hendelsesfelt (source, detail-type, account, region eller felt inne i detail-objektet). EventBridge evaluerer hver hendelse mot alle reglene på bussen. Hendelser som samsvarer, videresendes til målene som er konfigurert for regelen. Regler bruker OR på regelenivå og AND i et mønsterobjekt.
# 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 ENABLEDKonfigurere mål
EventBridge kan rute hendelser som samsvarer, til mer enn 20 måltyper, blant annet Lambda-funksjoner, SQS-køer, SNS-emner, tilstandsmaskiner i Step Functions, Kinesis Data Streams, API Gateway-endepunkter, ECS-oppgaver og til og med en annen EventBridge-buss (for ruting på tvers av kontoer). Hver regel kan ha opptil 5 mål. EventBridge påkaller mål asynkront og prøver på nytt med eksponentiell backoff ved feil.
# 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"
}]'Transformasjon av inndata
Som standard sender EventBridge hele JSON-hendelsen videre til målet. Bruk Input Transformation for å omforme hendelsen før levering — trekk ut bestemte felt, bygg et nytt JSON-objekt eller opprett en egendefinert streng. Dette er nyttig når en Lambda-funksjon eller et API-endepunkt forventer en bestemt nyttelaststruktur i stedet for hele EventBridge-hendelseskonvolutten, slik at De unngår behovet for en pass-through-Lambda som bare skal omforme data.
# 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"
}'
}Planlagte regler (Cron/Rate)
EventBridge-regler kan også utløses etter en plan i stedet for ved å samsvare med en hendelse. Bruk et rate-uttrykk (f.eks. rate(5 minutes)) for utløsere med faste intervaller, eller et cron-uttrykk for kalenderbasert planlegging. Planlagte regler egner seg godt til å utløse Lambda-funksjoner for batchjobber som rydder opp, sende periodiske rapporter eller kjøre nattlige DMS-oppgaver — og erstatter behovet for cron-jobber basert på 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"
}]'Arkivering og avspilling av hendelser
EventBridge kan arkivere alle hendelser (eller et filtrert utvalg) fra en buss i et hendelsesarkiv og beholde dem i en konfigurerbar periode. De kan deretter spille av arkiverte hendelser til bussen når som helst — dette er nyttig for å spille av hendelser for å teste en ny Lambda-versjon, gjenopprette etter en feil der et mål gikk glipp av hendelser, eller fylle en ny tjeneste med historiske hendelser. Dette er et kraftig operasjonelt sikkerhetsnett som er unikt for EventBridge sammenlignet med andre pub/sub-systemer.
# 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"}'Ruting på tvers av kontoer og regioner
EventBridge støtter ruting av hendelser på tvers av kontoer ved å opprette en ressursbasert policy på målbussen i en annen konto, som tillater kildekontoen å legge inn hendelser. Dette gjør det mulig for en sentralisert overvåkingskonto å motta hendelser fra alle arbeidsbelastningskontoer, eller å bruke en arkitektur med en delt tjenestebuss der et plattformteam ruter hendelser til forbrukerteamenes busser. Ruting på tvers av regioner fungerer på tilsvarende måte, med eksplisitte mål for hendelsesbusser på tvers av regioner.
# 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 oppretter punkt-til-punkt-integrasjoner mellom en kilde (SQS, Kinesis, DynamoDB Streams, Kafka) og et mål, med valgfri filtrering og berikelse imellom (via Lambda, Step Functions eller API Gateway). Pipes er enklere enn å skrive en forbruker-Lambda som utfører polling — de håndterer polling, batching, filtrering og ruting automatisk. Bruk Pipes når De trenger en direkte forbindelse fra kilde til mål uten en fullverdig pub/sub-buss.
# 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 sammenlignet med SNS og SQS
Disse tre tjenestene overlapper, men dekker ulike bruksområder. SNS: push-basert distribusjon til abonnenter (e-post, HTTP, SQS, Lambda) — enkel pub/sub uten filtrering. SQS: en robust meldingskø for frakobling punkt-til-punkt, med semantikk der forbrukeren henter meldingene. EventBridge: en innholdsbasert rutingsbuss med skjemaregister, arkivering og avspilling, SaaS-partnere og levering på tvers av kontoer — best egnet for kompleks hendelsesruting på tvers av mange tjenester. Bruk EventBridge når De trenger avanserte rutingsregler, ikke bare enkel distribusjon.
EventBridge Schema Registry
EventBridge Schema Registry oppdager og katalogiserer automatisk strukturen til hendelser som går gjennom hendelsesbussene. Tjenesten lagrer skjemaer i OpenAPI 3.0-format, slik at utviklere kan finne ut hvilke hendelser som er tilgjengelige, og generere kodebindinger (Java, Python, TypeScript) som deserialiserer hendelser til typede objekter. Dette fjerner behovet for manuell JSON-parsingskode og sikrer typesikkerhet på tvers av hendelsesdrevne tjenester. De kan også registrere egendefinerte hendelsesskjemaer manuelt for hendelser som produseres av egne applikasjoner.
# 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-schemasKort test
Test forståelsen Deres av konseptene i AWS Solutions Architect (SAA-C03) fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen har De lært at EventBridge ruter hendelser ved hjelp av innholdsbaserte mønsterregler til flere mål samtidig, at arkivering og avspilling gjør det mulig å beholde og behandle historiske hendelser på nytt uten kodeendringer, og at EventBridge Pipes tilbyr administrerte kilde-til-mål-pipelines fra strømmekilder. Neste tema er Step Functions for orkestrering av serverless-arbeidsflyter med flere trinn.
Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 150
- Leksjoner
- 600
Ofte stilte spørsmål
Er leksjonen «EventBridge: Hendelsesbuss og regler» gratis?
Ja – hele teksten i «EventBridge: Hendelsesbuss og regler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.
Hva lærer jeg i «EventBridge: Hendelsesbuss og regler»?
Publiser hendelser til en egendefinert EventBridge-buss, skriv regler for hendelsesmønstre for å filtrere og rute hendelser til Lambda-, SQS- eller Step Functions-mål Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?
Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «EventBridge: Hendelsesbuss og regler»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?
Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- EventBridge: Hendelsesbuss og regler
- Step Functions: Orkestrering av serverløse arbeidsflyter
- Kinesis Data Streams for sanntidsbehandling av hendelser
- Mønstre for koreografi kontra orkestrering