مشاركة عبر


التعليم: تفعيل وظائف Azure على حاويات blob باستخدام اشتراك حدث

تقوم الإصدارات السابقة من مشغل Azure Functions Blob Storage باستطلاع حاوية التخزين الخاصة بك للتغييرات. تستخدم الإصدارات الأحدث من امتداد Blob Storage (5.x+) بدلا من ذلك اشتراك حدث شبكة الأحداث على الحاوية. يقلل اشتراك الحدث هذا من زمن الانتقال عن طريق تشغيل الدالة على الفور مع حدوث تغييرات في الحاوية المشتركة.

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

  • إنشاء دالة تم تشغيل Blob Storage المستندة إلى الحدث في مشروع جديد.
  • تحقق محليا داخل كود فيجوال ستوديو باستخدام محاكي أزورايت.
  • إنشاء حاوية تخزين كائن ثنائي كبير الحجم في حساب تخزين جديد في Azure.
  • إنشاء تطبيق دالة في خطة Flex Consumption.
  • إنشاء اشتراك حدث إلى حاوية blob الجديدة.
  • نشر التعليمات البرمجية للدالة والتحقق من صحتها في Azure.

تدعم هذه المقالة الإصدار 4 من نموذج البرمجة Node.js ل Azure Functions.

تدعم هذه المقالة الإصدار 2 من نموذج برمجة Python ل Azure Functions.

تنشئ هذه المقالة تطبيق C# الذي يعمل في وضع العامل المعزول، والذي يدعم .NET 8.0.

تلميح

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

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

  • ملحق Azure Storage ل Visual Studio Code.

إشعار

إضافة Azure Storage ل Visual Studio Code في وضع المعاينة.

