الخطوة التعليمية 2: أتمتة تغيير حجم الصور التي تم تحميلها باستخدام شبكة الأحداث

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

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

يمكنك استخدام Azure CLI ومدخل Azure لإضافة وظيفة تغيير الحجم إلى تطبيق تحميل لصورة موجودة.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • أنشئ حساب Azure Storage
  • نشر كود بدون خادم باستخدام وظائف Azure
  • إنشاء اشتراك حدث تخزين فقاعة في شبكة الحدث

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

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

لإكمال هذا البرنامج التعليمي:

أنشئ حساب Azure Storage

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

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

استخدم الأمر جديد-AzStorageAccount.

  1. حدد اسمًا لمجموعة الموارد.

    $resourceGroupName="myResourceGroup"
    
  2. حدد موقعًا لحساب التخزين.

    $location="eastus"    
    
  3. حدد اسم حساب التخزين الذي سيتم استخدامه من قبل الدالة.

    $functionstorage="<name of the storage account to be used by the function>"    
    
  4. إنشاء حساب تخزين.

    New-AzStorageAccount -ResourceGroupName $resourceGroupName -AccountName $functionstorage -Location $location -SkuName Standard_LRS -Kind StorageV2        
    

إنشاء تطبيق وظائف

يجب أن يكون لديك تطبيق دالة لاستضافة تنفيذ الدالة الخاصة بك. يوفر تطبيق الدالة بيئة لتنفيذ كود للدالة بدون خادم.

في الأمر التالي، قم بتوفير اسم تطبيق الدالة الفريد الخاص بك. يتم استخدام اسم تطبيق الدالة كمجال DNS افتراضي لتطبيق الدالة، وبالتالي يجب أن يكون الاسم فريدًا عبر جميع التطبيقات في Azure.

حدد اسمًا لتطبيق الدالة الذي سيتم إنشاؤه، ثم قم بإنشاء الدالة Azure.

إنشاء تطبيق دالة باستخدام الأمر جديد-AzFunctionApp.

  1. حدد اسمًا لتطبيق الوظائف.

    $functionapp="<name of the function app>"    
    
  2. إنشاء تطبيق الدالة

    New-AzFunctionApp -Location $location -Name $functionapp -ResourceGroupName $resourceGroupName -Runtime PowerShell -StorageAccountName $functionstorage    
    

الآن قم بتكوين تطبيق الدالة للاتصال بحساب تخزين الفقاعة الذي قمت بإنشائه في البرنامج التعليمي السابق.

تكوين تطبيق الوظائف

تحتاج الدالة إلى بيانات اعتماد لحساب تخزين الفقاعة، والتي تتم إضافتها إلى إعدادات التطبيق لتطبيق الدالة باستخدام إما تعيين إعدادات التكوين az functionapp أو الأمر Update-AzFunctionAppSetting.

storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName --name $blobStorageAccount --query connectionString --output tsv)

az functionapp config appsettings set --name $functionapp --resource-group $resourceGroupName --settings AzureWebJobsStorage=$storageConnectionString THUMBNAIL_CONTAINER_NAME=thumbnails THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2 FUNCTIONS_WORKER_RUNTIME=dotnet
$storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName --name $blobStorageAccount --query connectionString --output tsv)

Update-AzFunctionAppSetting -Name $functionapp -ResourceGroupName $resourceGroupName -AppSetting @{AzureWebJobsStorage=$storageConnectionString; THUMBNAIL_CONTAINER_NAME=thumbnails; THUMBNAIL_WIDTH=100 FUNCTIONS_EXTENSION_VERSION=~2; 'FUNCTIONS_WORKER_RUNTIME'='dotnet'}

FUNCTIONS_EXTENSION_VERSION=~2يجعل الإعداد تطبيق الدالة يعمل على الإصدار 2.x من وقت تشغيل دوال Azure.

يمكنك الآن نشر مشروع كود دالة إلى تطبيق الدالة هذه.

نشر كود الدالة

نموذج C# تغيير حجم الدالة متوفر على GitHub. نشر مشروع الكود هذا إلى تطبيق الدالة باستخدام أمر تكوين مصدر نشر functionapp az.

az functionapp deployment source config --name $functionapp --resource-group $resourceGroupName --branch master --manual-integration --repo-url https://github.com/Azure-Samples/function-image-upload-resize

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

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

يستخدم هذا المشروع EventGridTrigger لنوع المشغل. يوصى باستخدام مشغل شبكة الحدث عبر مشغلات HTTP العامة. تقوم شبكة الحدث تلقائيًّا بالتحقق من صحة مشغلات دالة شبكة الحدث. مع مشغلات HTTP عامة، يجب عليك تنفيذ استجابة التحقق من الصحة.

لمعرفة المزيد حول هذه الدالة، راجع ملفات function.js و run.csx.

يتم نشر كود مشروع الدالة مباشرة من مستودع النموذج العام. لمعرفة المزيد حول خيارات النشر لدوال Azure، راجع النشر المستمر لدوال Azure.

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

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

  1. في مدخل Azure، في أعلى الصفحة، ابحث عن تطبيق الوظيفة الذي قمت بإنشائه وحدده Function App واختره. حدد دوال واختار دالة الصورة المصغرة.

    Choose the Thumbnail function in the portal

  2. حدد التكامل ثم اختر مشغل شبكة الحدث وحدد إنشاء اشتراك شبكة الحدث.

    Navigate to Add Event Grid subscription in the Azure portal

  3. استخدم إعدادات الاشتراك في الحدث كما هو محدد في الجدول.

    Create event subscription from the function in the Azure portal

    الإعداد القيمة المقترحة الوصف
    الاسم imageresizersub الاسم الذي يحدد اشتراك الحدث الجديد الخاص بك.
    نوع الموضوع حسابات التخزين⁧ اختر موفر حدث لحساب التخزين.
    الاشتراك اشتراكك في Azure افتراضيًّا، يتم تحديد اشتراك Azure الحالي الخاص بك.
    مجموعة الموارد myResourceGroup حدد استخدام الموجود واختر مجموعة الموارد التي كنت تستخدمها في هذا البرنامج التعليمي.
    المورد حساب تخزين الفقاعة الخاص بك اختر حساب تخزين الفقاعة الذي أنشأته.
    اسم موضوع النظام imagestoragesystopic حدد اسمًا لموضوع النظام. للتعرف على موضوعات النظام، راجع نظرة عامة على موضوعات النظام.
    أنواع الحدث الفقاعة التي تم إنشاؤها قم بإلغاء تحديد كافة الأنواع الأخرى غير الفقاعة التي تم إنشاؤها. يتم تمرير أنواع الحدث فقط Microsoft.Storage.BlobCreated إلى الدالة.
    نوع نقطة النهاية تم تجديدها تلقائيًّا المعرفة مسبقًا كدالة Azure.
    نقطة النهاية تم تجديدها تلقائيًّا اسم الدالة. في هذه الحالة، إنها صورة مصغرة.
  4. قم بالتبديل إلى علامة تبويب عوامل التصفية، ثم قم بالإجراءات التالية:

    1. حدد تمكين خيار تصفية الموضوع.

    2. بالنسبة إلى الموضوع الذي يبدأ به، أدخل القيمة التالية: / blobServices/default/containers/images/.

      Specify filter for the event subscription

  5. حدد إنشاء لإضافة اشتراك الحدث لإنشاء اشتراك حدث يقوم بتشغيل Thumbnail الوظيفة عند إضافة نقطة إلى الحاوية images . تقوم الدالة بإعادة تغيير حجم الصور وإضافتها إلى thumbnails الحاوية.

الآن بعد أن تم تكوين الخدمات الخلفية، يمكنك اختبار وظيفة تغيير حجم الصورة في نموذج التطبيق على شبكة الإنترنت.

اختبر نموذج التطبيق

لاختبار تغيير حجم الصورة في تطبيق الويب، استعرض للوصول إلى عنوان URL للتطبيق المنشور. عنوان URL الافتراضي لتطبيق الويب هو https://<web_app>.azurewebsites.net .

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

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

Screenshot that shows a published web app titled

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

في هذا البرنامج التعليمي، تعلمت كيفية:

  • إنشاء حساب تخزين Azure عام
  • نشر كود بدون خادم باستخدام وظائف Azure
  • إنشاء اشتراك حدث تخزين فقاعة في شبكة الحدث

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