بداية سريعة: توجيه أحداث مخزن البيانات الثنائية الكبيرة إلى نقطة نهاية الويب باستخدام قالب ARM

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

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

إذا كانت بيئتك تلبي المتطلبات الأساسية وكنت معتاداً على استخدام قوالب "ARM"، فحدد زر "Deploy to Azure". سيتم فتح القالب في مدخل Azure.

Button to deploy the Resource Manager template to Azure.

المتطلبات الأساسية

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

قم بإنشاء نقطة نهاية للرسالة

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

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

    النشر على Azure

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

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

    View new site

مراجعة القالب

يُعدّ النموذج المستخدم في هذا التشغيل السريع مأخوذاً من قوالب التشغيل السريع من Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "17805408638569592847"
    }
  },
  "parameters": {
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Provide a unique name for the Blob Storage account."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Provide a location for the Blob Storage account that supports Event Grid."
      }
    },
    "eventSubName": {
      "type": "string",
      "defaultValue": "subToStorage",
      "metadata": {
        "description": "Provide a name for the Event Grid subscription."
      }
    },
    "endpoint": {
      "type": "string",
      "metadata": {
        "description": "Provide the URL for the WebHook to receive events. Create your own endpoint for events."
      }
    },
    "systemTopicName": {
      "type": "string",
      "defaultValue": "mystoragesystemtopic",
      "metadata": {
        "description": "Provide a name for the system topic."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot",
        "minimumTlsVersion": "TLS1_2",
        "supportsHttpsTrafficOnly": true,
        "allowBlobPublicAccess": false
      }
    },
    {
      "type": "Microsoft.EventGrid/systemTopics",
      "apiVersion": "2023-12-15-preview",
      "name": "[parameters('systemTopicName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "source": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
        "topicType": "Microsoft.Storage.StorageAccounts"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
      "apiVersion": "2023-12-15-preview",
      "name": "[format('{0}/{1}', parameters('systemTopicName'), parameters('eventSubName'))]",
      "properties": {
        "destination": {
          "properties": {
            "endpointUrl": "[parameters('endpoint')]"
          },
          "endpointType": "WebHook"
        },
        "filter": {
          "includedEventTypes": [
            "Microsoft.Storage.BlobCreated",
            "Microsoft.Storage.BlobDeleted"
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopicName'))]"
      ]
    }
  ],
  "outputs": {
    "name": {
      "type": "string",
      "value": "[parameters('eventSubName')]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.EventGrid/systemTopics/eventSubscriptions', parameters('systemTopicName'), parameters('eventSubName'))]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

يتم تعريف موردين لـ Azure في القالب:

نشر القالب

  1. حدد الرابط التالي لتسجيل الدخول إلى Azure وفتح قالب. ينشئ القالب مخزناً رئيسياً وبيانات سرية.

    Button to deploy the Resource Manager template to Azure.

  2. حدد نقطة النهاية: أدخل عنوان "URL" تطبيق الويب وأضفه api/updatesإلى عنوان "URL" الصفحة الرئيسية.

  3. حدد شراء لنشر القالب.

يتم استخدام مدخل Microsoft Azure هنا لنشر القالب. يمكنك أيضاً استخدام مدخل Azure وAzure PowerShell وواجهة برمجة تطبيقات REST. لمعرفة طرق النشر الأخرى، راجع نشر القوالب.

إشعار

يمكنك العثور على المزيد من نماذج Event Grid هنا.

التحقُّق من صحة عملية النشر

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

View subscription event

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

تشغل حدث مخزن Blob عن طريق تحميل ملف. لا يحتاج الملف إلى أي محتوى محدد. تفترض المقالات أن لديك ملفاً يسمى testfile.txt، ولكن يمكنك استخدام أي ملف.

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

View results

تنظيف الموارد

احذف مجموعة الموارد في حالة عدم الحاجة إليها.

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

لمزيد من المعلومات حول قوالب Azure Resource Manager، راجع المقالات التالية: