تسليم الأحداث إلى مراكز أحداث Azure باستخدام مواضيع مساحة الاسم - Azure CLI

توفر المقالة إرشادات خطوة بخطوة لنشر الأحداث إلى Azure Event Grid بتنسيق CloudEvents JSON وتقديم هذه الأحداث باستخدام نموذج تسليم الدفع. لكي تكون محددا، يمكنك استخدام Azure CLI و Curl لنشر الأحداث إلى موضوع مساحة اسم في Event Grid ودفع هذه الأحداث من اشتراك حدث إلى وجهة معالج مراكز الأحداث. لمزيد من المعلومات حول نموذج تسليم الدفع، راجع نظرة عامة على تسليم الدفع.

إشعار

لا يدعم ملحق Azure CLI Event Grid مساحات الأسماء وأي من الموارد التي يحتوي عليها. سنستخدم مورد Azure CLI لإنشاء موارد 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، يتم تثبيت أحدث إصدار بالفعل.

قم بتمكين مزود موارد Event Grid

  1. إذا لم تكن قد استخدمت Event Grid من قبل في اشتراك Azure، فقد تحتاج إلى تسجيل موفر موارد Event Grid. قم بتشغيل الأمر التالي لتسجيل الموفر :

    az provider register --namespace Microsoft.EventGrid
    
  2. قد يستغرق التسجيل بعض الوقت. للتحقق من الحالة، قم بتشغيل الأمر التالي:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    عندما registrationStateيكونRegistered، كنت على استعداد للمتابعة.

إنشاء مجموعة موارد

أنشئ إحدى مجموعات موارد Azure باستخدام الأمر "az group create". يمكنك استخدام مجموعة الموارد هذه لاحتواء كافة الموارد التي تم إنشاؤها في هذه المقالة.

الخطوات العامة لاستخدام Cloud Shell لتشغيل الأوامر هي:

  • حدد Open Cloud Shell لمشاهدة نافذة Azure Cloud Shell في الجزء الأيمن.
  • انسخ الأمر والصقه في نافذة Azure Cloud Shell.
  • اضغط على ENTER لتشغيل الأمر.
  1. قم بتعريف متغير للاحتفاظ باسم مجموعة موارد Azure. حدد اسما لمجموعة الموارد عن طريق استبدال <your-resource-group-name> بقيمة تريدها.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. قم بإنشاء مجموعة موارد. قم بتغيير الموقع كما تراه مناسبا.

    az group create --name $resource_group --location $location
    

إنشاء مساحة اسم

توفر مساحة اسم Event Grid نقطة نهاية معرفة من قبل المستخدم تقوم بنشر الأحداث إليها. ينشئ المثال التالي مساحة اسم في مجموعة الموارد الخاصة بك باستخدام Bash في Azure Cloud Shell. يجب أن يكون اسم مساحة الاسم فريدا لأنه جزء من إدخال نظام أسماء المجالات (DNS). يجب أن يفي اسم مساحة الاسم بالقواعد التالية:

  • يجب أن يتراوح بين 3-50 حرفا.
  • وينبغي أن تكون فريدة من نوعها إقليميا.
  • الأحرف المسموح بها فقط هي a-z و A-Z و 0-9 و -
  • يجب ألا يبدأ ببادئات الكلمات الرئيسية المحجوزة مثل Microsoftأو Systemأو .EventGrid
  1. قم بتعريف متغير للاحتفاظ باسم مساحة اسم Event Grid. حدد اسما لمساحة الاسم عن طريق استبدال <your-namespace-name> بقيمة تريدها.

    namespace="<your-namespace-name>"
    
  2. أنشئ مساحة اسم . قد تحتاج إلى تغيير الموقع الذي تم نشره فيه.

    az eventgrid namespace create -g $resource_group -n $namespace -l $location
    

إنشاء موضوع مساحة الاسم

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

  1. قم بتعريف متغير للاحتفاظ باسم موضوع مساحة الاسم. حدد اسما لموضوع مساحة الاسم عن طريق استبدال <your-topic-name> بقيمة تريدها.

    topic="<your-topic-name>"
    
  2. إنشاء موضوع مساحة الاسم:

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

إنشاء مورد Event Hubs جديد

إنشاء مورد مراكز الأحداث الذي يتم استخدامه كوجهة معالج لاشتراك تسليم دفع موضوع مساحة الاسم.

  1. قم بتعريف متغير للاحتفاظ باسم مساحة اسم مراكز الأحداث.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. إنشاء مساحة اسم لـ Event Hubs.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. قم بتعريف متغير للاحتفاظ باسم مركز الحدث.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. قم بتشغيل الأمر التالي لإنشاء مركز أحداث في مساحة الاسم.

    az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub 
    

تسليم الأحداث إلى مراكز الأحداث باستخدام الهوية المدارة

لتسليم الأحداث إلى مراكز الأحداث في مساحة الاسم "مراكز الأحداث" باستخدام الهوية المدارة، اتبع الخطوات التالية:

  1. تمكين الهوية المدارة المعينة من قبل النظام أو المعينة من قبل المستخدم: مساحات الأسماء. تابع القراءة إلى القسم التالي للعثور على كيفية تمكين الهوية المدارة باستخدام Azure CLI.
  2. أضف الهوية إلى دور مرسل بيانات مراكز الأحداث على مساحة اسم مراكز الأحداث، وتابع القراءة إلى القسم التالي للعثور على كيفية إضافة تعيين الدور.
  3. تمكين السماح لخدمات Microsoft الموثوقة لتجاوز إعداد الجدار هذا على مساحة اسم "مراكز الأحداث".
  4. تكوين اشتراك الحدث الذي يستخدم مركز أحداث كنقطة نهاية لاستخدام الهوية المعينة من قبل النظام أو المستخدم.

تمكين الهوية المدارة في مساحة اسم شبكة الأحداث

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

az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}

إضافة تعيين دور في مراكز الأحداث للهوية المدارة لشبكة الأحداث

  1. الحصول على معرف الهوية الأساسي لمساحة اسم شبكة الأحداث.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. الحصول على معرف مورد مركز أحداث مراكز الأحداث.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. إضافة تعيين دور في مراكز الأحداث للهوية المدارة لنظام شبكة الأحداث.

    az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
    

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

إنشاء اشتراك حدث تسليم دفع جديد.

event_subscription="<your_event_subscription_name>"
az resource create --api-version 2023-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventHubResourceId\"}}}}}}"

إرسال الأحداث إلى موضوعك

الآن، أرسل نموذج حدث إلى موضوع مساحة الاسم باتباع الخطوات الواردة في هذا القسم.

قائمة مفاتيح الوصول إلى مساحة الاسم

  1. احصل على مفاتيح الوصول المقترنة بمساحة الاسم التي أنشأتها. يمكنك استخدام أحدها للمصادقة عند نشر الأحداث. لسرد المفاتيح الخاصة بك، تحتاج إلى معرف مورد مساحة الاسم الكامل أولا. احصل عليه عن طريق تشغيل الأمر التالي:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. احصل على المفتاح الأول من مساحة الاسم:

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

نشر حدث

  1. استرداد اسم مضيف مساحة الاسم. يمكنك استخدامه لإنشاء نقطة نهاية HTTP لمساحة الاسم التي يتم إرسال الأحداث إليها. كانت العمليات التالية متوفرة أولا مع إصدار 2023-06-01-previewواجهة برمجة التطبيقات .

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. إنشاء نموذج حدث متوافق مع CloudEvents :

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    data العنصر هو حمولة الحدث الخاص بك. يمكن لأي JSON تم تشكيله بشكل جيد أن يذهب في هذا المجال. لمزيد من المعلومات حول الخصائص (المعروفة أيضا باسم سمات السياق) التي يمكن أن تنتقل في حدث ما، راجع مواصفات CloudEvents .

  3. استخدم CURL لإرسال الحدث إلى الموضوع. CURL هي أداة مساعدة ترسل طلبات HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

    انتقل إلى صفحة Event Hubs Namespace في مدخل Microsoft Azure، وقم بتحديث الصفحة وتحقق من أن عداد الرسائل الواردة في المخطط يشير إلى تلقي حدث.

    لقطة شاشة تعرض صفحة Event hub مع مخطط يوضح أنه تم تلقي حدث.

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

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