تشغيل سريع: وجه أحداث التخزين إلى نقطة نهاية الويب باستخدام Azure CLI

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

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

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

Screenshot of the Azure Event Grid Viewer that shows event data that has been sent to the web app.

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

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

  • تتطلب هذه المقالة الإصدار 2.0.70 أو أحدث من نسخة من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، فسيكون لديك مسبقًا أحدث إصدار.

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

مواضيع شبكة الأحداث هي موارد Azure، ويجب وضعها في مجموعة موارد Azure. مجموعة الموارد هي عبارة عن مجموعة منطقية يتم فيها نشر جميع موارد Azure وإدارتها.

أنشئ مجموعة موارد باستخدام الأمر az group create.

ينشئ المثال التالي مجموعة موارد تُسمى ⁧<resource_group_name>⁩ في موقع ⁧⁩westcentralus⁧⁩. استبدل ⁧<resource_group_name>⁩ باسم فريد لمجموعة الموارد لديك.

az group create --name <resource_group_name> --location westcentralus

إنشاء حساب تخزين

تتوفر أحداث تخزين Blob في حسابات تخزين الإصدار 2 للأغراض العامة وحسابات تخزين Blob. تدعم حسابات تخزين v2 للأغراض العامة جميع الميزات لجميع خدمات التخزين، بما في ذلك Blobs والملفات وقوائم الانتظار والجداول. حساب تخزين Blob هو حساب تخزين متخصص لتخزين بياناتك غير المهيكلة كالكائنات الثنائية كبيرة الحجم (كائنات) في Azure Storage. تشبه حسابات تخزين Blob حسابات التخزين ذات الأغراض العامة وتشارك كل ميزات المتانة والتوافر وقابلية التوسع والأداء الرائعة التي تستخدمها اليوم بما في ذلك اتساق واجهة برمجة التطبيقات بنسبة 100٪ للكتل الكبيرة والكتل الملحقة. لمزيد من المعلومات، راجع نظرة عامة على حساب تخزين Azure.

استبدل <storage_account_name> باسم فريد لحساب التخزين الخاص بك، و<resource_group_name> بمجموعة الموارد التي أنشأتها سابقًا.

az storage account create \
  --name <storage_account_name> \
  --location westcentralus \
  --resource-group <resource_group_name> \
  --sku Standard_LRS \
  --kind BlobStorage \
  --access-tier Hot

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

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

استبدل <your-site-name> باسم فريد من أجل تطبيق الويب الخاص بك. يجب أن يكون اسم تطبيق الويب فريدًا لأنه جزء من إدخال DNS.

sitename=<your-site-name>

az deployment group create \
  --resource-group <resource_group_name> \
  --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 من قبل في اشتراك Azure، فقد تحتاج إلى تسجيل موفر موارد Event Grid. قم بتشغيل الأمر التالي لتسجيل الموفر :

az provider register --namespace Microsoft.EventGrid

قد يستغرق التسجيل بعض الوقت. للتحقق من الحالة، قم بتشغيل:

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

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

اشترك في حساب التخزين الخاص بك

الاشتراك في موضوع لإخبار شبكة الأحداث بالأحداث التي تريد تعقبها، ومكان إرسال هذه الأحداث. يشترك المثال التالي في حساب التخزين الذي أنشأته، ويمرر عنوان URL من تطبيق الويب الخاص بك كنقطة نهاية لإعلام الحدث. استبدل ⁧<event_subscription_name>⁩ باسم اشتراك الحدث. بالنسبة لـ ⁧<resource_group_name>⁩ و ⁧<storage_account_name>⁩، استخدم القيم التي أنشأتها سابقًا.

يجب أن تتضمن نقطة النهاية لتطبيق الويب الخاص بك اللاحقة ⁧/api/updates/⁩.

storageid=$(az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query id --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

az eventgrid event-subscription create \
  --source-resource-id $storageid \
  --name <event_subscription_name> \
  --endpoint $endpoint

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

View subscription event

مشغل حدث من تخزين Blob

الآن، لنقم بتشغيل حدث لمعرفة كيف توزع شبكة الأحداث الرسالة إلى نقطة النهاية لديك. أولًا، لنقم بتهيئة الاسم والمفتاح لحساب التخزين، ثم نقوم بإنشاء حاوية، ثم إنشاء ملف وتحميله. مرة أخرى، استخدم قيم ⁧<storage_account_name>⁩ و⁧<resource_group_name>⁩ التي أنشأتها سابقًا.

export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_KEY="$(az storage account keys list --account-name <storage_account_name> --resource-group <resource_group_name> --query "[0].value" --output tsv)"

az storage container create --name testcontainer

touch testfile.txt
az storage blob upload --file testfile.txt --container-name testcontainer --name testfile.txt

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

[{
  "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myrg/providers/Microsoft.Storage/storageAccounts/myblobstorageaccount",
  "subject": "/blobServices/default/containers/testcontainer/blobs/testfile.txt",
  "eventType": "Microsoft.Storage.BlobCreated",
  "eventTime": "2017-08-16T20:33:51.0595757Z",
  "id": "4d96b1d4-0001-00b3-58ce-16568c064fab",
  "data": {
    "api": "PutBlockList",
    "clientRequestId": "d65ca2e2-a168-4155-b7a4-2c925c18902f",
    "requestId": "4d96b1d4-0001-00b3-58ce-16568c000000",
    "eTag": "0x8D4E4E61AE038AD",
    "contentType": "text/plain",
    "contentLength": 0,
    "blobType": "BlockBlob",
    "url": "https://myblobstorageaccount.blob.core.windows.net/testcontainer/testblob1.txt",
    "sequencer": "00000000000000EB0000000000046199",
    "storageDiagnostics": {
      "batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
    }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

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

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

استبدل ⁧<resource_group_name>⁩ بمجموعة الموارد التي أنشأتها أعلاه.

az group delete --name <resource_group_name>

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

الآن بعد أن عرفت كيفية إنشاء الموضوعات واشتراكات الأحداث، تعرف على المزيد حول أحداث تخزين Blob وما يمكن أن تساعدك شبكة الأحداث على القيام به: