مشاركة عبر


دليل مطور خدمة وظائف Azure

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

تعتمد هذه المقالة على معرفتك المسبقة بمقالة نظرة عامة على خدمة وظائف Azure Functions.

إذا كنت تفضل الانتقال مباشرة، فيمكنك إكمال برنامج تعليمي للبدء السريع باستخدام Visual Studio أو Visual Studio Code أو من موجه الأوامر.

إذا كنت تفضل القفز مباشرة ، فيمكنك إكمال برنامج تعليمي سريع باستخدام Maven (سطر الأوامر) أو Eclipse أو IntelliJ IDEA أو Gradle أو Quarkus أو Spring Cloud أو Visual Studio Code.

إذا كنت تفضل الانتقال مباشرة، يمكنك إكمال برنامج تعليمي للتشغيل السريع باستخدام Visual Studio Code أو من موجه الأوامر.

إذا كنت تفضل الانتقال مباشرة، يمكنك إكمال برنامج تعليمي للتشغيل السريع باستخدام Visual Studio Code أو من موجه الأوامر.

إذا كنت تفضل الانتقال مباشرة، يمكنك إكمال برنامج تعليمي للتشغيل السريع باستخدام Visual Studio Code أو من موجه الأوامر.

إذا كنت تفضل الانتقال مباشرة، يمكنك إكمال برنامج تعليمي للتشغيل السريع باستخدام Visual Studio Code أو من موجه الأوامر.

مشروع كود

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

تعتمد طريقة تخطيط مشروع التعليمات البرمجية وكيفية الإشارة إلى الأساليب في مشروعك على لغة تطوير مشروعك. للحصول على إرشادات مفصلة خاصة باللغة، راجع دليل مطوري C#‎.

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

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

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

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

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

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

أدوات التطوير

توفر الأدوات التالية تجربة تطوير ونشر متكاملة ل Azure Functions بلغتك المفضلة:

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

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

يتم دعم تحرير المدخل للإصدار 3 Node.js فقط، والذي يستخدم ملف function.json.

Deployment

عند نشر مشروع التعليمات البرمجية إلى Azure، فإنك تقوم أساسا بنشر مشروعك إلى مورد تطبيق دالة موجود. يوفر تطبيق الوظيفة سياق تنفيذ في Azure تعمل فيه لظائفك. على هذا النحو، إنها وحدة التوزيع والإدارة لوظائفك. من منظور Azure Resource، يعادل تطبيق الوظائف مورد موقع (Microsoft.Web/sites) في Azure App Service، وهو ما يعادل تطبيق ويب.

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

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

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

الاتصال بالخدمات

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

سواء كنت تستخدم ملحقات الربط التي توفرها Functions أو كنت تعمل مع SDKs للعميل مباشرة، يمكنك تخزين بيانات الاتصال بأمان وعدم تضمينها في التعليمات البرمجية الخاصة بك. لمزيد من المعلومات، راجع الاتصالات.

Bindings

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

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

إذا كنت تواجه مشكلات في الأخطاء الواردة من الروابط، فشاهد وثائق Azure Functions Binding Error Code .

SDKs العميل

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

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

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

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

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

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

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

Connections

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

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

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

قيم الاتصال

عندما يتم حل اسم الاتصال إلى قيمة واحدة دقيقة، يحدد وقت التشغيل القيمة كسلسلة اتصال، والتي تتضمن عادة سرا. تعتمد تفاصيل سلسلة الاتصال على الخدمة التي تتصل بها.

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

على سبيل المثال، قد تكون connectionالخاصية Storage1 لتعريف مشغل Azure Blob . طالما لا توجد قيمة سلسلة واحدة تم تكوينها بواسطة متغير بيئة يسمى Storage1، يمكن استخدام متغير بيئة يسمى Storage1__blobServiceUri لإعلام blobServiceUri خاصية الاتصال. تختلف خصائص الاتصال لكل خدمة. راجع وثائق المكون المستخدم في الاتصال.

Note

عند استخدام Azure App Configuration أو Key Vault لتوفير إعدادات لاتصالات الهوية المُدارة، يجب أن تستخدم أسماء الإعداد فاصل مفاتيح صالح مثل : أو / بدلاً من __ لضمان حل الأسماء بشكل صحيح.

على سبيل المثال، Storage1:blobServiceUri

تكوين اتصال يستند إلى الهوية

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

Note

عند التشغيل في خطة Consumption أو Elastic Premium، يستخدم WEBSITE_AZUREFILESCONNECTIONSTRING تطبيقك الإعدادات و WEBSITE_CONTENTSHARE عند الاتصال بملفات Azure على حساب التخزين المستخدم من قبل تطبيق الوظائف. لا تدعم Azure Files استخدام الهوية المدارة عند الوصول إلى مشاركة الملف. لمزيد من المعلومات، راجع سيناريوهات المصادقة المدعومة من Azure Files

يتم دعم الاتصالات المستندة إلى الهوية فقط على Functions 4.x، إذا كنت تستخدم الإصدار 1.x، فيجب عليك أولا الترحيل إلى الإصدار 4.x.

تدعم المكونات التالية الاتصالات المستندة إلى الهوية:

مصدر الاتصال الخطط مدعومة Learn more
مشغلات وروابط Azure Blobs All إصدار ملحق Azure Blobs 5.0.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
مشغلات وروابط قوائم انتظار Azure All إصدار ملحق Azure Queues 5.0.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
جداول Azure (عند استخدام Azure Storage) All إصدار ملحق جداول Azure 1.0.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
قاعدة بيانات Azure SQL All توصيل تطبيق دالة ب Azure SQL باستخدام الهوية المدارة وروابط SQL
مشغلات Azure Event Hubs وروابطه All إصدار ملحق Azure Event Hubs 5.0.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
مشغلات Azure Service Bus وروابطه All ناقل خدمة Azure إصدار الملحق 5.0.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
ربط بيانات مخرجات Azure Event Grid All إصدار ملحق Azure Event Grid 3.3.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
مشغلات وروابط Azure Cosmos DB All إصدار ملحق Azure Cosmos DB 4.0.0 أو أحدث،
حزمة الملحقات 4.0.2 أو أحدث
مشغلات وروابط Azure SignalR All إصدار ملحق Azure SignalR 1.7.0 أو أحدث
مجموعة الملحقات 3.6.1 أو أحدث
موفر تخزين Durable Functions (Azure Storage) All إصدار ملحق Durable Functions 2.7.0 أو أحدث،
مجموعة الملحقات 3.3.0 أو أحدث
التخزين المطلوب من المضيف ("AzureWebJobsStorage") All الاتصال بموقع التخزين المضيف باستخدام هوية

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

منح الإذن للهوية

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

Important

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

اختر إحدى علامات التبويب هذه للتعرف على الأذونات لكل مكون:

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

نوع الربط مثال على الأدوار المضمنة
Trigger مالكبيانات كائن ثنائي كبير الحجم للتخزين والمساهم في بياناتقائمة انتظار التخزين 1

يجب أيضا منح أذونات إضافية لاتصال AzureWebJobsStorage. 2
ربط بيانات الإدخال قارئ بيانات للبيانات الثنائية الكبيرة للتخزين
ربط بيانات الإخراج مالك بيانات للبيانات الثنائية الكبيرة للتخزين

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

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

الخصائص الشائعة للاتصالات المستندة إلى الهوية

يقبل الاتصال المستند إلى الهوية في خدمة Azure الخصائص الشائعة التالية، حيث تكون <CONNECTION_NAME_PREFIX> قيمة الخاصية connection في تعريف المشغل أو الارتباط:

Property قالب متغير البيئة Description
بيانات اعتماد الرمز المميز <CONNECTION_NAME_PREFIX>__credential تحدد هذه الخاصية كيفية الحصول على رمز للاتصال. لا ينبغي أن يكون العقار في سيناريوهات تطوير محلية. عندما تنوي استخدام المصادقة المدارة للهوية، قم بتعيين هذه الخاصية إلى managedidentity. عندما تنوي الاتصال بمورد في مستأجر آخر، استخدم managedidentityasfederatedidentityبدلا من ذلك .
معرف العميل <CONNECTION_NAME_PREFIX>__clientId عند credential تعيين إلى managedidentity، يمكن تعيين هذه الخاصية لتحديد الهوية المعينة من قبل المستخدم لاستخدامها عند الحصول على رمز مميز. وتقبل هذه الخاصية معرف عميل يطابق إحدى الهويات المعينة من قبل المستخدم والمحددة للتطبيق. من غير الصالح تحديد كل من معرف المورد ومعرف العميل. إذا لم يتم تحديد أي منهما، يتم استخدام الهوية المعينة من قبل النظام.

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

يتم استخدام هذه الخاصية بشكل مختلف في سيناريوهات التطوير المحلي، عندما credential لا ينبغي تعيينها.
معرف المورد <CONNECTION_NAME_PREFIX>__managedIdentityResourceId عند credential تعيين إلى managedidentity، يمكن تعيين هذه الخاصية لتحديد الهوية المعينة من قبل المستخدم لاستخدامها عند الحصول على رمز مميز. تقبل الخاصية معرف موارد يتوافق مع هوية معينة من قبل المستخدم المعينة للتطبيق. من غير الصالح تحديد كل من معرف المورد ومعرف العميل. إذا لم يتم تحديد أي منهما، يتم استخدام الهوية المعينة من قبل النظام.

