EventBridge: ناقل الأحداث والقواعد
انشر الأحداث إلى ناقل EventBridge مخصّص، واكتب قواعد لأنماط الأحداث لتصفية الأحداث وتوجيهها إلى أهداف Lambda أو SQS أو Step Functions
EventBridge: ناقل الأحداث والقواعد درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ما هو Amazon EventBridge؟
Amazon EventBridge (المعروف سابقًا باسم CloudWatch Events) هو ناقل أحداث بدون خوادم، يسهّل ربط التطبيقات باستخدام الأحداث الواردة من خدمات AWS وتطبيقاتكم الخاصة وموفري SaaS. الأحداث عبارة عن كائنات JSON؛ ويوجّه EventBridge هذه الأحداث إلى هدف واحد أو أكثر استنادًا إلى قواعد أنماط الأحداث. وعلى خلاف SQS (من نقطة إلى نقطة)، فإن EventBridge هو طبقة توجيه بنموذج النشر/الاشتراك — إذ يمكن لحدث واحد أن يتفرّع إلى عدة أهداف في الوقت نفسه.
ناقلات الأحداث: الافتراضي والمخصص والشريك
يحتوي EventBridge على ثلاثة أنواع من ناقلات الأحداث. يستقبل الناقل الافتراضي الأحداث من خدمات AWS (مثل تغيّرات حالة EC2 وأحداث S3 واستدعاءات واجهة برمجة تطبيقات CloudTrail وغيرها). أما النواقل المخصصة فهي نواقل تنشئونها لأحداث تطبيقاتكم الخاصة — وتفصل أحداث تطبيقاتكم عن أحداث خدمات AWS. وتستقبل نواقل الشركاء الأحداث مباشرةً من موفري SaaS (Zendesk وDatadog وGitHub وShopify) من خلال تكاملات جاهزة، من دون الحاجة إلى Lambda لإجراء الاستقصاء.
# 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"
}]'قواعد أنماط الأحداث
تحدد قاعدة نمط الحدث الأحداث المطلوب مطابقتها باستخدام نمط JSON يرشّح الأحداث وفق أي مجموعة من حقول الحدث (مثل source وdetail-type وaccount وregion أو الحقول الموجودة داخل كائن detail). يقيّم EventBridge كل حدث مقابل جميع القواعد الموجودة على الناقل. وتُرسَل الأحداث المطابقة إلى الأهداف التي تم إعدادها للقاعدة. تكون القواعد مرتبطة منطقيًا بـ OR على مستوى القاعدة، وبـ AND داخل كائن النمط.
# 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إعداد الأهداف
يمكن لـ EventBridge توجيه الأحداث المطابقة إلى أكثر من 20 نوعًا من الأهداف، بما في ذلك دوال Lambda وصفوف SQS وموضوعات SNS وآلات الحالات في Step Functions وتدفقات بيانات Kinesis ونقاط نهاية API Gateway ومهام ECS، بل وحتى ناقل EventBridge آخر (للتوجيه بين الحسابات). يمكن أن تحتوي كل قاعدة على ما يصل إلى 5 أهداف. يستدعي EventBridge الأهداف بشكل غير متزامن، ويعيد المحاولة باستخدام تراجع أُسّي عند الفشل.
# 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"
}]'تحويل الإدخال
يمرّر EventBridge افتراضيًا كائن JSON الكامل للحدث إلى الهدف. استخدموا تحويل الإدخال لإعادة تشكيل الحدث قبل تسليمه — مثل استخراج حقول محددة، أو إنشاء كائن JSON جديد، أو إنشاء سلسلة مخصصة. ويكون ذلك مفيدًا عندما تتوقع دالة Lambda أو نقطة نهاية API بنية محددة للحمولة بدلًا من غلاف حدث EventBridge الكامل، مما يلغي الحاجة إلى Lambda وسيطة لمجرد إعادة تشكيل البيانات.
# 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"
}'
}القواعد المجدولة (Cron/Rate)
يمكن لقواعد EventBridge أن تعمل أيضًا وفق جدول زمني بدلًا من مطابقة حدث. استخدموا تعبير rate (مثل rate(5 minutes)) للمشغلات ذات الفواصل الزمنية الثابتة، أو تعبير cron للجدولة المستندة إلى التقويم. وتناسب القواعد المجدولة تشغيل دوال Lambda لمهام التنظيف المجمّعة، أو إرسال التقارير الدورية، أو تشغيل مهام DMS الليلية — وبذلك تستبدل الحاجة إلى مهام cron المستندة إلى 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"
}]'أرشفة الأحداث وإعادة تشغيلها
يمكن لـ EventBridge أرشفة جميع الأحداث (أو مجموعة فرعية مُرشَّحة منها) من ناقل إلى أرشيف أحداث، والاحتفاظ بها لمدة قابلة للتهيئة. ويمكنكم بعد ذلك إعادة تشغيل الأحداث المؤرشفة إلى الناقل في أي وقت — وهو أمر مفيد لإعادة تشغيل الأحداث لاختبار إصدار جديد من Lambda، أو التعافي من خطأ أدى إلى فقدان هدفٍ ما لبعض الأحداث، أو تزويد خدمة جديدة بالأحداث السابقة. وتُعد هذه آلية أمان تشغيلية قوية ينفرد بها EventBridge مقارنةً بأنظمة النشر/الاشتراك الأخرى.
# 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"}'التوجيه بين الحسابات والمناطق
يدعم EventBridge توجيه الأحداث بين الحسابات من خلال إنشاء سياسة قائمة على الموارد على الناقل الهدف في حساب آخر، تسمح للحساب المصدر بوضع الأحداث. ويتيح ذلك لحساب مراقبة مركزي استقبال الأحداث من جميع حسابات أحمال العمل، أو إنشاء بنية ناقل خدمة مشتركة يوجّه فيها فريق المنصة الأحداث إلى نواقل فرق المستهلكين. ويعمل التوجيه بين المناطق بطريقة مماثلة باستخدام أهداف ناقل أحداث صريحة بين المناطق.
# 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 تكاملات من نقطة إلى نقطة بين مصدر (مثل SQS أو Kinesis أو DynamoDB Streams أو Kafka) وهدف، مع إمكانية إجراء التصفية والإثراء بينهما (عبر Lambda أو Step Functions أو API Gateway). وتُعد Pipes أبسط من كتابة مستهلك Lambda للاستقصاء — إذ تتولى تلقائيًا الاستقصاء وتجميع الرسائل والتصفية والتوجيه. استخدموا Pipes عندما تحتاجون إلى اتصال مباشر من المصدر إلى الهدف من دون ناقل نشر/اشتراك كامل.
# 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 مقابل SNS مقابل SQS
تتداخل حالات استخدام هذه الخدمات الثلاث، لكنها تخدم أغراضًا مختلفة. SNS: توزيع قائم على الدفع إلى المشتركين (البريد الإلكتروني وHTTP وSQS وLambda) — وهو نشر/اشتراك بسيط بلا تصفية. SQS: صف رسائل متين للفصل من نقطة إلى نقطة، مع دلالات سحب الرسائل من جانب المستهلك. EventBridge: ناقل توجيه قائم على محتوى الرسائل، مع سجل مخططات وأرشفة وإعادة تشغيل وشركاء SaaS وتسليم بين الحسابات — وهو الأنسب لتوجيه الأحداث المعقدة عبر العديد من الخدمات. استخدموا EventBridge عند الحاجة إلى قواعد توجيه متقدمة، وليس لمجرد التوزيع البسيط.
سجل مخططات EventBridge
يكتشف سجل مخططات EventBridge تلقائيًا بنية الأحداث المتدفقة عبر نواقل الأحداث ويفهرسها. ويخزّن المخططات بتنسيق OpenAPI 3.0، حتى يتمكن المطورون من اكتشاف الأحداث المتاحة وإنشاء روابط برمجية (Java وPython وTypeScript) تفك تسلسل الأحداث إلى كائنات ذات أنواع محددة. ويُلغي ذلك الحاجة إلى كتابة تعليمات يدوية لتحليل JSON، ويضمن سلامة الأنواع عبر الخدمات المعتمدة على الأحداث. ويمكنكم أيضًا تسجيل مخططات أحداث مخصصة يدويًا للأحداث التي تنتجها تطبيقاتكم الخاصة.
# 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اختبار سريع
اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلمتم في هذا الدرس أن EventBridge يوجّه الأحداث باستخدام قواعد أنماط قائمة على المحتوى إلى عدة أهداف في الوقت نفسه، وأن الأرشفة وإعادة التشغيل تتيحان الاحتفاظ بالأحداث السابقة وإعادة معالجتها من دون تغييرات في التعليمات البرمجية، وأن EventBridge Pipes توفر مسارات مُدارة من المصدر إلى الهدف انطلاقًا من المصادر المتدفقة. سنستكشف بعد ذلك Step Functions لتنسيق مسارات العمل متعددة الخطوات بدون خوادم.
الأسئلة الشائعة
هل درس «EventBridge: ناقل الأحداث والقواعد» مجاني؟
نعم — نص درس «EventBridge: ناقل الأحداث والقواعد» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «EventBridge: ناقل الأحداث والقواعد»؟
انشر الأحداث إلى ناقل EventBridge مخصّص، واكتب قواعد لأنماط الأحداث لتصفية الأحداث وتوجيهها إلى أهداف Lambda أو SQS أو Step Functions تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «EventBridge: ناقل الأحداث والقواعد»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- EventBridge: ناقل الأحداث والقواعد
- Step Functions: تنسيق سير العمل دون خوادم
- Kinesis Data Streams لمعالجة الأحداث الفورية
- أنماط التنسيق مقابل التوجيه المركزي