كيف يمكن العمل مع مشغلات شبكة الأحداث والروابط في Azure Functions

توفر Azure Functions تكاملاً مضمناً مع Azure Event Grid باستخدام المشغلات والروابط. توضح لك هذه المقالة كيف يمكن تكوين مشغل شبكة الأحداث والارتباطات وتقييمها محليًا. لمزيد من المعلومات حول تعريفات وأمثلة مشغل شبكة الأحداث وربط الإخراج، قم بمراجعة إحدى المقالات المرجعية التالية:

إنشاء اشتراك حدث

لبدء تلقي طلبات HTTP لشبكة الأحداث، تحتاج إلى اشتراك في الأحداث التي تم رفعها بواسطة شبكة الأحداث. تحدد اشتراكات الأحداث عنوان URL لنقطة النهاية الذي يستدعي الوظيفة. عند إنشاء اشتراك حدث من علامة تبويب تكامل الوظيفة في مدخل Azure، يتم توفير عنوان URL لك. عند إنشاء اشتراك حدث برمجياً أو عند إنشاء اشتراك الحدث من شبكة الأحداث، فستحتاج إلى توفير نقطة النهاية. يحتوي عنوان URL لنقطة النهاية على مفتاح نظام، والذي يجب الحصول عليه من واجهات برمجة تطبيقات REST لمسؤول الوظائف.

الحصول على عنوان URL لنقطة نهاية إخطار على الويب

تعتمد نقطة نهاية URL للوظيفة التي تم تشغيلها في شبكة الأحداث على إصدار وقت تشغيل Functions. يوضح المثال التالي نمط URL الخاص بالإصدار:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

إشعار

هناك إصدار من مشغل تخزين Blob يستخدم أيضا اشتراكات الحدث. يحتوي عنوان URL لنقطة النهاية لهذا النوع من مشغل تخزين Blob على مسار /runtime/webhooks/blobs، في حين أن مسار مشغل Event Grid سيكون /runtime/webhooks/EventGrid. للمقارنة بين خيارات معالجة الكائنات الثنائية كبيرة الحجم، راجع المشغل على حاوية كائن ثنائي كبير الحجم.

الحصول على مفتاح النظام

تتضمن نقطة نهاية URL التي تقوم بتشييدها قيمة مفتاح النظام. مفتاح النظام هو مفتاح تخويل، خاص بخطاف ويب Event Grid، يجب تضمينه في طلب إلى عنوان URL لنقطة النهاية لمشغل Event Grid. يوضح القسم التالي كيفية الحصول على مفتاح النظام.

يمكنك أيضا الحصول على المفتاح الرئيسي لتطبيق الوظائف من مفاتيح Functions>App في المدخل.

تنبيه

يوفر المفتاح الرئيسي وصول المسؤول إلى تطبيق الدالة لديك. لا تشارك هذا المفتاح مع أطراف ثالثة أو توزعه في تطبيقات العميل الأصلية.

لمزيد من المعلومات، راجع العمل باستخدام مفاتيح الوصول في Azure Functions.

يمكنك الحصول على مفتاح النظام من تطبيق الوظائف باستخدام واجهات برمجة تطبيقات المسؤول التالية (HTTP GET):

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

واجهة برمجة تطبيقات REST هذه هي واجهة برمجة تطبيقات مسؤول، لذا فهي تتطلب المفتاح الرئيسي لتطبيق وظيفتك. لا تخلط بين مفتاح النظام (لاستدعاء دالة مشغل Event Grid) والمفتاح الرئيسي (لأداء المهام الإدارية في تطبيق الدالة). عند الاشتراك في موضوع Event Grid، تأكد من استخدام مفتاح النظام.

وفيما يلي مثال للاستجابة التي توفر مفتاح النظام:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

إنشاء الاشتراك

يمكنك إنشاء اشتراك حدث إما من مدخل Azure أو باستخدام Azure CLI.

بالنسبة للدوال التي تقوم بتطويرها في مدخل Azure مع مشغل Event Grid، حدد تكامل ثم اختر مشغل Event Grid وحدد إنشاء اشتراك Event Grid.

لقطة شاشة لربط اشتراك حدث جديد بالمشغل في المدخل.

عند تحديد هذا الارتباط، يفتح المدخل صفحة إنشاء اشتراك حدث مع نقطة نهاية المشغل الحالية المعرفة مسبقًا.

لقطة شاشة لإنشاء اشتراك حدث مع نقطة نهاية وظيفة تم تحديدها مسبقاً.

لمزيدٍ من المعلومات حول كيفية إنشاء الاشتراكات باستخدام مدخل Azure، راجع إنشاء حدث مخصص - مدخل Azure في وثائق Event Grid.

لمزيدٍ من المعلومات حول كيفية إنشاء اشتراك، راجع التشغيل السريع لتخزين كائن ثنائي كبير الحجم أو عمليات التشغيل السريعة الأخرى لـ Event Grid.

الاختبار المحلي مع تطبيق ويب العارض

لاختبار مشغل Event Grid محليًا، يجب عليك الحصول على طلبات HTTP لـ Event Grid التي تم تسليمها من أصلها في السحابة إلى جهازك المحلي. تكون إحدى طرق القيام بذلك عن طريق التقاط الطلبات عبر الإنترنت وإعادة إرسالها يدويًا على جهازك المحلي:

  1. إنشاء تطبيق ويب عارض يلتقط رسائل الأحداث.
  2. إنشاء اشتراك Event Grid الذي يرسل الأحداث إلى تطبيق العارض.
  3. إنشاء طلب ونسخ نص الطلب من تطبيق العارض.
  4. نشر الطلب يدويًا إلى عنوان URL المضيف المحلي لدالة مشغل Event Grid.

لإرسال طلب نشر HTTP، تحتاج إلى أداة اختبار HTTP. تأكد من اختيار أداة تحافظ على أمان بياناتك. لمزيد من المعلومات، راجع أدوات اختبار HTTP.

عند الانتهاء من الاختبار، يمكنك استخدام نفس الاشتراك للإنتاج عن طريق تحديث نقطة النهاية. استخدم az eventgrid event-subscription update الأمر Azure CLI.

إنشاء تطبيق ويب عارض

لتبسيط عملية التقاط رسائل الأحداث، يمكنك نشر تطبيق ويب منشأ مسبقًا يعرض رسائل الحدث. يتضمن الحل المنشور خطة خدمة التطبيقات، وتطبيق الويب الخاص بخدمة التطبيقات، وكود المصدر من GitHub.

حدد Deploy to Azure لنشر الحل في اشتراكك. في بوابة Azure، توفير قيم للمعلمات.

زر لنشر قالب Resource Manager إلى Azure.

قد يستغرق النشر بضع دقائق حتى يكتمل. بعد نجاح عملية النشر، اطّلع على تطبيق الويب الخاص بك؛ للتأكد من أنه يعمل. في مستعرض ويب، انتقل إلى: https://<your-site-name>.azurewebsites.net

ترى الموقع ولكن لم يتم نشر أي أحداث عليه حتى الآن.

عرض موقع جديد

إنشاء اشتراك "شبكة الأحداث"

أنشئ اشتراكًا في Event Grid من النوع الذي تريد اختباره، وأعطه عنوان URL من تطبيق الويب كنقطة نهاية لإعلام الحدث. ينبغي أن تتضمن نقطة النهاية لتطبيق الويب الخاص بك اللاحقة /api/updates/. بالتالي يكون عنوان URL الكامل هو https://<your-site-name>.azurewebsites.net/api/updates

لمعرفة معلومات حول كيفية إنشاء الاشتراكات باستخدام مدخل Azure، راجع إنشاء حدث مخصص - مدخل Azure في وثائق Event Grid.

إنشاء طلب

قم بتشغيل حدث من شأنه إنشاء نسبة استخدام لـ HTTP لنقطة نهاية تطبيق الويب. على سبيل المثال، إذا قمت بإنشاء اشتراك تخزين كائن ثنائي كبير الحجم أو تحميل كائن ثنائي كبير الحجم أو حذفه. عندما يظهر طلب في تطبيق الويب، انسخ نص الطلب.

سيتم استلام طلب التحقق من صحة الاشتراك أولاً، تجاهل أي طلبات تحقق من الصحة، وانسخ طلب الحدث.

نسخ نص الطلب من تطبيق الويب

ترحيل الطلب يدويًا

تشغيل الدالة شبكة الأحداث محليًا. عناوين Content-Type وaeg-event-type مطلوب تعيينها يدويًا، بينما يمكن ترك كل القيم الأخرى كقيم افتراضية.

استخدم أداة اختبار HTTP لإنشاء طلب HTTP POST:

  • تعيين عنوان Content-Type: application/json.

  • تعيين عنوان aeg-event-type: Notification.

  • الصق بيانات RequestBin في نص الطلب.

  • إرسال طلب HTTP POST إلى نقطة النهاية التي تبدأ مشغل Event Grid يدويا.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

يجب أن تكون معلمة functionName الاسم المحدد في سمة FunctionName.

تنفذ دالة مشغل Event Grid سجلات مشابهة للمثال التالي وتظهرها:

نموذج سجلات دالة مشغل Event Grid

الخطوات التالية

لمعرفة المزيد حول Event Grid مع Functions، راجع المقالات التالية: