الاتصال Azure Functions إلى Azure Storage باستخدام رمز Visual Studio

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

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

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

تكوين البيئة المحلية الخاصة بك

قبل بدء هذه المقالة، يجب أن تستوفي المتطلبات التالية:

  • قم بتثبيت ملحق تخزين Azure ل Visual Studio Code.

  • تثبيت Azure Storage Explorer. مستكشف التخزين هو أداة ستستخدمها لفحص رسائل قائمة الانتظار التي تم إنشاؤها بواسطة ربط المخرجات. يتم دعم مستكشف التخزين على أنظمة التشغيل macOS و Windows و Linux.

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

تحميل إعدادات تطبيق الوظيفة

في مقالة البدء السريع السابقة قمت بإنشاء تطبيق وظيفي في Azure مع حساب التخزين المطلوب. يتم تخزين سلسلة الاتصال لهذا الحساب بشكل آمن في إعدادات التطبيق في Azure. في هذه المقالة، يمكنك كتابة رسائل إلى قائمة انتظار التخزين في نفس الحساب. للاتصال بحساب التخزين عند تشغيل الدالة محليًا، يجب تنزيل إعدادات التطبيق إلى local.settings.js في الملف.

  1. اضغط على المفتاح F1 لفتح لوحة الأوامر، ثم ابحث عن الأمر Azure Functions: Download Remote Settings....وقم بتشغيله .

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

    هام

    نظرا لأنه يحتوي على أسرار، لا يتم نشر الملف local.settings.json مطلقا، ويتم استبعاده من التحكم في المصدر.

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

تسجيل ملحقات الربط

نظرا لأنك تستخدم ربط مخرجات تخزين قائمة انتظار، يجب أن يكون لديك ملحق ارتباطات التخزين مثبتا قبل تشغيل المشروع.

تم تكوين مشروعك لاستخدام حزم الملحقات، والتي تقوم تلقائيا بتثبيت مجموعة محددة مسبقا من حزم الملحقات.

يتم تمكين استخدام حزم الملحقات في الملف host.json في جذر المشروع ، والذي يظهر كما يلي:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[1.*, 2.0.0)"
  } 
}

الآن، يمكنك إضافة ارتباط مخرجات التخزين إلى مشروعك.

باستثناء HTTP والمشغلات الموقتة، يتم تنفيذ الارتباطات كحزم ملحقة. قم بتشغيل الأمر التالي dotnet add package في نافذة المحطة الطرفية لإضافة حزمة ملحق التخزين إلى مشروعك.

dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage 

الآن، يمكنك إضافة ارتباط مخرجات التخزين إلى مشروعك.

إضافة ربط الإخراج

في الدالات، يتطلب كل نوع من أنواع الربط تعريف direction، typeوفريد name ليتم تعريفه في ملف function.json. تعتمد الطريقة التي تحدد بها هذه السمات على لغة تطبيق الوظائف.

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

لإنشاء ربط ، انقر بزر الماوس الأيمن (Ctrl + انقر فوق macOS) function.json على الملف في مجلد HttpTrigger واختر إضافة ربط .... اتبع المطالبات لتحديد خصائص الربط التالية للربط الجديد:

المطالبة القيمة الوصف
تحديد اتجاه الربط out الربط هو ربط الإخراج.
حدد الربط مع الاتجاه... Azure Queue Storage الربط عبارة عن ربط قائمة انتظار تخزين Azure.
الاسم المستخدم لتحديد هذا الربط في التعليمات البرمجية الخاصة بك msg الاسم الذي يحدد معلمة الربط المشار إليها في التعليمات البرمجية.
قائمة الانتظار التي سيتم إرسال الرسالة إليها outqueue اسم قائمة الانتظار التي يكتب إليها الربط. عندما لا يكون اسم قائمة الانتظار موجودا، يقوم الربط بإنشائه عند الاستخدام الأول.
حدد الإعداد من "local.setting.json" AzureWebJobsStorage اسم إعداد تطبيق يحتوي على سلسلة الاتصال لحساب التخزين. يحتوي AzureWebJobsStorage الإعداد على سلسلة الاتصال لحساب التخزين الذي أنشأته باستخدام تطبيق الوظيفة.

تتم إضافة ربط إلى الصفيف bindings في function.json، والذي يجب أن يبدو كما يلي:

{
  "type": "queue",
  "direction": "out",
  "name": "msg",
  "queueName": "outqueue",
  "connection": "AzureWebJobsStorage"
}

في أحد مشروعات C#، يتم تعريف عمليات الربط كسمات ربط على أسلوب الدالة. تعتمد التعريفات المحددة على ما إذا كان التطبيق يعمل قيد التنفيذ (مكتبة الفئة C# ) أو في عملية معزولة.

فتح ملف المشروع HttpExample.cs وأضف المعلمة التالية إلى Run تعريف الأسلوب:

[Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg,

msgالمعلمة عبارة عن النوع ICollector<T>، ويمثل مجموعة من السلاسل التي تتم كتابتها كرسائل لربط إخراج عند اكتمال الدالة. في هذه الحالة، الإخراج عبارة عن قائمة انتظار تخزين مسماة outqueue. يتم تعيين سلسلة الاتصال لحساب التخزين حسب StorageAccountAttribute. تشير هذه السمة إلى الإعداد الذي يحتوي على سلسلة اتصال حساب التخزين، ويمكن تطبيقه على مستوى الفئة أو الأسلوب أو المعلمة. في هذه الحالة، يمكنك حذف StorageAccountAttribute لأنك تستخدم حساب التخزين الافتراضي بالفعل.

يجب أن يبدو تعريف أسلوب التشغيل الآن كما يلي:

[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, 
    [Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, 
    ILogger log)

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

استعرض للوصول إلى موقع رمز الدالة الخاص بك ضمن src/main/java، ثم افتح ملف مشروع Function.java، وأضف المعلمة التالية إلى تعريف الأسلوب run:

@QueueOutput(name = "msg", queueName = "outqueue", 
connection = "AzureWebJobsStorage") OutputBinding<String> msg,

المعلمة msg عبارة عن نوع OutputBinding<T>، يمثل مجموعة من السلاسل التي تتم كتابتها كرسائل إلى ربط إخراج عند اكتمال الدالة. في هذه الحالة، الإخراج هو قائمة انتظار تخزين مسماة outqueue. يتم تعيين سلسلة الاتصال لحساب التخزين حسب أسلوب connection. بدلاً من سلسلة الاتصال نفسها، يمكنك تمرير إعداد التطبيق الذي يحتوي على سلسلة اتصال حساب التخزين.

يجب أن يبدو تعريف الأسلوب run الآن مثل المثال التالي:

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

إضافة التعليمات البرمجية التي تستخدم ربط الإخراج

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

أضف الرمز الذي يستخدم msg كائن توثيق الإخراج context.bindings لإنشاء رسالة قائمة انتظار. إضافة هذا الرمز قبل عبارة context.res.

// Add a message to the Storage queue,
// which is the name passed to the function.
context.bindings.msg = (req.query.name || req.body.name);

عند هذه النقطة، يجب أن تبدو الدالة الخاصة بك كما يلي:

module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    if (req.query.name || (req.body && req.body.name)) {
        // Add a message to the Storage queue,
        // which is the name passed to the function.
        context.bindings.msg = (req.query.name || req.body.name);
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

أضف الرمز الذي يستخدم msg كائن توثيق الإخراج context.bindings لإنشاء رسالة قائمة انتظار. إضافة هذا الرمز قبل عبارة context.res.

context.bindings.msg = name;

عند هذه النقطة، يجب أن تبدو الدالة الخاصة بك كما يلي:

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    context.log('HTTP trigger function processed a request.');
    const name = (req.query.name || (req.body && req.body.name));

    if (name) {
        // Add a message to the storage queue, 
        // which is the name passed to the function.
        context.bindings.msg = name; 
        // Send a "hello" response.
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

export default httpTrigger;

إضافة التعليمات البرمجية التي تستخدم Push-OutputBinding cmdlet لكتابة نص إلى قائمة الانتظار باستخدام ربط الإخراج msg. إضافة هذه التعليمات البرمجية قبل تعيين حالة «موافق» في عبارة if.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

عند هذه النقطة، ينبغي أن تبدو الدالة لديك كما يلي:

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# Interact with query parameters or the body of the request.
$name = $Request.Query.Name
if (-not $name) {
    $name = $Request.Body.Name
}

if ($name) {
    # Write the $name value to the queue, 
    # which is the name passed to the function.
    $outputMsg = $name
    Push-OutputBinding -name msg -Value $outputMsg

    $status = [HttpStatusCode]::OK
    $body = "Hello $name"
}
else {
    $status = [HttpStatusCode]::BadRequest
    $body = "Please pass a name on the query string or in the request body."
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = $status
    Body = $body
})

تحديث Httpexample\__init__.py لمطابقة التعليمة البرمجية التالية، إضافة المعلمة إلى تعريف الدالة msg وتحت msg.set(name) العبارة if name: .

import logging

import azure.functions as func


def main(req: func.HttpRequest, msg: func.Out[func.QueueMessage]) -> str:

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        msg.set(name)
        return func.HttpResponse(f"Hello {name}!")
    else:
        return func.HttpResponse(
            "Please pass a name on the query string or in the request body",
            status_code=400
        )

المعلمة msgهي مثيل لـ ⁩⁦azure.functions.Out class⁩⁦⁩. تقوم الطريقة setالخاصة بها بكتابة رسالة سلسلة إلى قائمة الانتظار، وفي هذه الحالة يتم تمرير الاسم إلى الدالة في سلسلة استعلام عنوان URL.

إضافة التعليمات البرمجية التي تستخدم كائن ربط الإخراج msg لإنشاء رسالة قائمة انتظار. إضافة هذه التعليمات البرمجية قبل استرجاع الأسلوب.

if (!string.IsNullOrEmpty(name))
{
    // Add a message to the output collection.
    msg.Add(string.Format("Name passed to the function: {0}", name));
}

في هذه المرحلة، يجب أن تبدو الدالة كما يلي:

[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, 
    [Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, 
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    if (!string.IsNullOrEmpty(name))
    {
        // Add a message to the output collection.
        msg.Add(string.Format("Name passed to the function: {0}", name));
    }
    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

الآن، يمكنك استخدام معلمة ⁧msg⁩ الجديدة للكتابة إلى ربط الإخراج من التعليمة البرمجية للدالة. أضِف السطر التالي من التعليمة البرمجية قبل استجابة النجاح لإضافة قيمة ⁧name⁩ إلى ربط إخراج ⁧msg⁩.

msg.setValue(name);

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

يجب أن يبدو أسلوب ⁧run⁩ لديك الآن كالمثال التالي:

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

    // Parse query parameter
    String query = request.getQueryParameters().get("name");
    String name = request.getBody().orElse(query);

    if (name == null) {
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
        .body("Please pass a name on the query string or in the request body").build();
    } else {
        // Write the name to the message queue. 
        msg.setValue(name);

        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
    }
}

تحديث الاختبارات

لأن النموذج الأصلي أيضًا ينشئ مجموعة من الاختبارات، فأنت تحتاج إلى تحديث هذه الاختبارات لمعالجة msg المعلمة run الجديدة في توقيع الأسلوب.

تصفح للوصول إلى موقع التعليمات البرمجية للاختبار الخاص بك في src/main/java، ثم افتح ملف مشروع "Function.java" ، واستبدل سطر التعليمات البرمجية أسفل //Invoke بالتعليمات البرمجية التالية.

@SuppressWarnings("unchecked")
final OutputBinding<String> msg = (OutputBinding<String>)mock(OutputBinding.class);
final HttpResponseMessage ret = new Function().run(req, msg, context);

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

تعليمة Visual Studio برمجية مع ⁧⁩Azure Functions Core tools⁧⁩ للسماح لك بتشغيل هذا المشروع في حاسوب التنمية المحلية الخاص بك قبل أن تقوم بالنشر إلى Azure.

  1. لاستدعاء دالتك، اضغط ⁧⁩F5⁧⁩ لبدء مشروع تطبيق الدالة. يُعرض الإخراج من الأدوات الأساسية في لوحة Terminal. يبدأ تطبيقك في لوحة ⁧⁩Terminal⁧⁩. يمكنك مشاهدة نقطة نهاية URL للوظيفة التي تم تشغيلها بواسطة HTTP وتعمل محليًا.

    Local function VS Code output

    إذا واجهتك مشكلة في تشغيل ويندوز، فتأكد من أن المحطة الطرفية الافتراضية للتعليمة البرمجية Visual Studio لم يتم ضبطها على ⁧⁩WSL Bash⁧⁩.

  2. مع تشغيل Core Tools، انتقل إلى ⁧⁩ Azure: منطقة ⁧⁩الدوال. تحت ⁧⁩الدوال⁧⁩، قم بتوسيع مشروع ⁧⁩الدوال⁧⁩⁧>⁩⁧⁩المحلية⁧⁩. انقر بزر الماوس الأيمن فوق (Windows) أو اضغط على ⁦⁧⁩⁩Ctrl -⁦⁧⁩⁩ (في macOS) على الدالة HttpExample واختر ⁩⁩تنفيذ الدالة الآن..⁦.⁦⁩.

    Execute function now from Visual Studio Code

  3. في Enter request body اضغط على Enter لإرسال رسالة الطلب هذه إلى وظيفتك.

  4. عندما يتم تنفيذ الدالة محليًا وإرجاع استجابة، يظهر إشعار في Visual Studio Code. يتم عرض معلومات حول تنفيذ الدالة في اللوحة ⁩الطرفية⁧⁩.

  5. اضغط ⁧⁩«Ctrl + C»⁧⁩ لإيقاف «Core Tools»، وفصل مصحح الأخطاء.

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

  1. كما في المقالة السابقة ، اضغط على F5 لبدء مشروع تطبيق الوظيفة والأدوات الأساسية.

  2. مع تشغيل الأدوات الأساسية، انتقل إلى ⁧⁩خدمة Azure: منطقة ⁧⁩الدوال. تحت ⁧⁩الدوال⁧⁩، قم بتوسيع مشروع ⁧⁩الدوال⁧⁩⁧>⁩⁧⁩المحلية⁧⁩. انقر بزر الماوس الأيمن (انقر بزر الماوس الأيمن فوق Ctrl على Mac) HttpExample الوظيفة واختر تنفيذ الوظيفة الآن ....

    Execute function now from Visual Studio Code

  3. في إدخال نص الطلب، ترى قيمة نص رسالة الطلب { "name": "Azure" }. اضغط على "Enter" لإرسال رسالة الطلب إلى الدالة الخاصة بك.

  4. بعد إرجاع استجابة، اضغط على Ctrl + C لإيقاف الأدوات الأساسية.

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

الاتصال مستكشف التخزين إلى حسابك

تخطي هذا القسم إذا كنت قد قمت بالفعل بتثبيت Azure Storage Explorer وتوصيله بحساب Azure الخاص بك.

  1. قم بتشغيل أداة Azure Storage Explorer ، وحدد أيقونة الاتصال على اليمين، وحدد إضافة حساب.

    Add an Azure account to Microsoft Azure Storage Explorer

  2. في مربع الحوار الاتصال، اختر إضافة حساب Azure، واختر بيئة Azure الخاصة بك، وحدد تسجيل الدخول....

    Sign in to your Azure account

بعد تسجيل الدخول بنجاح إلى حسابك، سترى جميع اشتراكات Azure المقترنة بحسابك.

افحص قائمة انتظار الإخراج

  1. في Visual Studio Code، اضغط على المفتاح F1 لفتح لوحة الأوامر، ثم ابحث عن الأمر Azure Storage: Open in Storage Explorer وقم بتشغيله واختر اسم حساب التخزين. يتم فتح حساب التخزين الخاص بك في Azure Storage Explorer.

  2. قم بتوسيع عقدة قوائم الانتظار ثم حدد قائمة الانتظار المسماة قائمة الانتظار.

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

    Queue message shown in Azure Storage Explorer

  3. قم بتشغيل الوظيفة مرة أخرى، وأرسل طلبًا آخر، وسترى رسالة جديدة تظهر في قائمة الانتظار.

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

إعادة نشر التطبيق المحدث والتحقق منه

  1. في فيجوال ستوديو كود، اضغط F1 لفتح لوحة الأوامر. في لوحة الأوامر، قم بالبحث والتحديدAzure Functions: Deploy to function app....

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

  3. بعد اكتمال النشر، يمكنك مرة أخرى استخدام ميزة "تنفيذ الوظيفة الآن... لتشغيل الوظيفة في Azure.

  4. عرض الرسالة مرة أخرى في قائمة انتظار التخزين للتحقق من أن ربط الإخراج ينشئ مرة أخرى رسالة جديدة في قائمة الانتظار.

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

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

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

  1. في فيجوال ستوديو كود، اضغط F1 لفتح لوحة الأوامر. في لوحة الأوامر، قم بالبحث والتحديدAzure Functions: Open in portal.

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

  3. في علامة التبويب "Overview" ، حدد الرابط المسمى بجوار مجموعة الموارد.

    Select the resource group to delete from the function app page.

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

  5. حدد "Delete resource group" ، واتبع الإرشادات.

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

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

لقد قمت بتحديث الدالة التي تم تشغيلها من HTTP لكتابة البيانات إلى قائمة انتظار التخزين. يمكنك الآن معرفة المزيد حول تطوير الوظائف باستخدام رمز Visual Studio: