EventBridge: Event Bus og regler
Publicér hændelser til en brugerdefineret EventBridge-bus, skriv regler for hændelsesmønstre for at filtrere og dirigere hændelser til Lambda-, SQS- eller Step Functions-mål
EventBridge: Event Bus og regler er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad er Amazon EventBridge?
Amazon EventBridge (tidligere CloudWatch Events) er en serverløs hændelsesbus, der gør det nemt at forbinde applikationer ved hjælp af hændelser fra AWS-tjenester, dine egne applikationer og SaaS-udbydere. Hændelser er JSON-objekter; EventBridge dirigerer dem til et eller flere mål baseret på regler for hændelsesmønstre. I modsætning til SQS (punkt-til-punkt) er EventBridge et pub/sub-routinglag — én hændelse kan distribueres til mange mål samtidig.
Hændelsesbusser: standard, brugerdefinerede og partnerbusser
EventBridge har tre typer hændelsesbusser. Standardbussen modtager hændelser fra AWS-tjenester (ændringer i EC2-tilstand, S3-hændelser, API-kald via CloudTrail osv.). Brugerdefinerede busser er busser, du opretter til dine egne applikationshændelser — de adskiller dine applikationshændelser fra hændelser fra AWS-tjenester. Partnerbusser modtager hændelser direkte fra SaaS-udbydere (Zendesk, Datadog, GitHub, Shopify) gennem færdige integrationer uden behov for en Lambda, der udfø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 hændelsesmønstre
En regel for hændelsesmønstre definerer, hvilke hændelser der skal matches, ved hjælp af et JSON-mønster, som filtrerer efter en vilkårlig kombination af hændelsesfelter (source, detail-type, account, region eller felter i detail-objektet). EventBridge evaluerer hver hændelse i forhold til alle regler på bussen. Hændelser, der matcher, videresendes til de mål, der er konfigureret for reglen. Regler bruger ELLER på regelniveau og OG 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 ENABLEDKonfiguration af mål
EventBridge kan dirigere hændelser, der matcher, til over 20 måltyper, herunder Lambda-funktioner, SQS-køer, SNS-emner, Step Functions-tilstandsmaskiner, Kinesis Data Streams, API Gateway-slutpunkter, ECS-opgaver og endda en anden EventBridge-bus (til routing på tværs af konti). Hver regel kan have op til 5 mål. EventBridge kalder mål asynkront og forsøger igen med eksponentiel backoff ved fejl.
# 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"
}]'Transformation af input
Som standard sender EventBridge hele hændelsens JSON til målet. Brug Input Transformation til at omforme hændelsen før levering — udtræk bestemte felter, opret et nyt JSON-objekt, eller opret en brugerdefineret streng. Det er nyttigt, når en Lambda-funktion eller et API-slutpunkt forventer en bestemt struktur for payloaden i stedet for hele EventBridge-hændelsesindpakningen, så du undgår behovet for en gennemløbs-Lambda, der kun 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å udløses efter en tidsplan i stedet for at matche en hændelse. Brug et rate-udtryk (f.eks. rate(5 minutes)) til udløsere med faste intervaller eller et cron-udtryk til kalenderbaseret planlægning. Planlagte regler er ideelle til at udløse Lambda-funktioner til oprydningsopgaver i batches, sende periodiske rapporter eller køre natlige DMS-opgaver — og erstatter dermed behovet for cron-opgaver baseret 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 afspilning af hændelser
EventBridge kan arkivere alle hændelser (eller et filtreret udvalg) fra en bus til et hændelsesarkiv og beholde dem i en konfigurerbar periode. Derefter kan du til enhver tid afspille arkiverede hændelser tilbage til bussen — det er nyttigt til at afspille hændelser for at teste en ny Lambda-version, gendanne efter en fejl, hvor et mål gik glip af hændelser, eller udfylde en ny tjeneste med historiske hændelser. Det er et effektivt driftsmæssigt sikkerhedsnet, som er særligt 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"}'Routing på tværs af konti og regioner
EventBridge understøtter routing af hændelser på tværs af konti ved at oprette en ressourcebaseret politik på mål-bussen i en anden konto, som giver kildekontoen tilladelse til at indsætte hændelser. Det gør det muligt for en central overvågningskonto at modtage hændelser fra alle workload-konti eller at bruge en arkitektur med en delt servicebus, hvor et platformteam dirigerer hændelser til forbrugerteamets busser. Routing på tværs af regioner fungerer på tilsvarende vis med eksplicitte mål for hændelsesbusser på tværs af 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 opretter punkt-til-punkt-integrationer mellem en kilde (SQS, Kinesis, DynamoDB Streams, Kafka) og et mål med valgfri filtrering og berigelse imellem (via Lambda, Step Functions eller API Gateway). Pipes er enklere end at skrive en Lambda-forbruger, der udfører polling — de håndterer automatisk polling, batching, filtrering og routing. Brug Pipes, når du har brug for en direkte forbindelse fra kilde til mål uden en komplet pub/sub-bus.
# 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 tjenester overlapper hinanden, men bruges til forskellige formål. SNS: push-baseret distribution til abonnenter (e-mail, HTTP, SQS, Lambda) — simpel pub/sub uden filtrering. SQS: holdbar meddelelseskø til punkt-til-punkt-afkobling, hvor forbrugeren selv henter meddelelser. EventBridge: indholdsbaseret routingbus med skemaregister, arkivering og afspilning, SaaS-partnere samt levering på tværs af konti — bedst til kompleks routing af hændelser på tværs af mange tjenester. Brug EventBridge, når du har brug for avancerede routingregler og ikke kun simpel distribution.
EventBridge Schema Registry
EventBridge Schema Registry registrerer og katalogiserer automatisk strukturen af de hændelser, der strømmer gennem dine hændelsesbusser. Det gemmer skemaer i OpenAPI 3.0-format, så udviklere kan finde tilgængelige hændelser og generere kodebindinger (Java, Python, TypeScript), der deserialiserer hændelser til objekter med typer. Det eliminerer manuel kode til JSON-parsing og sikrer typesikkerhed på tværs af hændelsesdrevne tjenester. Du kan også registrere brugerdefinerede hændelsesskemaer manuelt for hændelser, som dine egne applikationer producerer.
# 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-schemasHurtigt tjek
Test din forståelse af AWS Solutions Architect-koncepterne (SAA-C03) fra denne lektion.
Opsummering af lektionen
I denne lektion har du lært, at EventBridge dirigerer hændelser ved hjælp af indholdsbaserede mønsterregler til flere mål samtidig, at arkivering og afspilning gør det muligt at beholde og behandle historiske hændelser igen uden kodeændringer, og at EventBridge Pipes leverer administrerede pipelines fra streamingkilder til mål. Nu ser vi nærmere på Step Functions til orkestrering af serverløse arbejdsgange i flere trin.
Lær AWS Solutions Architect med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “EventBridge: Event Bus og regler” gratis?
Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “EventBridge: Event Bus og regler”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “EventBridge: Event Bus og regler”?
Publicér hændelser til en brugerdefineret EventBridge-bus, skriv regler for hændelsesmønstre for at filtrere og dirigere hændelser til Lambda-, SQS- eller Step Functions-mål Du øver dig i AWS Solutions Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på AWS Solutions Architect?
Der kræves ingen tidligere erfaring. AWS Solutions Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “EventBridge: Event Bus og regler”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne AWS Solutions Architect-lektion?
Ja. Alle AWS Solutions Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- EventBridge: Event Bus og regler
- Step Functions: Orkestrering af serverløse arbejdsgange
- Kinesis Data Streams til hændelsesbehandling i realtid
- Mønstre for choreography kontra orchestration