تشغيل سريع: وجه أحداث التخزين إلى نقطة نهاية الويب باستخدام 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 للأغراض العامة من حسابات التخزين تدعم جميع الميزات لجميع خدمات التخزين، بما في ذلك كائنات Blob والملفات وقوائم الانتظار والجداول. حساب تخزين Blob هو حساب تخزين متخصص لتخزين بياناتك غير المنظمة، مثل الكائنات الثنائية كبيرة الحجم (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

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

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

    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

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

View subscription event

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

الآن، لنبادر بتشغيل حدث لمعرفة كيف توزع Event Grid الرسالة إلى نقطة النهاية لديك. أولًا، لنقم بتهيئة الاسم والمفتاح لحساب التخزين، ثم نقوم بإنشاء حاوية، ثم إنشاء ملف وتحميله. مرة أخرى، استخدم القيم الخاصة ب <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

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

[{
  "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/testfile.txt",
    "sequencer": "00000000000000EB0000000000046199",
    "storageDiagnostics": {
      "batchId": "dffea416-b46e-4613-ac19-0371c0c5e352"
    }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

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

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

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

az group delete --name <resource_group_name>

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

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