إنشاء دالة Blob التي تم تشغيلها

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

  1. في Visual Studio Code، اضغط على F1 لفتح لوحة الأوامر، وأدخل Azure Functions: Create Function...، وحدد إنشاء مشروع جديد.

  2. بالنسبة لمساحة عمل المشروع، حدد موقع دليل. تأكد من إنشاء مجلد جديد أو اختيار مجلد فارغ لمساحة عمل المشروع.

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

  3. في المطالبات، قم بتوفير المعلومات التالية:

    المطالبة الإجراء
    تحديد لغة حدد C#‎.
    حدد وقت تشغيل .NET حدد .NET 8.0 Isolated LTS.
    تحديد قالب للدالة الأولى لمشروعك حدد Azure Blob Storage trigger (using Event Grid).
    توفير اسم دالة أدخل EventGridBlobTrigger.
    توفير مساحة اسم أدخل My.Functions.
    حدد الإعداد من "local.settings.json" حدد Create new local app setting.
    تحديد الاشتراك حدد اشتراكك، إذا لزم الأمر.
    تحديد حساب تخزين استخدم محاكي Azurite للتخزين المحلي.
    المسار داخل حساب التخزين الخاص بك الذي سيراقبه المشغل اقبل القيمة الافتراضية samples-workitems.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد Open in current window.
    المطالبة الإجراء
    تحديد لغة حدد Python.
    تحديد نموذج برمجة Python تحديد Model V2
    حدد مترجم Python لإنشاء بيئة افتراضية حدد مترجم Python المفضل لديك. إذا لم يظهر خيار، أدخل المسار الكامل إلى ثنائي Python.
    تحديد قالب للدالة الأولى لمشروعك حدد Blob trigger. (القالب المستند إلى الحدث غير متوفر بعد.)
    توفير اسم دالة أدخل EventGridBlobTrigger.
    المسار داخل حساب التخزين الخاص بك الذي سيراقبه المشغل اقبل القيمة الافتراضية samples-workitems.
    حدد الإعداد من "local.settings.json" حدد Create new local app setting.
    تحديد الاشتراك حدد اشتراكك، إذا لزم الأمر.
    تحديد حساب تخزين استخدم محاكي Azurite للتخزين المحلي.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد Open in current window.
    المطالبة الإجراء
    تحديد لغة حدد Java.
    تحديد إصدار من Java حدد Java 11 أو Java 8، إصدار Java الذي تعمل عليه وظائفك في Azure والتي تحققت منها محليا.
    إدخال معرف مجموعة حدد com.function.
    إدخال معرف بيانات اصطناعية حدد EventGridBlobTrigger (أو الافتراضي).
    إدخال إصدار حدد 1.0-SNAPSHOT.
    إدخال اسم حزمة حدد com.function.
    إدخال اسم تطبيق اقبل الاسم الذي تم إنشاؤه الذي يبدأ بـ EventGridBlobTrigger.
    تحديد أداة الإنشاء لمشروع Java حدد Maven.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد Open in current window.

    يتم إنشاء دالة HTTP المشغلة (HttpExample) لك. لن تستخدم هذه الدالة ويجب عليك بدلا من ذلك إنشاء دالة جديدة.

    المطالبة الإجراء
    حدد اللغة الخاصة بمشروع الدالة حدد TypeScript.
    تحديد نموذج برمجة TypeScript حدد Model V4.
    تحديد قالب للدالة الأولى لمشروعك حدد Azure Blob Storage trigger (using Event Grid).
    توفير اسم دالة أدخل EventGridBlobTrigger.
    حدد الإعداد من "local.settings.json" حدد Create new local app setting.
    تحديد الاشتراك حدد اشتراكك، إذا لزم الأمر.
    تحديد حساب تخزين استخدم محاكي Azurite للتخزين المحلي.
    المسار داخل حساب التخزين الخاص بك الذي سيراقبه المشغل اقبل القيمة الافتراضية samples-workitems.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد Open in current window.
    المطالبة الإجراء
    حدد اللغة الخاصة بمشروع الدالة حدد JavaScript.
    تحديد نموذج برمجة JavaScript حدد Model V4.
    تحديد قالب للدالة الأولى لمشروعك حدد Azure Blob Storage trigger (using Event Grid).
    توفير اسم دالة أدخل eventGridBlobTrigger.
    حدد الإعداد من "local.settings.json" حدد Create new local app setting.
    تحديد الاشتراك حدد اشتراكك، إذا لزم الأمر.
    تحديد حساب تخزين استخدم محاكي Azurite للتخزين المحلي.
    المسار داخل حساب التخزين الخاص بك الذي سيراقبه المشغل اقبل القيمة الافتراضية samples-workitems.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد Open in current window.
    المطالبة الإجراء
    حدد اللغة الخاصة بمشروع الدالة حدد PowerShell.
    تحديد قالب للدالة الأولى لمشروعك حدد Azure Blob Storage trigger (using Event Grid).
    توفير اسم دالة أدخل EventGridBlobTrigger.
    حدد الإعداد من "local.settings.json" حدد Create new local app setting.
    تحديد الاشتراك حدد اشتراكك، إذا لزم الأمر.
    تحديد حساب تخزين استخدم محاكي Azurite للتخزين المحلي.
    المسار داخل حساب التخزين الخاص بك الذي سيراقبه المشغل اقبل القيمة الافتراضية samples-workitems.
    تحديد الطريقة التي تريد فتح مشروعك بها حدد Open in current window.
  1. في لوحة الأوامر، أدخل Azure Functions: Create Function... وحدد EventGridBlobTrigger. إذا لم تشاهد هذا القالب، فحدد أولا تغيير عامل تصفية>القالب الكل.

  2. في المطالبات، قم بتوفير المعلومات التالية:

    المطالبة الإجراء
    إدخال اسم حزمة حدد com.function.
    توفير اسم دالة أدخل EventGridBlobTrigger.
    حدد الإعداد من "local.settings.json" حدد Create new local app setting.
    تحديد الاشتراك حدد Subscription الخاص بك.
    تحديد حساب تخزين استخدم محاكي Azurite للتخزين المحلي.
    المسار داخل حساب التخزين الخاص بك الذي سيراقبه المشغل اقبل القيمة الافتراضية samples-workitems.

لديك الآن دالة يمكن تشغيلها بواسطة الأحداث في حاوية Blob Storage.

تحديث مصدر المشغل

تحتاج إلى تغيير مصدر المحفز من مصدر مشغل Blob الافتراضي (استطلاع الحاويات) إلى مصدر اشتراك الحدث.

  1. افتح ملف المشروع function_app.py. ترى تعريفا للوظيفة EventGridBlobTrigger التي تستخدم الديكوريتر blob_trigger .

  2. قم بتحديث مصمم الديكور عن طريق إضافة source = "EventGrid". يجب أن تبدو دالتك الآن على النحو التالي:

    @app.blob_trigger(arg_name="myblob", source="EventGrid", path="samples-workitems",
                               connection="<STORAGE_ACCOUNT>") 
    def EventGridBlobTrigger(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob"
                f"Name: {myblob.name}"
                f"Blob Size: {myblob.length} bytes")
    

    في هذا التعريف، source = "EventGrid" يشير إلى أن اشتراك حدث في samples-workitems حاوية blob يستخدم كمصدر للحدث الذي يبدأ المشغل.

(اختياري) مراجعة التعليمات البرمجية

افتح الملف الذي تم إنشاؤه EventGridBlobTrigger.cs . ترى تعريفا لدالة EventGridBlobTrigger يبدو كالتالي:

[Function(nameof(EventGridBlobTriggerCSharp))]
public async Task Run([BlobTrigger("PathValue/{name}", Source = BlobTriggerSource.EventGrid, Connection = "ConnectionValue")] Stream stream, string name)
{
    using var blobStreamReader = new StreamReader(stream);
    var content = await blobStreamReader.ReadToEndAsync();
    _logger.LogInformation("C# Blob Trigger (using Event Grid) processed blob\n Name: {name} \n Data: {content}", name, content);
}

في هذا التعريف، Source = BlobTriggerSource.EventGrid يشير إلى أن اشتراك الحدث في حاوية الكتلة (في المثال PathValue) هو مصدر الحدث الذي يبدأ المشغل.

افتح الملف الذي تم إنشاؤه EventGridBlobTrigger.java . ترى تعريفا لدالة EventGridBlobTrigger يبدو كالتالي:

    @FunctionName("EventGridBlobTrigger")
    @StorageAccount("<STORAGE_ACCOUNT>")
    public void run(
        @BlobTrigger(name = "content", source = "EventGrid", path = "samples-workitems/{name}", dataType = "binary") byte[] content,
        @BindingName("name") String name,
        final ExecutionContext context
    ) {
        context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n  Size: " + content.length + " Bytes");
    }

في هذا التعريف، source = EventGrid يشير إلى أن اشتراك حدث في samples-workitems حاوية blob هو مصدر الحدث الذي يبدأ المشغل.

في EventGridBlobTrigger المجلد ، افتح function.json الملف وابحث عن تعريف ربط مثل هذا مع من typeblobTrigger و source من EventGrid:

{
    "bindings": [
        {
            "name": "InputBlob",
            "type": "blobTrigger",
            "direction": "in",
            "path": "samples-workitems/{name}",
            "source": "EventGrid",
            "connection":""
        }
    ]
}

تشير إلى أن pathsamples-workitems حاوية الكتلة هي مصدر الحدث الذي يبدأ المحفز.

افتح الملف الذي تم إنشاؤه EventGridBlobTrigger.js . ترى تعريفا لدالة يبدو كالتالي:

const { app } = require('@azure/functions');

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: (blob, context) => {
        context.log(
            `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
        );
    },
});

في هذا التعريف، يشير a source of EventGrid إلى أن اشتراك حدث في samples-workitems حاوية blob هو مصدر الحدث الذي يبدأ المحفز.

افتح الملف الذي تم إنشاؤه EventGridBlobTrigger.ts . ترى تعريفا لدالة يبدو كالتالي:

import { app, InvocationContext } from '@azure/functions';

export async function storageBlobTrigger1(blob: Buffer, context: InvocationContext): Promise<void> {
    context.log(
        `Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
    );
}

app.storageBlob('storageBlobTrigger1', {
    path: 'samples-workitems/{name}',
    connection: 'MyStorageAccountAppSetting',
    source: 'EventGrid',
    handler: storageBlobTrigger1,
});

في هذا التعريف، يشير a source of EventGrid إلى أن اشتراك حدث في samples-workitems حاوية blob هو مصدر الحدث الذي يبدأ المحفز.

ترقية ملحق التخزين

لاستخدام مشغل تخزين الكتل القائم على شبكة الأحداث، تحتاج إلى الإصدار 5.x أو أحدث من امتداد Azure Functions Storage.

لترقية مشروعك إلى النسخة المطلوبة من التوسعة، قم بتشغيل هذا dotnet add package الأمر في نافذة الطرفية:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 
  1. افتح host.json ملف المشروع وراجع العنصر extensionBundle .

  2. إذا extensionBundle.version لم يكن على الأقل 3.3.0، فاستبدل extensionBundle العنصر بهذا الإصدار:

    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
    