قد يتم دعم خيارات أخرى لنوع اتصال معين. راجع الوثائق الخاصة بالمكون الذي يقوم بالاتصال.

متغيرات بيئة Azure SDK

Caution

لا يوصى باستخدام متغيرات بيئة Azure SDK EnvironmentCredential بسبب التأثير غير المقصود المحتمل على الاتصالات الأخرى. كما أنها غير مدعومة بالكامل عند نشرها في Azure Functions.

يمكن أيضا تعيين متغيرات البيئة المقترنة ب Azure SDK EnvironmentCredential ، ولكن لا تتم معالجتها بواسطة خدمة Functions للتحجيم في خطط الاستهلاك. متغيرات البيئة هذه ليست خاصة بأي اتصال واحد وسيتم تطبيقها كافتراضية ما لم يتم تعيين خاصية مقابلة لاتصال معين. على سبيل المثال، إذا AZURE_CLIENT_ID تم تعيين، استخدام هذا كما لو <CONNECTION_NAME_PREFIX>__clientId تم تكوينه. سيؤدي الإعداد <CONNECTION_NAME_PREFIX>__clientId بشكل صريح إلى تجاوز هذا الإعداد الافتراضي.

التطوير النحلي باستخدام الاتصالات المستندة إلى الهوية

Note

يتطلب التطوير المحلي مع الاتصالات المستندة إلى الهوية إصدارا 4.0.3904 من Azure Functions Core Tools، أو إصدارا أحدث.

عند تشغيل مشروع الدالة محليا، يخبر التكوين أعلاه وقت التشغيل باستخدام هوية المطور المحلي. يحاول الاتصال الحصول على رمز مميز من المواقع التالية، بالترتيب:

  • ذاكرة تخزين مؤقت محلية مشتركة بين تطبيقات Microsoft
  • سياق المستخدم الحالي في Visual Studio
  • سياق المستخدم الحالي في Visual Studio Code
  • سياق المستخدم الحالي في واجهة Azure CLI

إذا لم ينجح أي من هذه الخيارات، يحدث خطأ.

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

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

Property قالب متغير البيئة Description
معرف المستأجر <CONNECTION_NAME_PREFIX>__tenantId معرف مستأجر Microsoft Entra (الدليل).
معرف العميل <CONNECTION_NAME_PREFIX>__clientId معرف (تطبيق) العميل لتسجيل التطبيق في المستأجر.
سر العميل <CONNECTION_NAME_PREFIX>__clientSecret سر العميل الذي تم إنشاؤه لتسجيل التطبيق.

فيما يلي مثال على الخصائص local.settings.json المطلوبة للاتصال المستند إلى الهوية ب Azure Blobs:

{
  "IsEncrypted": false,
  "Values": {
    "<CONNECTION_NAME_PREFIX>__blobServiceUri": "<blobServiceUri>",
    "<CONNECTION_NAME_PREFIX>__queueServiceUri": "<queueServiceUri>",
    "<CONNECTION_NAME_PREFIX>__tenantId": "<tenantId>",
    "<CONNECTION_NAME_PREFIX>__clientId": "<clientId>",
    "<CONNECTION_NAME_PREFIX>__clientSecret": "<clientSecret>"
  }
}

الاتصال بموقع التخزين المضيف باستخدام هوية

يستخدم مضيف Azure Functions اتصال التخزين الذي تم تعيينه AzureWebJobsStorage لتمكين السلوكيات الأساسية مثل تنسيق تنفيذ قاعدة بيانات أحادية لمشغلات المؤقت وتخزين مفتاح التطبيق الافتراضي. يمكن أيضا تكوين هذا الاتصال لاستخدام هوية.

Caution

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

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

لاستخدام اتصال يستند إلى الهوية ل AzureWebJobsStorage، قم بتكوين إعدادات التطبيق التالية:

Setting Description مثال للقيمة
AzureWebJobsStorage__blobServiceUri عنوان موقع الويب لوحدة البيانات لخدمة كائن ثنائي كبير الحجم من حساب التخزين. <https:// storage_account_name.blob.core.windows.net>
AzureWebJobsStorage__queueServiceUri عنوان موقع الويب (URI) لوحدة البيانات لخدمة قائمة الانتظار من حساب التخزين. <https:// storage_account_name.queue.core.windows.net>
AzureWebJobsStorage__tableServiceUri عنوان موقع الويب (URI) لوحدة البيانات لخدمة جداول من حساب التخزين. <https:// storage_account_name.table.core.windows.net>

يمكن أيضًا تعيين الخصائص الشائعة للاتصالات المستندة إلى الهوية.

إذا كنت تقوم بتكوين AzureWebJobsStorage باستخدام حساب تخزين يستخدم لاحقة DNS الافتراضية واسم الخدمة ل Azure العمومي، باتباع https://<accountName>.[blob|queue|file|table].core.windows.net التنسيق، يمكنك بدلا من ذلك تعيين AzureWebJobsStorage__accountName إلى اسم حساب التخزين الخاص بك. يتم استنتاج نقاط النهاية لكل خدمة تخزين لهذا الحساب. لا يعمل هذا عندما يكون حساب التخزين في سحابة ذات سيادة أو لديه DNS مخصص.

Setting Description مثال للقيمة
AzureWebJobsStorage__accountName اسم حساب التخزين، صالح فقط إذا لم يكن الحساب في سحابة ذات سيادة وليس لديه DNS مخصص. يعد بناء الجملة هذا فريدا من AzureWebJobsStorage نوعه ولا يمكن استخدامه للاتصالات الأخرى المستندة إلى الهوية. <storage_account_name>

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

Extension الأدوار المطلوبة Explanation
لا يوجد امتداد (المضيف فحسب ) مالك بيانات للبيانات الثنائية الكبيرة للتخزين تستخدم الوظائف تخزين الكائن الثنائي كبير الحجم للتنسيق العام و كمخزن مفاتيح افتراضي.

يمثل هذا السيناريو الحد الأدنى لمجموعة الأذونات للتشغيل العادي، ولكنه لا يتضمن دعم الأحداث التشخيصية1.
No extension (host only), with support for diagnostic events1 لا يوجد ملحق (مضيف فقط)، مع دعم للأحداث التشخيصية1 مالك بيانات تخزين الكائنات الثنائية كبيرة الحجم,
مساهم بيانات جدول التخزين
تستمر الأحداث التشخيصية في تخزين الجدول باستخدام اتصال AzureWebJobsStorage.
Azure Blobs (المشغل فحسب) كل ما يلي:
المساهم في حساب التخزين,
مالك بيانات تخزين الكائنات الثنائية كبيرة الحجم,
مساهم بيانات قائمة انتظار التخزين
يستخدم مشغل الكائن الثنائي كبير الحجم داخليا قوائم انتظار Azure ويكتب إيصالات الكائن الثنائي كبير الحجم. يستخدم اتصال AzureWebJobsStorage لهذه الأغراض، بغض النظر عن الاتصال الذي تم تكوينه للمشغل.
محاور أحداث Azure (المشغل فحسب) (لا تغيير عن المتطلبات الافتراضية)
مالك بيانات للبيانات الثنائية الكبيرة للتخزين
نقاط التحقق مستمرة في النقاط باستخدام اتصال AzureWebJobsStorage.
مشغل المؤقت (لا تغيير عن المتطلبات الافتراضية)
مالك بيانات للبيانات الثنائية الكبيرة للتخزين
لضمان تنفيذ واحد لكل حدث، يتم أخذ الأقفال مع الكائنات الثنائية كبيرة الحجم باستخدام اتصال AzureWebJobsStorage.
Durable Functions كل ما يلي:
مساهم بيانات للبيانات الثنائية الكبيرة للتخزين،
مساهم بيانات قائمة انتظار التخزين،
مساهم بيانات جدول التخزين
تستخدم Durable Functions الكائنات الثنائية كبيرة الحجم وقوائم الانتظار والجداول لتنسيق وظائف النشاط والحفاظ على حالة التزامن. يستخدم اتصال AzureWebJobsStorage بشكل افتراضي، ولكن يمكنك تحديد اتصال مختلف في تكوين ملحق Durable Functions.

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

الاتصال بمورد في مستأجر آخر

إذا كانت وظيفتك بحاجة للاتصال بمورد في مستأجر Microsoft Entra مختلف، يجب أن يستخدم اتصالك بيانات هوية اتحادية. يتطلب ذلك هوية مدارة معينة من قبل المستخدم وتسجيل تطبيق Entra ID متعدد المستأجرين. لا يمكنك استخدام هوية مدارة معينة من النظام للاتصالات بين المستأجرين.

Important

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

