دالات Azure triggers and bindings

في هذه المقالة، ستتعرف على المفاهيم عالية المستوى المحيطة بالمشغلات والروابط للوظائف.

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

يعد الربط بوظيفة طريقة لربط وظائفك بموارد أخرى بشكل تعريفي. إما أن تمرر الروابط البيانات إلى وظيفتك ( ربط الإدخال) أو تمكنك من كتابة البيانات من وظيفتك ( ربط الإخراج) باستخدام معلمات الربط. مشغل الدالة الخاص بك هو في الأساس نوع خاص من ربط الإدخال.

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

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

ضع في اعتبارك الأمثلة التالية لكيفية تنفيذ الوظائف:

سيناريو مثال المشغِّل ربط بيانات الإدخال ربط بيانات الإخراج
تصل رسالة قائمة انتظار جديدة، والتي تقوم بتشغيل وظيفة للكتابة إلى قائمة انتظار أخرى. رتل* بلا رتل*
يقرأ الوظيفة المجدولة محتوى مساحة تخزين Azure Blob وينشئ مستند Azure Cosmos DB جديد. ⁧⁩عدّاد الوقت⁧⁩ مخزن البيانات الثنائية الكبيرة Azure Cosmos DB
يستخدم Azure Event Grid لقراءة صورة من مخزن البيانات الثنائية الكبيرة ومستند من Azure Cosmos DB لإرسال بريد إلكتروني. شبكة الأحداث مخزن البيانات الثنائية الكبيرة و Azure Cosmos DB SendGrid

* يمثل قوائم انتظار مختلفة.

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

تلميح

دالات Azure لا يتطلب منك استخدام روابط الإدخال والإخراج للاتصال بخدمات Azure. يمكنك دائما إنشاء عميل Azure SDK في كودك واستخدامه بدلا من ذلك لنقل البيانات. لمزيد من المعلومات، راجع الاتصال بالخدمات.

تعريفات المشغل والربط

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

بالنسبة لوظائف مكتبة فئة C#، يمكنك تكوين المشغلات والروابط عن طريق تزيين الأساليب والمعلمات بسمات C#. قد تعتمد السمة المحددة التي تقوم بتطبيقها على نموذج وقت تشغيل C#‎:

يتم تعريف مشغل HTTP (HttpTrigger) على Run الأسلوب لدالة تسمى HttpExample تقوم بإرجاع كائن MultiResponse :

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

يوضح هذا المثال تعريف الكائن MultiResponse . يعود HttpResponse تعريف الكائن إلى طلب HTTP ويكتب رسالة إلى قائمة انتظار تخزين باستخدام QueueOutput ربط:

public class MultiResponse
{
    [QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

لمزيد من المعلومات، راجع دليل C# لنماذج العمال المعزولين.

تستخدم function.json وظائف البرنامج النصي القديم C # ملف تعريف. لمزيد من المعلومات، راجع مرجع المطور دالات Azure C# (.csx) في موقع المطور.

بالنسبة لوظائف Java، تقوم بتكوين المحفزات والربط عن طريق توضيح طرق ومعلمات محددة. يتم تعريف مشغل HTTP (@HttpTrigger) هذا على run طريقة دالة تسمى HttpExample. تكتب الدالة إلى قائمة انتظار تخزين تسمى outqueue التي يحددها التعليق @QueueOutput على المعامل msg :

@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.");

لمزيد من المعلومات، راجع دليل المطورين Java.

طريقة تعريفك للمحفزات والروابط لوظائف Node.js تعتمد على النسخة المحددة من Node.js ل دالات Azure:

في Node.js دالات Azure الإصدار الرابع، تقوم بتكوين المشغلات والروابط باستخدام الكائنات المصدرة من وحدة @azure/functions. لمزيد من المعلومات، راجع دليل المطور Node.js.

تحدد الطريقة http الموجودة على الكائن المصدر app مشغل HTTP. storageQueue تحدد الطريقة الموجودة output ربط الإخراج على هذا المشغل.

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

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: async (request, context) => {
        const body = await request.text();
        context.extraOutputs.set(queueOutput, body);
        return { body: 'Created queue item.' };
    },
});

تحدد الطريقة http الموجودة على الكائن المصدر app مشغل HTTP. storageQueue تحدد الطريقة الموجودة output ربط الإخراج على هذا المشغل.

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

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const body = await request.text();
    context.extraOutputs.set(queueOutput, body);
    return { body: 'Created queue item.' };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: httpTrigger1,
});

يعرف ملف المثال function.json هذا الدالة:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

لمزيد من المعلومات، راجع دليل مطور PowerShell.

تعتمد طريقة تعريف الدالة على إصدار Python for دالات Azure:

في Python for دالات Azure الإصدار 2، تعرف الدالة مباشرة في الكود باستخدام الديكورات:

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.')

اعتبارات ملزمة

  • لا تدعم جميع الخدمات روابط الإدخال والإخراج. راجع ملحق الربط الخاص بك للحصول على أمثلة تعليمات برمجية محددة للروابط.

  • التعرف على المشغلات والروابط بشكل مختلف اعتمادًا على لغة التطوير. تأكد من تحديد لغتك في أعلى هذه المقالة.

  • تقتصر أسماء المشغل والربط على الأحرف الأبجدية الرقمية _، والتسطير السفلي.

مهمة إضافة روابط إلى دالة

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

يدعم دالات Azure عدة ربطات يجب تكوينها بشكل صحيح. على سبيل المثال، يمكن للدالة قراءة البيانات من قائمة انتظار (ربط الإدخال) وكتابة البيانات إلى قاعدة بيانات (ربط الإخراج) في وقت واحد.

ارتباطات البيانات المدعومة

يوضح هذا الجدول الروابط المدعومة في الإصدارات الرئيسية من وقت تشغيل دالات Azure:

نوع 4.x1 1.x2 المشغِّل الإدخال الإخراج
مخزن البيانات الثنائية الكبيرة
Azure Cosmos DB
Azure Data Explorer ‏(Kusto)
Azure SQL
Dapr4
شبكة الأحداث
مراكز الأحداث
HTTP وخطافات الويب
مركز IoT
Kafka3
تطبيقات الجوال
بروتوكول سياق النموذج
مراكز الإعلامات
تخزين قائمة الانتظار
ريديس
RabbitMQ3
SendGrid
Service Bus
Azure SignalR Service
تخزين الجدول
المؤقت
Twilio
  1. سجل جميع الروابط ما عدا HTTP والمؤقت. انظر سجل دالات Azure امتدادات الربط. هذه الخطوة غير مطلوبة عند استخدام الإصدار 1.x من وقت تشغيل الوظائف.
  2. ينتهي دعم الإصدار 1.x من مدة تشغيل دالات Azure في 14 سبتمبر 2026. نقل تطبيقاتك إلى الإصدار 4.x لدعم كامل.
  3. المحفزات غير مدعومة في خطة الاستهلاك. يتطلب هذا النوع من الربط مشغلات تعتمد على وقت التشغيل.
  4. يدعم هذا النوع من الربط في أوضاع Kubernetes وAzure IoT Edge وغيرها من الأوضاع المستضافة ذاتيا فقط.

للحصول على معلومات حول الروابط قيد المعاينة أو المعتمدة لاستخدام الإنتاج، راجع اللغات المدعومة.

يتم دعم إصدارات معينة من ملحقات الربط فقط أثناء دعم SDK للخدمة الأساسية. تؤثر التغييرات التي يتم إجراؤها على الدعم في إصدار SDK للخدمة الأساسية على دعم الملحق المستهلك.

أنواع SDK

دالات Azure binding extensions use Azure service SDKs to connect to Azure services. أنواع SDK المحددة المستخدمة في الروابط يمكن أن تؤثر على كيفية عملك مع البيانات في وظائفك. بعض الروابط تدعم أنواعا خاصة ب SDK توفر وظائف أغنى وتكامل أفضل مع الخدمة، بينما تستخدم أخرى أنواعا أكثر عمومية مثل السلاسل أو مصفوفات البايتات. عند توفرها، يمكن أن يوفر استخدام أنواع محددة من SDK فوائد مثل تحسين أمان الأنواع، وسهولة معالجة البيانات، والوصول إلى ميزات خاصة بالخدمة.

يشير هذا الجدول إلى امتدادات الربط التي تدعم حاليا أنواع SDK:

Extension الأنواع مستوى الدعم
مساحة تخزين Azure Blob BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
المحفز: GA
المدخل: GA
Azure Cosmos DB CosmosClient
Database
Container
المدخل: GA
Azure Event Grid CloudEvent
EventGridEvent
المحفز: GA
مراكز أحداث Azure EventData
EventHubProducerClient
المحفز: GA
Azure Queue Storage QueueClient
QueueMessage
المحفز: GA
ناقل خدمة Azure ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
المحفز: GA
مساحة تخزين Azure Table‬ TableClient
TableEntity
المدخل: GA

اعتبارات لأنواع SDK:

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

لمزيد من المعلومات، راجع أنواع SDK في دليل مطوري C#‎.

Extension الأنواع مستوى الدعم العينات
مساحة تخزين Azure Blob BlobClient
ContainerClient
StorageStreamDownloader
المحفز: GA
المدخل: GA
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
مدخل: معاينة Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
مراكز أحداث Azure EventData Trigger: معاينة Quickstart
EventData
ناقل خدمة Azure ServiceBusReceivedMessage Trigger: معاينة Quickstart
ServiceBusReceivedMessage

اعتبارات لأنواع SDK:

  • بالنسبة للسيناريوهات التي قد تستخدم فيها نوع SDK، أنشئ وعمل مع عملاء SDK مباشرة بدلا من استخدام رابط الإخراج.
  • يستخدم Azure Cosmos DB الزناد Azure Cosmos DB تغيير التغذية ويعرض عناصر التغيير كأنواع قابلة للتسلسلة ب JSON. نتيجة لذلك، لا يتم دعم أنواع SDK لهذا المحفز.

أنواع SDK مدعومة فقط عند استخدام نموذج البرمجة Python v2. لمزيد من المعلومات، راجع SDK أنواع الروابط في دليل المطورين Python.

Extension الأنواع مستوى الدعم
مساحة تخزين Azure Blob BlobClient
ContainerClient
ReadableStream
Preview
ناقل خدمة Azure ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Preview

أنواع SDK مدعومة فقط عند استخدام نموذج البرمجة Node v4. لمزيد من المعلومات، راجع أنواع SDK في دليل المطورين Node.js.

Extension الأنواع مستوى الدعم
مساحة تخزين Azure Blob BlobClient
BlobContainerClient
Preview

لمزيد من المعلومات، راجع SDK types في دليل المطورين Java.

هام

أنواع SDK غير مدعومة حاليا لتطبيقات PowerShell.

أمثلة على التعليمات البرمجية للروابط

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

تعتمد التعليمات البرمجية الملزمة ل C# على نموذج العملية المحدد.

الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة مشغل
الادخال
الناتج
Link
Azure Cosmos DB مشغل
الادخال
الناتج
Link
Azure Data Explorer ‏(Kusto) الادخال
الناتج
Link
Azure SQL مشغل
الادخال
الناتج
Link
شبكة الأحداث مشغل
الناتج
Link
مراكز الأحداث مشغل
الناتج
IoT Hub مشغل
الناتج
HTTP مشغل Link
تخزين قائمة الانتظار مشغل
الناتج
Link
RabbitMQ مشغل
الناتج
SendGrid الناتج
Service Bus مشغل
الناتج
Link
Azure SignalR Service مشغل
الادخال
الناتج
تخزين الجدول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ مشغل Link
Twilio الناتج Link
الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة مشغل
الادخال
الناتج
Link
Azure Cosmos DB مشغل
الادخال
الناتج
Link
Azure Data Explorer ‏(Kusto) الادخال
الناتج
Link
Azure SQL مشغل
الادخال
الناتج
شبكة الأحداث مشغل
الناتج
Link
مراكز الأحداث مشغل
الناتج
IoT Hub مشغل
الناتج
HTTP مشغل Link
تخزين قائمة الانتظار مشغل
الناتج
Link
RabbitMQ مشغل
الناتج
SendGrid الناتج
Service Bus مشغل
الناتج
Link
Azure SignalR Service مشغل
الادخال
الناتج
تخزين الجدول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ مشغل Link
Twilio الناتج
الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة مشغل
الادخال
الناتج
Link
Azure Cosmos DB مشغل
الادخال
الناتج
Link
Azure Data Explorer ‏(Kusto) الادخال
الناتج
Azure SQL مشغل
الادخال
الناتج
Link
شبكة الأحداث مشغل
الناتج
مراكز الأحداث مشغل
الناتج
IoT Hub مشغل
الناتج
HTTP مشغل Link
تخزين قائمة الانتظار مشغل
الناتج
Link
RabbitMQ مشغل
الناتج
SendGrid الناتج
Service Bus مشغل
الناتج
Link
Azure SignalR Service مشغل
الادخال
الناتج
تخزين الجدول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ مشغل
Twilio الناتج
الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة مشغل
الادخال
الناتج
Azure Cosmos DB مشغل
الادخال
الناتج
Azure SQL مشغل
الادخال
الناتج
شبكة الأحداث مشغل
الناتج
مراكز الأحداث مشغل
الناتج
IoT Hub مشغل
الناتج
HTTP مشغل Link
تخزين قائمة الانتظار مشغل
الناتج
RabbitMQ مشغل
الناتج
SendGrid الناتج
Service Bus مشغل
الناتج
Azure SignalR Service مشغل
الادخال
الناتج
تخزين الجدول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ مشغل
Twilio الناتج

يعتمد كود التثبيت ل Python على نسخة نموذج Python.

الخدمة الأمثلة العينات
مخزن البيانات الثنائية الكبيرة مشغل
الادخال
الناتج
Link
Azure Cosmos DB مشغل
الادخال
الناتج
Link
Azure Data Explorer ‏(Kusto) الادخال
الناتج
Azure SQL مشغل
الادخال
الناتج
Link
شبكة الأحداث مشغل
الناتج
مراكز الأحداث مشغل
الناتج
IoT Hub مشغل
الناتج
HTTP مشغل Link
تخزين قائمة الانتظار مشغل
الناتج
RabbitMQ مشغل
الناتج
SendGrid الناتج
Service Bus مشغل
الناتج
Link
Azure SignalR Service مشغل
الادخال
الناتج
تخزين الجدول الادخال
الناتج
⁧⁩عدّاد الوقت⁧⁩ مشغل
Twilio الناتج

روابط بيانات مخصصة

يمكنك إنشاء روابط إدخال وإخراج مخصصة. يجب أن تكون الروابط مكتوبة بلغة .NET، ولكن يمكن استهلاكها من أي لغة مدعومة. لمزيد من المعلومات حول إنشاء روابط مخصصة، راجع إنشاء روابط إدخال وإخراج مخصصة.