إعداد محاكي التخزين المحلي

يستخدم Visual Studio Code Azurite لمحاكاة خدمات Azure Storage عند التشغيل محليا. استخدم Azurite لمحاكاة خدمة Azure Blob Storage أثناء التطوير المحلي والاختبار.

  1. إذا لم تكن قد فعلت ذلك بالفعل، فقم بتثبيت ملحق Azurite v3 ل Visual Studio Code.

  2. تحقق من أن ملف local.settings.json قد "UseDevelopmentStorage=true" تم تعيينه ل AzureWebJobsStorage. هذا الإعداد يخبر Core Tools باستخدام Azurite بدلا من اتصال حساب تخزين حقيقي عند التشغيل محليا.

  3. اضغط F1 لفتح لوحة الأوامر، اكتب Azurite: Start Blob Service، ثم اضغط إدخال. هذا الإجراء يبدأ محاكي خدمة تخزين Azurite Blob.

  4. حدد أيقونة Azure في شريط النشاط، وقم بتوسيع >>، وانقر بزر الماوس الأيمن فوق Blob Containers، وحدد Create Blob Container...، وأدخل الاسم ، واضغط على Enter.

    لقطة شاشة توضح كيفية تحديد Create Blob Container في المحاكاة المحلية في Visual Studio Code.

  5. قم بتوسيع Blob Containers>samples-workitems وحدد Upload files....

    لقطة شاشة توضح كيفية تحديد Upload Files في حاوية samples-workitems في المحاكاة المحلية في Visual Studio Code.

  6. اختر ملفا لتحميله إلى الحاوية المحاكية محليا. وظيفتك تعالج هذا الملف لاحقا للتحقق من كود الدالة وتصحيحه. قد يعمل الملف النصي على أفضل نحو مع رمز قالب مشغل Blob.

تشغيل الدالة محليًا

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

  1. قم بتعيين أي نقاط توقف واضغط على F5 لبدء مشروعك لتصحيح الأخطاء المحلي. يجب تشغيل Azure Functions Core Tools في نافذة Terminal.

  2. مرة أخرى في منطقة Azure، قم بتوسيع Workspace>Local Project>Functions، وانقر بزر الماوس الأيمن فوق الدالة، وحدد Execute Function Now....

    لقطة شاشة توضح كيفية تحديد الزر Execute Function Now من الدالة في مساحة عمل المشروع المحلي في Visual Studio Code.

  3. في مربع الحوار نص الطلب، اكتب samples-workitems/<TEST_FILE_NAME>، واستبدل <TEST_FILE_NAME> باسم الملف الذي قمت بتحميله في محاكي التخزين المحلي.

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

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

الآن بعد أن نجحت في التحقق من صحة التعليمات البرمجية للدالة محليًا، حان الوقت لنشر المشروع إلى تطبيق وظائف جديد في Azure.

إعداد حساب Azure Storage

تتطلب اشتراكات الأحداث في Azure Storage حساب تخزين v2 للأغراض العامة. يمكنك استخدام ملحق Azure Storage ل Visual Studio Code لإنشاء حساب التخزين هذا.

  1. في كود Visual Studio، اضغط F1 لفتح لوحة الأوامر وإدخال Azure Storage: Create Storage Account.... قدم هذه المعلومات عند مطالبتك:

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

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

  2. اضغط على F1 مرة أخرى وفي لوحة الأوامر أدخل Azure Storage: Create Blob Container.... قدم هذه المعلومات عند مطالبتك:

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

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