لتكوين اتصال هوي عبر المستأجرين، تحتاج أولا إلى إعداد البنية التحتية باستخدام الخطوات التالية:

  1. في المستأجر الذي يتم فيه نشر تطبيق الوظيفة الخاص بك، أنشئ هوية مدارة جديدة مخصصة للمستخدم.
  2. قم بتعيين تلك الهوية لتطبيق الدالة.
  3. في نفس المستأجر، أنشئ تسجيل تطبيق Entra متعدد المستأجرين يمثل المورد الذي ترغب في الوصول إليه.
  4. أضف الهوية المدارة كبيانات هوية اتحادية لتسجيل التطبيق.
  5. في المستأجر الذي يتم فيه نشر المورد، أنشئ تطبيق مؤسسي لتسجيل التطبيق.
  6. تعيين أصار لتطبيق المؤسسات للوصول إلى المورد.

يستخدم الاتصال القائم على الهوية عبر المستأجرين الخصائص التالية، حيث <CONNECTION_NAME_PREFIX> تمثل قيمة خاصتك connection في تعريف الزناد أو الربط:

Property قالب متغير البيئة Description
بيانات اعتماد الرمز المميز <CONNECTION_NAME_PREFIX>__credential مطلوب. عند الاتصال بمورد في مستأجر آخر، قم بتعيين هذه الخاصية إلى managedidentityasfederatedidentity.
سحابة Azure <CONNECTION_NAME_PREFIX>__azureCloud مطلوب. تحدد هذه الخاصية بيئة سحابة Azure. القيم المسموح بها هي "public" ل Azure Public Cloud، و"usgov" ل Azure US Government Cloud، و"china" ل Azure التي تديرها 21Vianet.
معرف العميل <CONNECTION_NAME_PREFIX>__clientId مطلوب. عندما credential يتم تعيين على managedidentityasfederatedidentity، قم بتعيين هذه الخاصية إلى معرف العميل (معرف التطبيق) الخاص بتسجيل التطبيق.

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

يتم استخدام هذه الخاصية بشكل مختلف في سيناريوهات التطوير المحلي، عندما credential لا ينبغي تعيينها.
معرف المستأجر <CONNECTION_NAME_PREFIX>__tenantId مطلوب. عندما credential يتم تعيين على managedidentityasfederatedidentity، قم بتعيين هذه الخاصية إلى معرف المستأجر الخاص بالمستأجر المورد.

يتم استخدام هذه الخاصية بشكل مختلف في سيناريوهات التطوير المحلي، عندما credential لا ينبغي تعيينها.
معرف العميل للهوية المدارة <CONNECTION_NAME_PREFIX>__managedIdentityClientId عندما credential يتم تعيينه على managedidentityasfederatedidentity، تحدد هذه الخاصية الهوية المعينة من قبل المستخدم التي قمت بتهيئة كبيانات هوية اتحادية وتم تعيينها للتطبيق.1 تقبل الخاصية معرف العميل المرتبط بتلك الهوية المعينة من قبل المستخدم.
معرِّف كائن الهوية المدارة <CONNECTION_NAME_PREFIX>__managedIdentityObjectId عندما credential يتم تعيينه على managedidentityasfederatedidentity، تحدد هذه الخاصية الهوية المعينة من قبل المستخدم التي قمت بتهيئة كبيانات هوية اتحادية وتم تعيينها للتطبيق.1 تقبل الخاصية معرف كائن (معرف رئيسي) يتوافق مع تلك الهوية المعينة من قبل المستخدم.
معرف موارد الهوية المدارة <CONNECTION_NAME_PREFIX>__managedIdentityResourceId عندما credential يتم تعيينه على managedidentityasfederatedidentity، تحدد هذه الخاصية الهوية المعينة من قبل المستخدم التي قمت بتهيئة كبيانات هوية اتحادية وتم تعيينها للتطبيق.1 تقبل الخاصية معرف مورد يتوافق مع تلك الهوية المعينة من قبل المستخدم.

1 عندما credential يتم تعيين على managedidentityasfederatedidentity، يجب أن يحدد الاتصال بالضبط واحدا من managedIdentityClientId، managedIdentityObjectId، أو managedIdentityResourceId.

وقد تم توثيق ذلك أيضا من قبل Azure SDK بصيغة JSON.

الإبلاغ عن المشكلات

Item Description Link
Runtime مضيف البرنامج النصي، المشغلات والروابط، دعم اللغة تقديم مشكلة
Templates مشاكل في التعليمات البرمجية مع قالب الإنشاء تقديم مشكلة

المستودعات مفتوحة المصدر

التعليمات البرمجية ل Azure Functions مصدر مفتوح، ويمكنك العثور على المكونات الرئيسية في مستودعات GitHub هذه:

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

لمزيد من المعلومات، راجع الموارد التالية: