التشغيل السريع: توجيه الأحداث المخصصة إلى نقطة نهاية الويب باستخدام Azure CLI وEvent Grid
في هذه المقالة، يمكنك استخدام Azure CLI لإنشاء موضوع مخصص في Azure Event Grid، والاشتراك في الموضوع المخصص، وتشغيل الحدث لعرض النتيجة.
إشعار
إذا كنت جديدا على Azure Event Grid، فشاهد ما هي Azure Event Grid للحصول على نظرة عامة على الخدمة قبل الانتقال إلى هذا البرنامج التعليمي.
وعادةً، ما ترسل الأحداث إلى نقطة نهاية تعالج بيانات الحدث وتتخذ الإجراءات. ومع ذلك، لتبسيط هذه المقالة، يمكنك إرسال الأحداث إلى تطبيق ويب يقوم بتجميع الرسائل وعرضها.
عند الانتهاء، ترى أن بيانات الحدث قد أُرسِلت إلى تطبيق الويب.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تتطلب هذه المقالة الإصدار 2.0.70 أو أحدث من نسخة من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.
إنشاء مجموعة موارد
مواضيع شبكة الأحداث هي موارد Azure، ويجب وضعها في مجموعة موارد Azure. مجموعة الموارد هي عبارة عن مجموعة منطقية يتم فيها توزيع جميع موارد Azure وإدارتها.
أنشئ مجموعة موارد باستخدام الأمر az group create. ينشئ المثال التالي مجموعة موارد باسم gridResourceGroup في موقع westus2. إذا حددت Try it، فسترى نافذة Azure Cloud Shell في الجزء الأيمن. ثم حدد نسخ لنسخ الأمر ولصقه في نافذة Azure Cloud Shell، واضغط على ENTER لتشغيل الأمر. قم بتغيير اسم مجموعة الموارد والموقع إذا أردت.
az group create --name gridResourceGroup --location westus2
قم بتمكين مزود موارد Event Grid
إذا لم تكن قد استخدمت Event Grid من قبل في اشتراك Azure، فقد تحتاج إلى تسجيل موفر موارد Event Grid. قم بتشغيل الأمر التالي لتسجيل الموفر :
az provider register --namespace Microsoft.EventGrid
قد يستغرق التسجيل بعض الوقت. للتحقق من الحالة، قم بتشغيل الأمر التالي:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
عندما
registrationState
يكونRegistered
، كنت على استعداد للمتابعة.
إنشاء موضوع مخصص
يوفر موضوع Event Grid نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها. ينشئ المثال التالي الموضوع المخصص في مجموعة الموارد الخاصة بك باستخدام Bash في Azure Cloud Shell. استبدل <your-topic-name>
باسم فريد لموضوعك: يجب أن يكون اسم الموضوع المخصص فريدا لأنه جزء من إدخال نظام أسماء المجالات (DNS). بالإضافة إلى ذلك، يجب أن يكون الاسم مكونًا من عدد أحرف بين 3 إلى 50 حرفًا وأن يحتوي فقط على القيم a-z وA-Z و0-9 و"-".
انسخ الأمر التالي، وحدد اسما للموضوع، واضغط على ENTER لتشغيل الأمر.
topicname=<your-topic-name>
az eventgrid topic create
استخدم الأمر لإنشاء موضوع مخصص.az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
قم بإنشاء نقطة نهاية للرسالة
قبل الاشتراك في الموضوع المُخصص، يتعين إنشاء نقطة النهاية لرسالة الحدث. عادةً ما تتخذ نقطة النهاية إجراءات بناءً على بيانات الحدث. لتبسيط هذا التشغيل السريع، يمكنك نشر تطبيق ويب تم إنشاؤه مسبقا يعرض رسائل الحدث. يتضمن الحل المنشور خطة خدمة التطبيقات، وتطبيق الويب الخاص بخدمة التطبيقات، وكود المصدر من GitHub.
انسخ الأمر التالي، وحدد اسما لتطبيق الويب (نموذج عارض شبكة الأحداث)، واضغط على ENTER لتشغيل الأمر. استبدل
<your-site-name>
باسم فريد من أجل تطبيق الويب الخاص بك. يجب أن يكون اسم تطبيق الويب فريدًا؛ لأنه جزء من إدخال DNS.sitename=<your-site-name>
az deployment group create
قم بتشغيل لنشر تطبيق الويب باستخدام قالب Azure Resource Manager.az deployment group create \ --resource-group gridResourceGroup \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
قد يستغرق انتهاء النشر بضع دقائق. بعد نجاح عملية النشر، اطّلع على تطبيق الويب الخاص بك؛ للتأكد من أنه يعمل. في مستعرض ويب، انتقل إلى: https://<your-site-name>.azurewebsites.net
يجب أن تشاهد الموقع الذي لا توجد به رسائل معروضة حاليا.
الاشتراك في موضوع مخصص
يمكنك الاشتراك في موضوع Event Grid لإخبار Event Grid بالأحداث التي تريد تعقبها ومكان إرسال هذه الأحداث. يشترك المثال التالي في الموضوع الذي أنشأته، ويمرر عنوان URL من تطبيق الويب كنقطة نهاية لإعلام الحدث.
ينبغي أن تتضمن نقطة النهاية لتطبيق الويب الخاص بك اللاحقة /api/updates/
.
انسخ الأمر التالي، واستبدل
$sitename
باسم تطبيق الويب الذي أنشأته في الخطوة السابقة، واضغط على ENTER لتشغيل الأمر.endpoint=https://$sitename.azurewebsites.net/api/updates
قم بتشغيل الأمر التالي للحصول على معرف المورد للموضوع الذي قمت بإنشائه.
topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
قم بتشغيل الأمر التالي لإنشاء اشتراك في الموضوع المخصص باستخدام نقطة النهاية.
az eventgrid event-subscription create \ --source-resource-id $topicresourceid \ --name demoViewerSub \ --endpoint $endpoint
اعرض تطبيق الويب خاصتك مرةً أخرى، ولاحظ إرسال حدث التحقق من صحة الاشتراك إليه. حدد أيقونة العين لتوسيع بيانات الحدث. ترسل Event Grid حدث التحقق؛ بحيث تتمكن نقطة النهاية من التحقق من رغبتها في تلقي بيانات الحدث. يتضمن تطبيق الويب رمزًا للتحقق من صحة الاشتراك.
أرسل حدث إلى موضوعك المُخصص
الآن، دعونا نشغل حدثًا لنرى كيف تقوم شبكة الحدث بتوزيع الرسالة على نقطة النهاية الخاصة بك. أولاً، دعنا نحصل على عنوان URL والمفتاح للموضوع المخصص.
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
لتبسيط هذا المقال، تستخدم نموذج بيانات حدث ما لإرساله إلى الموضوع المُخصص. بشكل عام، يُرسل التطبيق أو خدمة Azure بيانات الحدث. ينشئ المثال التالي نموذج بيانات الحدث:
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
يكون عنصر data
JSON هو حمولة الحدث. يمكن لأي JSON تم تشكيله بشكل جيد أن يذهب في هذا المجال. يمكنك أيضًا استخدام حقل الموضوع للتوجيه والتصفية المتقدمين.
CURL هي أداة مساعدة ترسل طلبات HTTP. في هذه المقالة، استخدم CURL لإرسال الحدث إلى الموضوع.
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
لقد قمت بتشغيل الحدث، وأرسلت شبكة الأحداث الرسالة إلى نقطة النهاية التي قمت بتهيئتها عند الاشتراك. عرض تطبيق الويب الخاص بك لمشاهدة الحدث الذي أرسلته للتو.
[{
"id": "1807",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2017-08-10T21:03:07+00:00",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]
تنظيف الموارد
في حال كنت تخطط لمتابعة العمل مع هذا الحدث أو تطبيق عرض الحدث، لا تحذف الموارد التي تم إنشاؤها في هذه المقالة. وخلاف ذلك، استخدم الأمر التالي لحذف الموارد التي قمت بإنشائها في هذه المقالة.
az group delete --name gridResourceGroup
الخطوات التالية
الآن بعد أن عرفت كيفية إنشاء مواضيع مخصصة واشتراكات الأحداث، تعرف على المزيد حول ما يمكن أن تساعدك شبكة الأحداث على القيام به:
- حول شبكة الأحداث
- توجيه أحداث تخزين Blob إلى نقطة نهاية ويب مخصصة
- مراقبة تغييرات الجهاز الظاهري باستخدام Azure Event Grid وLogic Apps
- نقل البيانات الكبيرة إلى مستودع البيانات
اطلع على النماذج التالية للتعرف على كيفية نشر الأحداث واستهلاكها من Event Grid باستخدام لغات برمجة مختلفة.