إنشاء تطبيق الدالة

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

  1. في لوحة الأوامر، أدخل Azure Functions: Create function app in Azure... (متقدم).

  2. اتبع التعليمات وقدم هذه المعلومات:

    المطالبة التحديد
    أدخل اسما فريدا عالميا لتطبيق الوظيفة الجديد اكتب اسماً فريداً عالمياً يحدد Function App الجديد الخاص بك، ثم حدد إدخال. الأحرف الصالحة لاسم تطبيق الوظائف هي a-z و0-9 و-.
    اختر خطة استضافة اختر Flex Consumption، وهو خطة الاستضافة الموصى بها للاستضافة بدون خوادم.
    حدد موقعاً للموارد الجديدة حدد موقعًا في منطقة قريبة منك أو بالقرب من الخدمات الأخرى التي تصل الدوال إليها.
    تحديد مكدس ذاكرة مؤقتة لوقت التشغيل حدد إصدار اللغة الذي تقوم بتشغيله حاليا محليا.
    اختر حجم المثيل اختر 512. يمكنك دائما تغيير إعداد حجم النسخة إلى حجم أكبر لاحقا.
    أدخل الحد الأقصى لعدد المثيلات اختر القيمة الافتراضية 100، مما يحد من إجمالي التوسيع لتطبيقك. يمكنك أيضا اختيار قيمة مختلفة بين 40 و1000.
    تحديد مجموعة موارد اختر إنشاء مجموعة موارد جديدة واقبل الإعداد الافتراضي أو أدخل اسما آخر للمجموعة الجديدة الفريدة في اشتراكك.
    تحديد نوع مصادقة المورد اختر الهوية المدارة بحيث يتصل تطبيقك بالموارد البعيدة باستخدام مصادقة Microsoft Entra ID بدلا من استخدام الأسرار المشتركة (سلاسل الاتصال والمفاتيح)، والتي تكون أقل أمانا.
    اختر هوية معينة للمستخدم اختر إنشاء هوية جديدة معينة من قبل المستخدم.
    حدد موقعاً للموارد الجديدة اختر نفس المنطقة التي أنشأتها حساب التخزين. إذا لم يكن هذا المنطقة مدعوما من قبل تشغيل استهلاك المرن لأي سبب، فلن يتم عرضه. في هذه الحالة، اختر منطقة قريبة بدلا من ذلك. لمزيد من المعلومات، راجع عرض المناطق المدعومة حاليا.
    تحديد حساب تخزين اختر اسم حساب التخزين الذي قمت بإنشائه.
    اختر مورد Application Insights لتطبيقك اختر إنشاء مورد Application Insights جديد وفي المطالبة قم بتوفير اسم المثيل المستخدم لتخزين بيانات وقت التشغيل من وظائفك.

    يظهر إعلام بعد إنشاء تطبيق الوظائف. حدد عرض الإخراج في هذا الإعلام لعرض نتائج الإنشاء، بما في ذلك موارد Azure التي قمت بإنشائها.

نشر التعليمات البرمجية للدالة

هام

يستبدل التوزيع إلى تطبيق وظائف موجود دائمًا محتويات هذا التطبيق في Azure.

  1. في لوحة الأوامر، أدخل ثم حدد Azure Functions: Deploy to Function App.

  2. حدد تطبيق الوظائف الذي أنشأته للتو. عند مطالبتك بالكتابة فوق عمليات التوزيع السابقة، حدد Deploy لنشر التعليمات البرمجية للدالة إلى مورد تطبيق الوظائف الجديد.

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

    لقطة شاشة تظهر نافذة View Output

تحديث إعدادات التطبيق

نظرا لأن عملية النشر لا ترفع تلقائيا إعدادات التطبيق المطلوبة من الملف local.settings.json ، يجب عليك رفعها إلى تطبيق الوظائف الخاص بك حتى تعمل وظيفتك بشكل صحيح في Azure.

  1. في لوحة الأوامر، أدخل Azure Functions: Download Remote Settings...، وفي خيار اختيار مورد اختر اسم تطبيق الدالة.

  2. عند المطالبة AzureWebJobsStorage بأن الإعداد موجود بالفعل، حدد نعم للكتابة فوق إعداد المحاكي المحلي باستخدام حساب التخزين الفعلي سلسلة الاتصال من Azure.

  3. في local.settings.json الملف، استبدل إعداد المحاكي المحلي بنفس سلسلة الاتصال المستخدمة.AzureWebJobsStorage

  4. قم بإزالة FUNCTIONS_WORKER_RUNTIME الإدخال، وهو غير مدعوم في خطة استهلاك Flex.

  5. في لوحة الأوامر، أدخل Azure Functions: Upload Local Settings...، وفي خيار اختيار مورد اختر اسم تطبيق الدالة.

الآن كل من مضيف الوظائف والمشغل يشتركان في نفس حساب التخزين.

إنشاء عنوان URL لنقطة النهاية

لإنشاء اشتراك حدث، تحتاج إلى تزويد Event Grid بعنوان URL لنقطة النهاية المحددة للإبلاغ عن أحداث Blob Storage. يتكون عنوان URL لملحق blob هذا من هذه الأجزاء:

الجزء مثال
عنوان URL لتطبيق الدالة الأساسية https://<FUNCTION_APP_NAME>.azurewebsites.net
مسار خاص ب Blob /runtime/webhooks/blobs
سلسلة استعلام الدالة ?functionName=Host.Functions.<FUNCTION_NAME>
مفتاح الوصول إلى ملحق Blob &code=<BLOB_EXTENSION_KEY>

بينما يتصل تطبيقك بحساب التخزين باستخدام مصادقة Microsoft Entra ID، يساعد مفتاح الوصول إلى امتداد blob في حماية webhook الخاص بك من الوصول غير المصرح به. للعثور على مفتاح الوصول إلى امتداد الكتلة الخاصة بك:

  1. في Visual Studio Code، اختر أيقونة Azure في شريط النشاط. في الموارد، قم بتوسيع اشتراكك، وقم بتوسيع Function App، وانقر بزر الماوس الأيمن فوق تطبيق الوظائف الذي أنشأته، وحدد فتح في المدخل.

  2. ضمن Functions في القائمة اليسرى، حدد مفاتيح التطبيق.

  3. تحت مفاتيح النظام، اختر المفتاح المسمى blobs_extension، وانسخ قيمة المفتاح.

    أدرج هذه القيمة في سلسلة الاستعلام الخاصة بعنوان URL الجديد لنقطة الطرف.

  4. أنشئ عنوان URL جديد لنقطة النهاية لمشغل Blob Storage استنادًا إلى المثال التالي:

    https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.EventGridBlobTrigger&code=<BLOB_EXTENSION_KEY>
    

    في هذا المثال، استبدل <FUNCTION_APP_NAME> باسم تطبيق الوظائف الخاص بك، وبالقيمة <BLOB_EXTENSION_KEY> التي حصلت عليها من المدخل. إذا استخدمت اسما مختلفا للدالة، فاستبدل EventGridBlobTrigger باسم الدالة هذا.

يمكنك الآن استخدام عنوان URL لنقطة النهاية هذا لإنشاء اشتراك حدث.

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

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

  1. في Visual Studio Code، اختار رمز Azure من شريط النشاط. في الموارد، قم بتوسيع اشتراكك، وتوسيع حسابات التخزين، وانقر بزر الماوس الأيمن فوق حساب التخزين الذي أنشأته سابقًا، وحدد فتح في المدخل.

  2. سجل الدخول إلى مدخل Microsoft Azure وقم بتدوين مجموعة الموارد لحساب التخزين الخاص بك. أنشئ مواردك الأخرى في نفس المجموعة لتسهيل تنظيف الموارد بعد الانتهاء.

  3. حدد الخيار Events من القائمة اليسرى.

    حدث إضافة حساب تخزين

  4. في نافذة الأحداث، حدد الزر + اشتراك حدث، وقم بتوفير القيم من الجدول التالي في علامة التبويب أساسيات:

    الإعدادات القيمة المقترحة ‏‏الوصف‬
    الاسم myBlobEventSub الاسم الذي يحدد اشتراك الحدث. استخدم الاسم للعثور بسرعة على اشتراك الحدث.
    مخطط الحدث مخطط Event Grid استخدم المخطط الافتراضي للأحداث.
    اسم موضوع النظام samples-workitems-blobs اسم الموضوع، الذي يمثل الحاوية. يتم إنشاء الموضوع مع الاشتراك الأول، وتستخدمه لاشتراكات الفعاليات المستقبلية.
    تصفية إلى أنواع الأحداث كائن ثنائي كبير الحجم تم إنشاؤه
    نوع نقطة النهاية إخطار على الويب يستخدم مشغل blob storage نقطة نهاية إخطار على الويب.
    نقطه النهايه نقطة نهاية URL المستندة إلى Azure استخدم نقطة نهاية URL التي قمت ببنائها، والتي تتضمن قيمة المفتاح.
  5. حدد تأكيد التحديد للتحقق من صحة عنوان URL لنقطة النهاية.

  6. حدد علامة التبويب عوامل التصفية وقدم المعلومات التالية إلى المطالبات:

    الإعدادات القيمة المقترحة ‏‏الوصف‬
    تمكين تصفية الموضوع تمكين تمكين التصفية التي يمكن للكائنات الثنائية كبيرة الحجم تشغيل الدالة عليها.
    يبدأ الموضوع ب /blobServices/default/containers/<CONTAINER_NAME>/blobs/<BLOB_PREFIX> استبدل <CONTAINER_NAME و <BLOB_PREFIX> بالقيم التي تختارها. هذا الإعداد يشغل الاشتراك فقط للكتل التي تبدأ بالحاوية BLOB_PREFIX وتكون في CONTAINER_NAME الحاوية.
    ينتهي الموضوع ب .النص يضمن أن الدالة تفعل فقط بواسطة الكتل التي تنتهي ب .txt.

    لمزيد من المعلومات حول التصفية إلى كائنات ثنائية كبيرة الحجم معينة، راجع تصفية الأحداث لمراكز أحداث Azure.

  7. ثم حدد إنشاء لإنشاء اشتراك الحدث.

تحميل ملف إلى الحاوية

يمكنك رفع ملف من جهازك إلى حاوية تخزين blob باستخدام كود Visual Studio.

  1. في Visual Studio Code، اضغط على F1 لفتح لوحة الأوامر واكتب Azure Storage: Upload Files....

  2. في مربع الحوار فتح ، اختر ملفا، ويفضل أن يكون ملفا نصيا، وحدد تحميل .

  3. قدِّم المعلومات التالية في المطالبات:

    الإعدادات القيمة المقترحة ‏‏الوصف‬
    أدخل الدليل الوجهة لهذا التحميل افتراضي اقبل القيمة الافتراضية ل /، وهي جذر الحاوية.
    حدد موردًا اسم حساب التخزين اختر اسم حساب التخزين الذي أنشأته في خطوة سابقة.
    حدد نوع مورد حاويات كائن ثنائي كبير الحجم أنت تقوم بالتحميل إلى حاوية كائن ثنائي كبير الحجم.
    حدد حاوية كائن ثنائي كبير الحجم samples-workitems هذه القيمة هي اسم الحاوية التي قمت بإنشائها في خطوة سابقة.

تصفح نظام الملفات المحلي لديك للعثور على ملف للرفع، ثم اختر زر الرفع لرفع الملف.

التحقق من الدالة في Azure

عندما تقوم برفع ملف إلى حاوية samples-worksitems ، يتم تفعيل الوظيفة. يمكنك التحقق من الوظيفة من خلال التحقق من العناصر التالية في بوابة Azure:

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

  2. مرة أخرى في صفحة تطبيق الوظائف في المدخل، ضمن Functions ابحث عن وظيفتك وحدد Invocations والمزيد. يجب أن تشاهد تتبعات مكتوبة من تنفيذ الدالة الناجح.

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

عند المتابعة إلى الخطوة التالية وإضافة ربط قائمة انتظار تخزين Azure لدالتك، ستحتاج إلى الاحتفاظ بكل مواردك في مكانها للاستفادة مما قمت به بالفعل.

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

  1. لفتح لوحة الأوامر في تعليمة Visual Studio البرمجية، اضغط على F1. في لوحة الأوامر، ابحث عن Azure: Open in portal واختره.

  2. اختر التطبيق الخاص بالوظائف، واضغط زر Enter. تفتح صفحة تطبيق الوظيفة في مدخل Microsoft Azure.

  3. في علامة التبويب نظرة عامة حدد الارتباط المسمى بجوار Resource group.

    لقطة شاشة تعرض تحديد مجموعة الموارد لحذفها من صفحة تطبيق الوظائف.

  4. في صفحة مجموعة الموارد، راجع قائمة الموارد المدرجة وتحقق من أنها هي التي تريد حذفها.

  5. حدد حذف مجموعة الموارد، واتبع الإرشادات.

    قد يستغرق الحذف دقيقتين. عند الانتهاء من ذلك، يظهر تنبيه لبضع ثوان. يمكنك أيضا تحديد رمز الجرس في أعلى الصفحة لعرض التنبيه.

لمعرفة المزيد حول تكاليف الوظائف، يرجى الاطلاع على تقدير تكاليف خطة الاستهلاك.

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