البدء السريع: توجيه الأحداث المخصصة إلى Azure Function باستخدام Event Grid
Azure Event Grid هي خدمة أحداث للسحابة. Azure Functions هي واحدة من معالجات الأحداث المدعومة. في هذه المقالة، يمكنك استخدام مدخل Microsoft Azure لإنشاء موضوع مخصص، والاشتراك في الموضوع فيه، وتشغيل الحدث لعرض النتيجة. إرسال الأحداث إلى Azure Function.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
إنشاء تطبيق وظائف Azure
قم بتسجيل الدخول إلى بوابة Azure.
في قائمة التنقل اليسرى، حدد All services.
حدد حساب في قائمة الفئات.
مرر الماوس فوق Function App (وليس تحديده)، وحدد +.
في صفحة الأساسيات في معالج إنشاء تطبيق الوظائف، اتبع الخطوات التالية:
حدد اشتراك Azure الذي تريد إنشاء تطبيق الوظائف فيه.
إنشاء مجموعة موارد جديدة أو تحديد مجموعة موارد موجودة.
حدد اسما لتطبيق الوظائف.
حدد .NET لمكدس وقت التشغيل.
بالنسبة للإصدار، حدد 6 (LTS)، النموذج قيد المعالجة.
حدد المنطقة الأقرب إليك.
حدد Next: Storage في أسفل الصفحة.
في صفحة التخزين ، قم بإنشاء حساب تخزين جديد أو حدد حساب تخزين موجود ليتم إقرانه بتطبيق الوظائف، ثم حدد Review + create في أسفل الصفحة.
في صفحة Review + create ، راجع الإعدادات، وحدد Create في أسفل الصفحة لإنشاء تطبيق الوظائف.
بمجرد نجاح النشر، حدد Go to resource للانتقال إلى الصفحة الرئيسية لتطبيق الوظائف.
إنشاء وظيفة
قبل الاشتراك في الموضوع المخصص، قم بإنشاء دالة لمعالجة الأحداث.
في صفحة Function App ، في قسم Create in Azure portal ، حدد Create function link في الجزء الأيمن.
في الصفحة Create Function، اتبع الخطوات التالية:
في صفحة Function ل HandleEventsFunc، حدد Code + Test في قائمة التنقل اليسرى، واستبدل التعليمات البرمجية بالتعليمات البرمجية التالية، ثم حدد Save على شريط الأوامر.
#r "Azure.Messaging.EventGrid" #r "System.Memory.Data" using Azure.Messaging.EventGrid; using System; public static void Run(EventGridEvent eventGridEvent, ILogger log) { log.LogInformation(eventGridEvent.Data.ToString()); }
حدد Monitor في القائمة اليسرى، ثم قم بالتبديل إلى علامة التبويب Logs . احتفظ بهذه النافذة أو علامة تبويب المستعرض مفتوحة حتى تتمكن من رؤية معلومات الحدث المستلمة.
إنشاء موضوع مخصص
يوفر موضوع Event Grid نقطة نهاية معرّفة من قِبل المستخدم تقوم بنشر الأحداث إليها.
في علامة تبويب جديدة من نافذة مستعرض الويب، سجل الدخول إلى مدخل Microsoft Azure.
في شريط البحث في الموضوع، ابحث عن Event Grid Topics، وحدد Event Grid Topics.
في صفحة Event Grid Topics ، حدد + Create على شريط الأوامر.
في الصفحة إنشاء موضوع اتبع الخطوات التالية:
حدد اشتراك Azure الخاص بك.
حدد نفس مجموعة الموارد من الخطوات السابقة.
توفير اسم فريد للموضوع المخصص. يجب أن يكون اسم الموضوع فريدًا؛ لأنه ممثل بإدخال DNS. لا تستخدم الاسم الموضح في الصورة. بدلاً من ذلك، قم بإنشاء اسمك الخاص، على أن يكون بين 3 إلى 50 حرفًا، وأن يحتوي فقط على القيم a-z و A-Z و0-9 و "-".
حدد موقعا لموضوع Event Grid.
حدد "Review + create".
في الصفحة Review + create، راجع الإعدادات ثم حدد Create.
بعد إنشاء الموضوع المخصص، حدد Go to resource link لمشاهدة صفحة موضوع Event Grid التالية للموضوع الذي قمت بإنشائه.
الاشتراك في موضوع مخصص
يمكنك الاشتراك في موضوع Event Grid لإخبار Event Grid بالأحداث التي تريد تعقبها، ومكان إرسال الأحداث.
الآن، على صفحة موضوع شبكة الأحداث لموضوعك المخصص، حدد + اشتراك حدث من شريط الأدوات.
في صفحة إنشاء اشتراك حدث، اتبع الخطوات التالية:
أدخل اسماً للاشتراك في الحدث.
حدد Azure Function لنوع نقطة النهاية.
اختر تكوين نقطة نهاية.
بالنسبة لنقطة نهاية الدالة، حدد اشتراك Azure Subscription، ومجموعة الموارد التي يوجد بها تطبيق الدالة Function App، ثم حدد Function App، والدالة التي قمت بإنشائها مسبقًا. حدد Confirm Selection.
هذه الخطوة اختيارية؛ لكنها موصى بها لسيناريوهات الإنتاج. في صفحة إنشاء اشتراك حدث، قم بالتبديل إلى علامة التبويب الميزات المتقدمة، وقم بتعيين قيم الحد الأقصى للأحداث لكل دفعة وحجم الدفعة المفضل بالكيلو بايت.
يمكن أن تمنحك الدفعات معدل نقل عالٍ. بالنسبة إلى الحد الأقصى للأحداث لكل دفعة، قم بتعيين الحد الأقصى لعدد الأحداث التي سيتضمنها الاشتراك في دفعة. يعيّن حجم الدفعة المفضل الحد الأعلى المفضل لحجم الدُفعة بالكيلو بايت؛ ولكن يمكن تجاوزه إذا كان حدث واحد أكبر من هذا الحد.
في صفحة Create Event Subscription ، حدد Create.
إرسال حدث إلى الموضوع
الآن، لنبادر بتشغيل حدث لمعرفة كيف توزع Event Grid الرسالة إلى نقطة النهاية لديك. استخدم إما Azure CLI أو PowerShell لإرسال حدث اختبار إلى الموضوع المخصص. بشكل عام، يُرسل التطبيق أو خدمة Azure بيانات الحدث.
يستخدم المثال الأول Azure CLI. إنه يحصل على عنوان URL والمفتاح للموضوع المخصص، ونماذج بيانات الحدث. استخدم اسم الموضوع المخصص لـ<topic name>
. يُنشئ نموذج بيانات الحدث. يكون عنصر data
JSON هو حمولة الحدث. يمكن لأي JSON تم تشكيله بشكل جيد أن يذهب في هذا المجال. يمكنك أيضًا استخدام حقل الموضوع للتوجيه والتصفية المتقدمين. CURL هي أداة مساعدة ترسل طلبات HTTP.
Azure CLI
حدد في مدخل Azure Cloud Shell. حدد Bash في الزاوية العلوية اليسرى من نافذة Cloud Shell.
topicname
تعيين المتغيرات وresourcegroupname
التي سيتم استخدامها في الأوامر.استبدل
TOPICNAME
باسم موضوع Event Grid.topicname="TOPICNAME"
استبدل
RESOURCEGROUPNAME
باسم مجموعة موارد Azure التي تحتوي على موضوع Event Grid.resourcegroupname="RESOURCEGROUPNAME"
تشغيل الأمر التالي للحصول على نقطة النهاية للموضوع: بعد نسخ الأمر ولصقه، قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيل الأمر.
endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
تشغيل الأمر التالي للحصول على المفتاح للموضوع المخصص: بعد نسخ ولصق الأمر قم بتحديث اسم الموضوع واسم مجموعة الموارد قبل تشغيل الأمر.
key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
انسخ العبارة التالية مع تعريف الحدث، واضغط على ENTER.
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"} ]'
قم بتشغيل الأمر Curl التالي لنشر الحدث:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Azure PowerShell
يستخدم المثال الثاني PowerShell لتنفيذ خطوات مماثلة.
حدد في مدخل Microsoft Azure Cloud Shell (بدلاً من ذلك انتقل إلى
https://shell.azure.com/
). حدد PowerShell في الزاوية العلوية اليمنى من نافذة Cloud Shell. راجع نموذج صورة نافذة Cloud Shell في قسم Azure CLI.اضبط المتغيرات التالية. بعد نسخ ولصق كل أمر، تحديث اسم الموضوعواسم مجموعة الموارد قبل إجراء الأمر:
$resourceGroupName = "RESOURCEGROUPNAME"
$topicName = "TOPICNAME"
أجرِ الأوامر التالية للحصول على نقطة النهايةوالمفاتيح للموضوع:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
قم بإعداد الحدث. نسخ وتشغيل العبارات في نافذة Shell.
$eventID = Get-Random 99999 #Date format should be SortableDateTimePattern (ISO 8601) $eventDate = Get-Date -Format s #Construct body using Hashtable $htbody = @{ id= $eventID eventType="recordInserted" subject="myapp/vehicles/motorcycles" eventTime= $eventDate data= @{ make="Ducati" model="Monster" } dataVersion="1.0" } #Use ConvertTo-Json to convert event body from Hashtable to JSON Object #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax $body = "["+(ConvertTo-Json $htbody)+"]"
استخدم Invoke-WebRequest لإرسال الحدث.
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
تحقق من تلقي هذه الدالة للحدث
لقد قمت بتشغيل الحدث، وأرسلت شبكة الأحداث الرسالة إلى نقطة النهاية التي قمت بتهيئتها عند الاشتراك.
في صفحة Monitor لدالة Azure، سترى استدعاء.
حدد استدعاء للاطلاع على التفاصيل.
يمكنك أيضا استخدام علامة التبويب Logs في الجزء الأيسر لمشاهدة الرسائل المسجلة عند نشر الأحداث إلى نقطة نهاية الموضوع.
تنظيف الموارد
إذا كنت تخطط لمتابعة العمل مع هذا الحدث، فلا تنظف الموارد التي جرى إنشاؤها في هذه المقالة. وإلا، فاحذف الموارد التي أنشأتها في هذه المقالة.
من القائمة اليُسرى، حدد مجموعات الموارد . إذا لم تر الخيار في القائمة اليسرى، حدد جميع الخدمات في القائمة اليسرى، وحدد مجموعات الموارد .
حدد مجموعة الموارد لفتح صفحة مجموعة الموارد .
حدد حذف مجموعة الموارد من شريط الأدوات.
قم بتأكيد الحذف بإدخال اسم مجموعة الموارد، وحدد حذف .
تم إنشاء مجموعة الموارد الأخرى التي تراها في الصورة، واستخدامها بواسطة نافذة Cloud Shell. احذفها إذا لم تكن تخطط لاستخدام نافذة Cloud Shell لاحقًا.
الخطوات التالية
الآن بعد أن عرفت كيفية إنشاء مواضيع مخصصة واشتراكات الأحداث، تعرف على المزيد حول ما يمكن أن تساعدك شبكة الأحداث على القيام به:
- حول شبكة الأحداث
- توجيه أحداث تخزين Blob إلى نقطة نهاية ويب مخصصة
- مراقبة تغييرات الجهاز الظاهري باستخدام Azure Event Grid وLogic Apps
- نقل البيانات الكبيرة إلى مستودع البيانات
اطلع على النماذج التالية للتعرف على كيفية نشر الأحداث واستهلاكها من Event Grid باستخدام لغات برمجة مختلفة.