توصيل Azure Functions بـAzure Storage باستخدام Visual Studio Code
تتيح Azure Functions توصيل خدمات Azure والموارد الأخرى بوظائف دون الحاجة إلى كتابة رمز التكامل. تُعرَّف هذهالارتباطات، التي تمثل الإدخال والإخراج، ضمن تعريف الدالة. يتم توفير البيانات من الارتباطات للوظيفة في صورة معلمات. المشغل هو نوع خاص من ربط الإدخال. على الرغم من أن الدالة تحتوي على مشغل واحد فقط، إلا أنها يمكن أن تحتوي على روابط إدخال وإخراج متعددة. لمعرفة المزيد، راجع مفاهيم مشغلات وروابط دالات Azure.
في هذه المقالة، ستعرف كيفية استخدام Visual Studio Code لتوصيل Azure Stoage بالوظيفة التي أنشأتها في المقالة السابقة للتشغيل السريع. ربط الإخراج الذي تضيفه إلى هذه الدالة يكتب البيانات من طلب HTTP إلى رسالة في قائمة انتظار تخزين Azure.
تتطلب معظم الارتباطات سلسلة اتصال مخزنة تستخدمها الوظائف للوصول إلى الخدمة المقترنة. لتسهيل الأمر، يمكنك استخدام حساب التخزين الذي أنشأته باستخدام تطبيق الوظائف. تم تخزين الاتصال بهذا الحساب بالفعل في إعداد تطبيق مسمى.AzureWebJobsStorage
إشعار
تكوين البيئة المحلية الخاصة بك
قبل أن تبدأ، يجب أن تتوفر لديك المتطلبات التالية:
قم بتثبيت ملحق Azure Storage لـVisual Studio Code.
قم بتثبيت مستكشف تخزين Azure. Storage Explorer هي أداة ستستخدمها لفحص رسائل قائمة الانتظار التي تم إنشاؤها بواسطة ربط الإخراج. يتم دعم Storage Explorer على أنظمة التشغيل المستندة إلى macOS وWindows وLinux.
م بتثبيت أدوات CLI لـ .NET Core.
أكمل الخطوات في الجزء 1 من التشغيل السريع لـVisual Studio Code.
- أكمل الخطوات في الجزء 1 من التشغيل السريع لـVisual Studio Code.
- أكمل الخطوات في الجزء 1 من التشغيل السريع لـVisual Studio Code.
- أكمل الخطوات في الجزء 1 من التشغيل السريع لـVisual Studio Code.
- أكمل الخطوات في الجزء 1 من التشغيل السريع لـVisual Studio Code.
- أكمل الخطوات في الجزء 1 من التشغيل السريع لـVisual Studio Code.
تفترض هذه المقالة أنك سجلت الدخول بالفعل إلى اشتراك Azure من Visual Studio Code. يمكنك تسجيل الدخول عن طريق تشغيل Azure: Sign In
من لوحة الأوامر.
تنزيل إعدادات تطبيق الوظيفة
في مقالة البدء السريع السابقة قمت بإنشاء تطبيق وظيفي في Azure مع حساب التخزين المطلوب. يتم تخزين سلسلة الاتصال لهذا الحساب بشكل آمن في إعدادات التطبيق في Azure. في هذه المقالة، يمكنك كتابة رسائل إلى قائمة انتظار التخزين في نفس الحساب. للاتصال بحساب التخزين عند تشغيل الدالة محليًا، يجب تنزيل إعدادات التطبيق إلى في الملف local.settings.json.
اضغط على F1 لفتح لوحة الأوامر، ثم ابحث عن الأمر
Azure Functions: Download Remote Settings...
وشغلة.اختر تطبيق الدالة الذي أنشأته في المقالة السابقة. حدد Yes to all للكتابة فوق الإعدادات المحلية الموجودة.
هام
لأن ملف local.settings.jsonيحتوي على أسرار، فلن يتم نشره مطلقًا، وسيتم استبعاده من عنصر التحكم بالمصادر.
انسخ القيمة
AzureWebJobsStorage
، وهي المفتاح لقيمة سلسلة اتصال حساب التخزين. يمكنك استخدام هذا الاتصال للتحقق من أن ربط الإخراج يعمل كما هو متوقع.
تسجيل ملحقات الربط
لأنك تستخدم ربط إخراج تخزين قائمة انتظار، تحتاج إلى تثبيت ملحق روابط التخزين قبل تشغيل المشروع.
تم تكوين المشروع الخاص بك لاستخدام مجموعة الملحقات، والتي تقوم تلقائيًا بتثبيت مجموعة محددة مسبقًا من حزم الملحقات.
تم تمكين حزم الملحقات بالفعل في ملف host.json في جذر المشروع، والذي يجب أن يبدو مثل المثال التالي:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
الآن، يمكنك إضافة ارتباط مخرجات التخزين إلى مشروعك.
تم تكوين المشروع الخاص بك لاستخدام مجموعة الملحقات، والتي تقوم تلقائيًا بتثبيت مجموعة محددة مسبقًا من حزم الملحقات.
تم تمكين حزم الملحقات بالفعل في ملف host.json في جذر المشروع، والذي يجب أن يبدو مثل المثال التالي:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
الآن، يمكنك إضافة ارتباط مخرجات التخزين إلى مشروعك.
باستثناء HTTP والمشغلات الموقتة، يتم تنفيذ الارتباطات كحزم ملحقة. قم بتشغيل الأمر التالي dotnet add package في نافذة المحطة الطرفية لإضافة حزمة ملحق التخزين إلى مشروعك.
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --prerelease
الآن، يمكنك إضافة ارتباط مخرجات التخزين إلى مشروعك.
إضافة ربط المخرجات
للكتابة إلى قائمة انتظار Azure Storage:
إضافة خاصية
extraOutputs
إلى تكوين الربط{ methods: ['GET', 'POST'], extraOutputs: [sendToQueue], // add output binding to HTTP trigger authLevel: 'anonymous', handler: () => {} }
إضافة دالة
output.storageQueue
فوقapp.http
الاستدعاءconst sendToQueue = output.storageQueue({ queueName: 'outqueue', connection: 'AzureWebJobsStorage', });
للكتابة إلى قائمة انتظار Azure Storage:
إضافة خاصية
extraOutputs
إلى تكوين الربط{ methods: ['GET', 'POST'], extraOutputs: [sendToQueue], // add output binding to HTTP trigger authLevel: 'anonymous', handler: () => {} }
إضافة دالة
output.storageQueue
فوقapp.http
الاستدعاءconst sendToQueue: StorageQueueOutput = output.storageQueue({ queueName: 'outqueue', connection: 'AzureWebJobsStorage', });
في Functions، يتطلب كل نوع من أنواع الربط و type
و فريدا.name
direction
تعتمد الطريقة التي تحدد بها هذه السمات على اللغة الخاصة بتطبيق الوظائف.
يتم تعريف سمات الربط في ملف function.json لدالة معينة. اعتمادًا على نوع الربط، قد تكون ثمة حاجة إلى الخصائص الإضافية. يصف تكوين إخراج قائمة الانتظار الحقول المطلوبة لربط قائمة انتظار تخزين Azure. يسهل الملحق إضافة روابط إلى ملف function.json .
لإنشاء ربط، انقر بزر الماوس الأيمن (Ctrl+click على macOS) فوقfunction.json
الملف في مجلد HttpTrigger واختر Add binding.... اتبع المطالبات لتعريف خصائص الربط التالية للربط الجديد:
المطالبة | قيمة | الوصف |
---|---|---|
تحديد اتجاه الربط | out |
يعد الربط هو ربط الإخراج. |
حدد الربط بالاتجاه... | Azure Queue Storage |
الربط هو ربط قائمة انتظار Azure Storage. |
الاسم المستخدم لتعريف هذا الربط في تعليمتك البرمجية | msg |
الاسم الذي يحدد معلمة الربط المشار إليها في التعليمة البرمجية الخاصة بك. |
قائمة الانتظار التي سيتم إرسال الرسالة إليها | outqueue |
اسم قائمة الانتظار التي يكتب الربط إليها. عندما لا يكون اسم قائمة الانتظار موجودا، يقوم الربط بإنشائه عند الاستخدام الأول. |
حدد setting من "local.setting.json" | AzureWebJobsStorage |
اسم إعداد تطبيق يحتوي على سلسلة الاتصال لحساب التخزين. يحتوي الإعداد AzureWebJobsStorage على سلسلة الاتصال لحساب التخزين الذي أنشأته باستخدام تطبيق الوظائف. |
تتم إضافة ربط إلى bindings
الصفيف في function.json، والذي يجب أن يبدو كما يلي:
"name": "msg",
"queueName": "outqueue",
"connection": "AzureWebJobsStorage"
}
]
}
يتم تعريف سمات الربط عن طريق تزيين التعليمات البرمجية لدالة معينة في ملف function_app.py . يمكنك استخدام queue_output
مصمم الديكور لإضافة ربط إخراج تخزين قائمة انتظار Azure.
باستخدام queue_output
مصمم الديكور، يكون اتجاه الربط ضمنيا "خارج" والنوع هو Azure Storage Queue. أضف المصمم التالي إلى التعليمات البرمجية للدالة في HttpExample\function_app.py:
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
في هذه التعليمة البرمجية، arg_name
يحدد معلمة الربط المشار إليها في التعليمات البرمجية الخاصة بك، queue_name
وهو اسم قائمة الانتظار التي يكتب الربط إليها، وهو connection
اسم إعداد تطبيق يحتوي على سلسلة الاتصال لحساب التخزين. في قوالب التشغيل السريع، يمكنك استخدام نفس حساب التخزين مثل تطبيق الوظائف، الموجود في AzureWebJobsStorage
الإعداد. queue_name
عندما لا يكون موجودا، يقوم الربط بإنشائه عند الاستخدام الأول.
في أحد مشروعات C#، يتم تعريف عمليات الربط كسمات ربط على أسلوب الدالة. تعتمد التعريفات المحددة على ما إذا كان تطبيقك يعمل قيد المعالجة (مكتبة فئة C#) أو في عملية عامل معزولة.
افتح ملف المشروع HttpExample.cs وأضف الفئة التالية MultiResponse
:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
الفئة MultiResponse
تسمح لك بالكتابة إلى قائمة انتظار تخزين مسماة outqueue
ورسالة نجاح HTTP. يمكن إرسال رسائل متعددة إلى قائمة الانتظار لأن السمة QueueOutput
يتم تطبيقها على صفيف سلسلة.
الخاصية Connection
تعين سلسلة الاتصال لحساب التخزين. في هذه الحالة، يمكنك حذف Connection
لأنك تستخدم حساب التخزين الافتراضي بالفعل.
في مشروع 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 البرمجية للمصادقة، أو الحصول على مرجع قائمة انتظار، أو كتابة البيانات. يعمل وقت تشغيل الدوال، وربط إخراج قائمة الانتظار على أداء تلك المهام من أجلك.
أضف التعليمات البرمجية التي تستخدم كائن ربط الإخراج لإنشاء context.extraOutputs
رسالة قائمة انتظار. أضف هذه التعليمة البرمجية قبل عبارة الإرجاع.
context.extraOutputs.set(sendToQueue, [msg]);
عند هذه النقطة، يمكن أن تبدو الدالة كما يلي:
const { app, output } = require('@azure/functions');
const sendToQueue = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [sendToQueue],
handler: async (request, context) => {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
},
});
أضف التعليمات البرمجية التي تستخدم كائن ربط الإخراج لإنشاء context.extraOutputs
رسالة قائمة انتظار. أضف هذه التعليمة البرمجية قبل عبارة الإرجاع.
context.extraOutputs.set(sendToQueue, [msg]);
عند هذه النقطة، يمكن أن تبدو الدالة كما يلي:
import {
app,
output,
HttpRequest,
HttpResponseInit,
InvocationContext,
StorageQueueOutput,
} from '@azure/functions';
const sendToQueue: StorageQueueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
export async function HttpExample(
request: HttpRequest,
context: InvocationContext,
): Promise<HttpResponseInit> {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
}
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: HttpExample,
});
إضافة التعليمات البرمجية التي تستخدم 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\function_app.py لمطابقة التعليمات البرمجية التالية، وأضف المعلمة msg
إلى تعريف الدالة وضمن msg.set(name)
العبارة if name:
:
import azure.functions as func
import logging
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
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}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
msg
المعلمة هي مثيل ل azure.functions.Out class
. يكتب الأسلوب set
رسالة سلسلة إلى قائمة الانتظار. في هذه الحالة، يتم name
تمريرها إلى الدالة في سلسلة استعلام URL.
استبدال الفئة الحالية HttpExample
بالتعليمات البرمجية التالية:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
var logger = executionContext.GetLogger("HttpExample");
logger.LogInformation("C# HTTP trigger function processed a request.");
var message = "Welcome to Azure Functions!";
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString(message);
// Return a response to both HTTP trigger and storage output binding.
return new MultiResponse()
{
// Write a single message.
Messages = new string[] { message },
HttpResponse = response
};
}
}
الآن، يمكنك استخدام المعلمة الجديدة 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 Code مع أدوات Azure Functions Core للسماح لك بتشغيل هذا المشروع على كمبيوتر التطوير المحلي قبل النشر إلى Azure. إذا لم يكن لديك Core Tools مثبتة محليا بالفعل، فستتم مطالبتك بتثبيتها في المرة الأولى التي تقوم فيها بتشغيل مشروعك.
للاتصال بالوظيفة اضغط على F5 لبدء مشروع تطبيق الوظائف. تعرض لوحة Terminal عملية الإخراج من Core Tools. يبدأ تطبيقك في لوحة المحطة الطرفية. يمكنك مشاهدة نقطة نهاية URL للوظيفة التي تم تشغيلها بواسطة HTTP وتعمل محليًا.
إذا لم يكن لديك Core Tools مثبتة بالفعل، فحدد Install لتثبيت Core Tools عند مطالبتك بذلك.
إذا كنت تواجه مشكلة في التشغيل على Windows، فتأكد من عدم تعيين المحطة الطرفية الافتراضية ل Visual Studio Code إلى WSL Bash.مع تشغيل Core Tools، انتقل إلى مساحة Azure: Functions. ضمن Functions وسع Local Project>Functions. انقر بزر الماوس الأيمن (Windows) أو Ctrl - انقر فوق الدالة (macOS)
HttpExample
واختر تنفيذ الدالة الآن....في Enter request body اضغط Enter لإرسال رسالة الطلب هذه إلى الوظيفة الخاصة بك.
عند تنفيذ الوظيفة محليًا وإرجاع استجابة، يرفع تنبيه في Visual Studio التعليمات البرمجية. تعرض المعلومات حول تنفيذ الدالة في لوحة Terminal.
اضغط على Ctrl + C لإيقاف Core Tools وقطع اتصال مصحح الأخطاء.
تشغيل الدالة محليًا
كما هو الحال في المقالة السابقة، اضغط F5 لبدء مشروع تطبيق الوظائف وأدوات الذاكرة الرئيسة.
مع تشغيل Core Tools، انتقل إلى مساحة Azure: Functions. ضمن Functions وسع Local Project>Functions. انقر بزر الماوس الأيمن (Ctrl-click على Mac) فوق الدالة
HttpExample
وحدد Execute Function Now....في نص إدخال الطلب تظهر قيمة نص رسالة الطلب الخاصة بـ
{ "name": "Azure" }
. اضغط Enter لإرسال رسالة الطلب هذه إلى الوظيفة.بعد إرجاع الاستجابة، اضغط Ctrl + C لإيقاف Core Tools.
نظرًا لأنك تستخدم سلسلة اتصال التخزين، تتصل وظيفتك بحساب تخزين Azure عند التشغيل محليًا. يتم إنشاء قائمة انتظار جديدة مسماة outqueue في حساب التخزين الخاص بك عن طريق وقت تشغيل الدالات عند استخدام ربط الإخراج لأول مرة. ستستخدم مستكشف التخزين للتحقق من إنشاء قائمة الانتظار مع الرسالة الجديدة.
قم بتوصيل " مستكشف التخزين" بحساب Azure
تخطي هذا القسم إذا كنت قد قمت بالفعل بتثبيت Azure Storage Explorer وتوصيلته بحساب Azure الخاص بك.
قم بتشغيل أداة مستكشف تخزين Azure، وحدد أيقونة الاتصال على اليسار، وحدد إضافة حساب.
في مربع الحوار الاتصال، اختر إضافة حساب Azure، واختر بيئة Azure، ثم حدد تسجيل الدخول....
بعد تسجيل الدخول بنجاح إلى حسابك، سترى جميع اشتراكات Azure المقترنة بحسابك. اختر اشتراكك وحدد Open Explorer.
افحص قائمة انتظار الإخراج
في Visual Studio Code، اضغط على F1 لفتح لوحة الأوامر، ثم ابحث عن الأمر
Azure Storage: Open in Storage Explorer
وقم بتشغيله واختر اسم حساب التخزين الخاص بك. يتم فتح حساب التخزين الخاص بك في Azure Storage Explorer.قم بتوسيع عقدة قائمة الانتظار، ثم حدد قائمة الانتظار المسماة outqueue.
تحتوي قائمة الانتظار على الرسالة التي تربط إخراج قائمة الانتظار التي تم إنشاؤها عند تشغيل الدالة التي تم تشغيلها بواسطة HTTP. إذا قمت باستدعاء الوظيفة بالقيمة
name
الافتراضية لAzure، فإن رسالة قائمة الانتظار هي الاسم الذي تم تمريره إلى الوظيفة: Azure.قم بتشغيل الوظيفة مرة أخرى، وأرسل طلبًا آخر، وسترى رسالة جديدة في قائمة الانتظار.
الآن، حان الوقت لإعادة نشر تطبيق الوظائف المحدث إلى Azure.
إعادة نشر التطبيق المحدث والتحقق منه
لفتح لوحة الأوامر في تعليمة Visual Studio البرمجية، اضغط على F1. في لوحة الأوامر، ابحث عن
Azure Functions: Deploy to function app...
واختره.اختر تطبيق الوظائف الذي إنشاته في المقالة الأولى. نظرًا لأنك تقوم بإعادة توزيع مشروعك إلى نفس التطبيق، حدد Deploy لتجاهل التحذير حول الكتابة فوق الملفات.
بعد اكتمال النشر، يمكنك مرة أخرى استخدام ميزة Execute Function Now... لتشغيل الدالة في Azure.
عرض الرسالة مرة أخرى في قائمة انتظار التخزين للتحقق من أن ربط الإخراج ينشئ رسالة جديدة في قائمة الانتظار.
تنظيف الموارد
تشير الموارد في Azure إلى التطبيقات الخاصة بالوظيفة والوظائف وحسابات التخزين وما إلى ذلك. يتم تجميعها في مجموعات الموارد،ويمكنك حذف كل شيء في مجموعة بحذف المجموعة.
أنشأت موارد لإتمام قوالب التشغيل السريع هذه. قد تتم فوترتك مقابل هذه الموارد، استنادًا إلى حالة حسابكوأسعار الخدمة. إذا لم تعد بحاجة إلى الموارد على الإطلاق، فإليك كيفية حذفها:
لفتح لوحة الأوامر في تعليمة Visual Studio البرمجية، اضغط على F1. في لوحة الأوامر، ابحث عن
Azure: Open in portal
واختره.اختر التطبيق الخاص بالوظائف، واضغط زر Enter. تفتح صفحة تطبيق الوظيفة في مدخل Microsoft Azure.
في علامة التبويب نظرة عامة حدد الارتباط المسمى بجوار Resource group.
في صفحة مجموعة الموارد، راجع قائمة الموارد المدرجة وتحقق من أنها هي التي تريد حذفها.
حدد حذف مجموعة الموارد، واتبع الإرشادات.
قد يستغرق الحذف دقيقتين. عند الانتهاء من ذلك، يظهر تنبيه لبضع ثوان. يمكنك أيضا تحديد رمز الجرس في أعلى الصفحة لعرض التنبيه.
الخطوات التالية
لقد قمت بتحديث الدالة التي تم تشغيلها من HTTP لكتابة البيانات إلى قائمة انتظار التخزين. الآن يمكنك معرفة المزيد حول تطوير الوظائف باستعمال Visual Studio Code: