EventBridge: Bus Peristiwa dan Aturan
Publikasikan peristiwa ke bus EventBridge khusus, tulis aturan pola peristiwa untuk memfilter dan merutekan peristiwa ke target Lambda, SQS, atau Step Functions.
EventBridge: Bus Peristiwa dan Aturan adalah pelajaran AWS Solutions Architect gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AWS Solutions Architect, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Apa Itu Amazon EventBridge?
Amazon EventBridge (sebelumnya CloudWatch Events) adalah bus peristiwa nirserver yang memudahkan Anda menghubungkan aplikasi menggunakan peristiwa dari layanan AWS, aplikasi Anda sendiri, dan penyedia SaaS. Peristiwa berupa objek JSON; EventBridge merutekannya ke satu atau beberapa target berdasarkan aturan pola peristiwa. Tidak seperti SQS (point-to-point), EventBridge adalah lapisan perutean pub/sub — satu peristiwa dapat diteruskan secara serentak ke banyak target.
Bus Peristiwa: Default, Kustom, dan Mitra
EventBridge memiliki tiga jenis bus peristiwa. Bus Default menerima peristiwa dari layanan AWS (perubahan status EC2, peristiwa S3, panggilan API CloudTrail, dan sebagainya). Bus kustom adalah bus yang Anda buat untuk peristiwa aplikasi Anda sendiri — bus ini memisahkan peristiwa aplikasi Anda dari peristiwa layanan AWS. Bus mitra menerima peristiwa secara langsung dari penyedia SaaS (Zendesk, Datadog, GitHub, Shopify) melalui integrasi siap pakai, tanpa memerlukan Lambda untuk melakukan 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"
}]'Aturan Pola Peristiwa
Aturan pola peristiwa menentukan peristiwa yang akan dicocokkan menggunakan pola JSON yang memfilter kombinasi bidang peristiwa apa pun (sumber, jenis detail, account, region, atau bidang di dalam objek detail). EventBridge mengevaluasi setiap peristiwa terhadap semua aturan pada bus. Peristiwa yang cocok diteruskan ke target yang dikonfigurasi untuk aturan tersebut. Aturan bersifat OR pada tingkat aturan dan AND di dalam objek pola.
# 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 ENABLEDMengonfigurasi Target
EventBridge dapat merutekan peristiwa yang cocok ke lebih dari 20 jenis target, termasuk fungsi Lambda, antrean SQS, topik SNS, mesin status Step Functions, aliran data Kinesis, titik akhir API Gateway, tugas ECS, dan bahkan bus EventBridge lainnya (untuk perutean lintas akun). Setiap aturan dapat memiliki hingga 5 target. EventBridge memanggil target secara asinkron dan mencoba kembali dengan jeda eksponensial jika terjadi kegagalan.
# 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"
}]'Transformasi Input
Secara default, EventBridge meneruskan seluruh JSON peristiwa ke target. Gunakan Transformasi Input untuk mengubah bentuk peristiwa sebelum dikirim — mengekstrak bidang tertentu, menyusun objek JSON baru, atau membuat string kustom. Fitur ini berguna ketika fungsi Lambda atau titik akhir API mengharapkan bentuk muatan tertentu, bukan seluruh envelope peristiwa EventBridge, sehingga Anda tidak memerlukan Lambda perantara hanya untuk mengubah bentuk 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"
}'
}Aturan Terjadwal (Cron/Rate)
Aturan EventBridge juga dapat berjalan berdasarkan jadwal, bukan dengan mencocokkan peristiwa. Gunakan ekspresi rate (misalnya, rate(5 minutes)) untuk pemicu dengan interval tetap, atau ekspresi cron untuk penjadwalan berdasarkan kalender. Aturan terjadwal sangat cocok untuk memicu fungsi Lambda guna menjalankan pekerjaan pembersihan secara berkelompok, mengirim laporan berkala, atau menjalankan tugas DMS setiap malam — sehingga Anda tidak memerlukan pekerjaan cron berbasis 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"
}]'Pengarsipan dan Pemutaran Ulang Peristiwa
EventBridge dapat mengarsipkan semua peristiwa (atau subset yang difilter) dari sebuah bus ke arsip peristiwa dan mempertahankannya selama periode yang dapat dikonfigurasi. Setelah itu, Anda dapat memutar ulang peristiwa yang diarsipkan ke bus kapan saja — berguna untuk memutar ulang peristiwa guna menguji versi Lambda baru, memulihkan kondisi ketika target melewatkan peristiwa akibat kesalahan, atau mengisi layanan baru dengan peristiwa historis. Ini adalah jaring pengaman operasional yang kuat dan unik bagi EventBridge dibandingkan sistem pub/sub lainnya.
# 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"}'Perutean Lintas Akun dan Lintas Region
EventBridge mendukung perutean peristiwa lintas akun dengan membuat kebijakan berbasis sumber daya pada bus target di akun lain yang mengizinkan akun sumber menempatkan peristiwa. Hal ini memungkinkan akun pemantauan terpusat menerima peristiwa dari semua akun beban kerja, atau memungkinkan arsitektur bus layanan bersama tempat tim platform merutekan peristiwa ke bus milik tim konsumen. Perutean lintas Region bekerja dengan cara serupa menggunakan target bus peristiwa lintas Region yang dinyatakan secara eksplisit.
# 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 membuat integrasi point-to-point antara sumber (SQS, Kinesis, DynamoDB Streams, Kafka) dan target, dengan pemfilteran dan pengayaan opsional di antaranya (melalui Lambda, Step Functions, atau API Gateway). Pipes lebih sederhana daripada menulis konsumen Lambda yang melakukan polling — Pipes menangani polling, pengelompokan, pemfilteran, dan perutean secara otomatis. Gunakan Pipes jika Anda memerlukan koneksi langsung dari sumber ke target tanpa bus pub/sub lengkap.
# 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 vs SNS vs SQS
Ketiga layanan ini memiliki fungsi yang saling tumpang tindih, tetapi melayani kasus penggunaan yang berbeda. SNS: penyebaran berbasis push ke pelanggan (email, HTTP, SQS, Lambda) — pub/sub sederhana tanpa pemfilteran. SQS: antrean pesan yang tahan lama untuk pemisahan point-to-point dengan semantik pengambilan oleh konsumen. EventBridge: bus perutean berbasis konten dengan registri skema, pengarsipan/pemutaran ulang, mitra SaaS, dan pengiriman lintas akun — paling sesuai untuk perutean peristiwa yang kompleks di banyak layanan. Gunakan EventBridge jika Anda memerlukan aturan perutean yang canggih, bukan sekadar penyebaran sederhana.
Registri Skema EventBridge
Registri Skema EventBridge secara otomatis mendeteksi dan membuat katalog struktur peristiwa yang mengalir melalui bus peristiwa Anda. Registri ini menyimpan skema dalam format OpenAPI 3.0 sehingga pengembang dapat menemukan peristiwa yang tersedia dan membuat pengikatan kode (Java, Python, TypeScript) yang melakukan deserialisasi peristiwa menjadi objek bertipe. Hal ini menghilangkan kebutuhan akan kode penguraian JSON manual dan memastikan keamanan tipe di seluruh layanan berbasis peristiwa. Anda juga dapat mendaftarkan skema peristiwa kustom secara manual untuk peristiwa yang dihasilkan oleh aplikasi Anda sendiri.
# 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-schemasPemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, Anda mempelajari bahwa EventBridge merutekan peristiwa menggunakan aturan pola berbasis konten ke beberapa target secara serentak, pengarsipan dan pemutaran ulang memungkinkan Anda mempertahankan serta memproses ulang peristiwa historis tanpa mengubah kode, dan EventBridge Pipes menyediakan pipeline terkelola dari sumber streaming ke target. Selanjutnya, kita akan mempelajari Step Functions untuk mengorkestrasi alur kerja nirserver multi-langkah.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “EventBridge: Bus Peristiwa dan Aturan” gratis?
Ya — teks lengkap “EventBridge: Bus Peristiwa dan Aturan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AWS Solutions Architect, upgrade ke CoddyKit PRO. Kursus AWS Solutions Architect mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “EventBridge: Bus Peristiwa dan Aturan”?
Publikasikan peristiwa ke bus EventBridge khusus, tulis aturan pola peristiwa untuk memfilter dan merutekan peristiwa ke target Lambda, SQS, atau Step Functions. Kamu berlatih AWS Solutions Architect dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AWS Solutions Architect?
Tidak diperlukan pengalaman sebelumnya. AWS Solutions Architect di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “EventBridge: Bus Peristiwa dan Aturan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- EventBridge: Bus Peristiwa dan Aturan
- Step Functions: Mengatur Alur Kerja Tanpa Server
- Kinesis Data Streams untuk Pemrosesan Peristiwa Waktu Nyata
- Pola Koreografi vs Orkestrasi