0Pricing
AWS Solutions Architect · Lekcja

EventBridge: magistrala zdarzeń i reguły

Publikować zdarzenia w niestandardowej magistrali EventBridge, pisać reguły wzorców zdarzeń filtrujące i kierujące zdarzenia do celów Lambda, SQS lub Step Functions.

EventBridge: magistrala zdarzeń i reguły to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Czym jest Amazon EventBridge?

Amazon EventBridge (wcześniej CloudWatch Events) to bezserwerowa magistrala zdarzeń, która ułatwia łączenie aplikacji za pomocą zdarzeń pochodzących z usług AWS, własnych aplikacji i dostawców SaaS. Zdarzenia są obiektami JSON, a EventBridge kieruje je do co najmniej jednego celu na podstawie reguł wzorców zdarzeń. W przeciwieństwie do SQS (model punkt-punkt) EventBridge jest warstwą routingu pub/sub — jedno zdarzenie może być jednocześnie rozesłane do wielu celów.

Magistrale zdarzeń: domyślna, niestandardowa i partnerska

EventBridge udostępnia trzy typy magistral zdarzeń. Magistrala domyślna odbiera zdarzenia z usług AWS (zmiany stanu EC2, zdarzenia S3, wywołania API CloudTrail itd.). Magistrale niestandardowe tworzy Pan/Pani na potrzeby zdarzeń własnej aplikacji — oddzielają one zdarzenia aplikacji od zdarzeń usług AWS. Magistrale partnerskie odbierają zdarzenia bezpośrednio od dostawców SaaS (Zendesk, Datadog, GitHub, Shopify) za pośrednictwem gotowych integracji, bez potrzeby używania funkcji Lambda odpytującej źródło.

# 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"
}]'

Reguły wzorców zdarzeń

Reguła wzorca zdarzenia określa, które zdarzenia mają zostać dopasowane, za pomocą wzorca JSON filtrującego dowolną kombinację pól zdarzenia (source, detail-type, account, region lub pól wewnątrz obiektu detail). EventBridge ocenia każde zdarzenie względem wszystkich reguł na magistrali. Dopasowane zdarzenia są przekazywane do celów skonfigurowanych dla reguły. Reguły działają na zasadzie OR na poziomie reguł, a na zasadzie AND wewnątrz obiektu wzorca.

# 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 ENABLED

Konfigurowanie celów

EventBridge może kierować dopasowane zdarzenia do ponad 20 typów celów, w tym do funkcji Lambda, kolejek SQS, tematów SNS, maszyn stanów Step Functions, strumieni danych Kinesis, punktów końcowych API Gateway, zadań ECS, a nawet do innej magistrali EventBridge (w przypadku routingu między kontami). Każda reguła może mieć maksymalnie 5 celów. EventBridge wywołuje cele asynchronicznie i w przypadku błędu ponawia próbę z wykładniczym zwiększaniem odstępów.

# 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"
  }]'

Transformacja danych wejściowych

Domyślnie EventBridge przekazuje do celu cały kod JSON zdarzenia. Należy użyć funkcji Input Transformation, aby zmienić strukturę zdarzenia przed jego dostarczeniem — wyodrębnić konkretne pola, utworzyć nowy obiekt JSON lub wygenerować niestandardowy ciąg znaków. Jest to przydatne, gdy funkcja Lambda lub punkt końcowy API oczekuje określonego formatu danych zamiast pełnej koperty zdarzenia EventBridge. Eliminuje to potrzebę używania funkcji Lambda przekazującej dane wyłącznie w celu zmiany ich struktury.

# 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"
  }'
}

Reguły harmonogramu (Cron/Rate)

Reguły EventBridge mogą również uruchamiać się zgodnie z harmonogramem, zamiast dopasowywać zdarzenia. Wyrażenia rate (np. rate(5 minutes)) służą do wyzwalania działań w stałych odstępach, natomiast wyrażenia cron — do harmonogramów opartych na kalendarzu. Reguły harmonogramu doskonale nadają się do uruchamiania funkcji Lambda wykonujących zadania czyszczenia wsadowego, wysyłających cykliczne raporty lub uruchamiających nocne zadania DMS — eliminują potrzebę korzystania z zadań cron opartych na 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"
  }]'

Archiwizowanie i ponowne odtwarzanie zdarzeń

EventBridge może archiwizować wszystkie zdarzenia z magistrali (lub ich odfiltrowany podzbiór) w archiwum zdarzeń, przechowując je przez konfigurowalny okres. Następnie można w dowolnym momencie ponownie odtworzyć zarchiwizowane zdarzenia na magistrali — jest to przydatne do odtwarzania zdarzeń w celu przetestowania nowej wersji funkcji Lambda, odzyskania danych po błędzie, w wyniku którego cel nie otrzymał zdarzeń, lub uzupełnienia nowej usługi o dane historyczne. Jest to skuteczny mechanizm bezpieczeństwa operacyjnego, wyróżniający EventBridge na tle innych systemów 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 między kontami i regionami

EventBridge obsługuje routing zdarzeń między kontami poprzez utworzenie zasad opartych na zasobach na magistrali docelowej w innym koncie. Zasada ta zezwala kontu źródłowemu na umieszczanie zdarzeń. Umożliwia to na przykład centralnemu kontu monitorowania odbieranie zdarzeń ze wszystkich kont obciążeń albo utworzenie współdzielonej architektury z magistralą usług, w której zespół platformowy kieruje zdarzenia do magistral zespołów konsumenckich. Routing między regionami działa podobnie, z użyciem jawnie skonfigurowanych celów magistrali zdarzeń w innych regionach.

# 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-account

EventBridge Pipes

EventBridge Pipes tworzy integracje punkt-punkt między źródłem (SQS, Kinesis, DynamoDB Streams, Kafka) a celem, z opcjonalnym filtrowaniem i wzbogacaniem danych pomiędzy nimi (za pomocą Lambda, Step Functions lub API Gateway). Pipes są prostsze niż napisanie konsumenta Lambda odpytującego źródło — automatycznie obsługują odpytywanie, grupowanie, filtrowanie i routing. Pipes należy użyć, gdy potrzebne jest bezpośrednie połączenie źródło–cel bez pełnej magistrali pub/sub.

# 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 SNS i SQS

Te trzy usługi częściowo się pokrywają, ale służą różnym zastosowaniom. SNS: rozsyłanie typu push do subskrybentów (e-mail, HTTP, SQS, Lambda) — prosty pub/sub bez filtrowania. SQS: trwała kolejka komunikatów zapewniająca rozdzielenie punkt-punkt i semantykę pobierania przez konsumenta. EventBridge: magistrala routingu opartego na treści, z rejestrem schematów, archiwizowaniem i odtwarzaniem, partnerami SaaS oraz dostarczaniem między kontami — najlepsza do złożonego routingu zdarzeń między wieloma usługami. EventBridge należy wybrać wtedy, gdy potrzebne są zaawansowane reguły routingu, a nie tylko proste rozsyłanie.

Rejestr schematów EventBridge

EventBridge Schema Registry automatycznie wykrywa i kataloguje strukturę zdarzeń przepływających przez magistrale zdarzeń. Przechowuje schematy w formacie OpenAPI 3.0, dzięki czemu programiści mogą sprawdzać, jakie zdarzenia są dostępne, oraz generować powiązania kodu (Java, Python, TypeScript), które deserializują zdarzenia do obiektów typowanych. Eliminuje to konieczność ręcznego pisania kodu do parsowania JSON i zapewnia bezpieczeństwo typów w usługach opartych na zdarzeniach. Można również ręcznie rejestrować niestandardowe schematy zdarzeń tworzonych przez własne aplikacje.

# 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-schemas

Szybki test

Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczył się Pan/nauczyła się Pani, że: EventBridge kieruje zdarzenia do wielu celów jednocześnie za pomocą reguł wzorców opartych na treści, archiwizowanie i odtwarzanie pozwala przechowywać oraz ponownie przetwarzać zdarzenia historyczne bez zmian w kodzie, a EventBridge Pipes zapewnia zarządzane potoki źródło–cel ze źródeł strumieniowych. W następnej części omówimy Step Functions, służące do orkiestracji wieloetapowych przepływów pracy bez serwerów.

Często zadawane pytania

Czy lekcja „EventBridge: magistrala zdarzeń i reguły” jest bezpłatna?

Tak — pełny tekst „EventBridge: magistrala zdarzeń i reguły” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Co nauczysz się w „EventBridge: magistrala zdarzeń i reguły”?

Publikować zdarzenia w niestandardowej magistrali EventBridge, pisać reguły wzorców zdarzeń filtrujące i kierujące zdarzenia do celów Lambda, SQS lub Step Functions. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?

Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „EventBridge: magistrala zdarzeń i reguły”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?

Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. EventBridge: magistrala zdarzeń i reguły
  2. Step Functions: orkiestracja bezserwerowych przepływów pracy
  3. Kinesis Data Streams do przetwarzania zdarzeń w czasie rzeczywistym
  4. Wzorce choreografii a orkiestracji
← Powrót do AWS Solutions Architect