تقنيات التوزيع في Azure Functions

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

أساليب التوزيع

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

يصف الجدول التالي أساليب النشر المتوفرة لمشروع التعليمات البرمجية.

نوع التوزيع الأساليب الأفضل بالنسبة إلى...
مستند إلى الأدوات نشر Visual Studio Code
نشر Visual Studio
نشر الأدوات الأساسية
عمليات التوزيع أثناء التطوير والنشرات المرتجلة الأخرى. نشر التعليمات البرمجية عند الطلب باستخدام أدوات التطوير المحلية.
خدمة مُدارة في التطبيق مركز التوزيع (CI/CD)
توزيعات الحاوية
التوزيع المستمر (CI/CD) من عنصر التحكم في المصادر أو من سجل حاوية. تتم إدارة عمليات التوزيع بواسطة النظام الأساسي App Service (Kudu).
مسارات خارجية البنية الأساسية لبرنامج ربط العمليات التجارية في Azure
إجراءات GitHub
مسارات الإنتاج التي تتضمن التحقق من الصحة والاختبار والإجراءات الأخرى التي يجب تشغيلها كجزء من توزيع تلقائي. تتم إدارة عمليات التوزيع بواسطة المسار.

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

مدى توافر تقنية التوزيع

تعتمد طريقة التوزيع أيضا على خطة الاستضافة ونظام التشغيل الذي تقوم بتشغيل تطبيق الوظائف عليه.
حاليا، تقدم Functions ثلاث خطط استضافة:

كل خطة لها سلوكيات مختلفة. لا تتوفر جميع تقنيات النشر لكل خطة استضافة ونظام تشغيل. يوفر هذا المخطط معلومات حول تقنيات النشر المدعومة:

تقنية التوزيع استهلاك Windows Windows Premium الـ Windows المخصص استهلاك Linux Linux Premium الـ Linux المخصص
عنوان URLللحزمة الخارجية 1
توزيع Zip
حاوية Docker
التحكم بالمصادر
Git1 المحلي
FTPS1
التحريرفي المدخل 2

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

المفاهيم الرئيسية

تُعد بعض المفاهيم الأساسية مهمة لفهم كيفية عمل عمليات التوزيع إلى Azure Functions.

مزامنة المشغّل

عند تغيير أي من المشغلات، يجب أن تعلم البنية الأساسية في Functions بالتغييرات. تحدث المزامنة تلقائيًا للعديد من تقنيات التوزيع. ومع ذلك، في بعض الحالات، يجب عليك مزامنة المشغلات يدويًا.

يجب مزامنة المشغلات يدويا عند استخدام خيارات النشر هذه:

يمكنك مزامنة المشغلات بإحدى الطرق الثلاث:

  • إعادة تشغيل تطبيق الوظائف في مدخل Microsoft Azure.
  • أرسِل طلب HTTP POST https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> لاستخدام المفتاح الأساسي.
  • إرسال طلب HTTP POST إلى https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. استبدل العناصر النائبة بمعرّف الاشتراك واسم مجموعة الموارد واسم تطبيق الوظائف. يتطلب هذا الطلب رمز وصول مميز في Authorization عنوان الطلب.

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

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

بناء بعيد

يمكن أن تقوم Azure Functions تلقائيًا بتنفيذ البنيات على التعليمات البرمجية التي تتلقاها بعد عمليات توزيع zip. تختلف هذه الإصدارات اعتمادا على ما إذا كان تطبيقك يعمل على Windows أو Linux.

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

عند توزيع تطبيق على Windows، يتم تشغيل أوامر خاصة باللغة، مثل dotnet restore (C#) أو npm install (JavaScript).

تنطبق الاعتبارات التالية عند استخدام البنيات البعيدة أثناء النشر:

  • يتم دعم الإصدارات عن بعد لتطبيقات الوظائف التي تعمل على Linux في خطة الاستهلاك. ومع ذلك، فإن خيارات النشر محدودة لهذه التطبيقات لأنه ليس لديها scm موقع (Kudu).
  • تحتوي scm تطبيقات الوظائف التي تعمل على Linux على خطة Premium أو في خطة مخصصة (خدمة التطبيقات) على موقع (Kudu)، ولكنها محدودة مقارنة ب Windows.
  • لا يتم تنفيذ الإصدارات البعيدة عندما يستخدم تطبيق التشغيل من الحزمة. لمعرفة كيفية استخدام الإنشاء عن بعد في هذه الحالات، راجع توزيع Zip.
  • قد تواجه مشكلات في الإنشاء عن بعد عند إنشاء تطبيقك قبل توفير الميزة (1 أغسطس 2019). بالنسبة للتطبيقات القديمة، إما إنشاء تطبيق دالة جديد أو تشغيل az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> لتحديث تطبيق الوظائف. قد يتطلب الأمر إجراء محاولتين للنجاح.

تخزين محتوى التطبيق

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

هام

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

تفاصيل تقنية التوزيع

تتوفر أساليب التوزيع التالية في Azure Functions.

عنوان URL خارجي للحزمة

يمكنك استخدام عنوان URL خارجي للحزمة كمرجع إلى ملف حزمة بعيد (.zip) يحتوي على تطبيق الوظائف. يتم تنزيل الملف من عنوان URL المتوفر، ويتم تشغيل التطبيق في وضع التشغيل من الحزمة.

كيفية استخدامه: أضِفWEBSITE_RUN_FROM_PACKAGE إلى إعدادات التطبيق. ينبغي أن تكون قيمة هذا الإعداد عبارة عن عنوان URL (موقع ملف الحزمة المحدد الذي تريد تشغيله). يمكنك إضافة إعدادات إما في المدخل أو باستخدام Azure CLI.

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

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

مكان تخزين محتوى التطبيق: يتم تخزين محتوى التطبيق في عنوان URL المحدد. قد يكون هذا على Azure Blobs، ربما في حساب التخزين المحدد بواسطة AzureWebJobsStorage الاتصال. قد تكون بعض أدوات العميل افتراضية للنشر إلى كائن ثنائي كبير الحجم في هذا الحساب. على سبيل المثال، بالنسبة لتطبيقات استهلاك Linux، سيحاول Azure CLI النشر من خلال حزمة مخزنة في كائن ثنائي كبير الحجم على الحساب المحدد بواسطة AzureWebJobsStorage.

توزيع Zip

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

كيفية استخدامه: وزّع باستخدام أداة العميل المفضلة لديك: Visual Studio Code، أو Visual Studio، أو من سطر الأوامر باستخدام الأدوات الأساسية في Azure Functions. تستخدم هذه الأدوات بشكل افتراضي توزيع zip وتشغيله من الحزمة. تعمل كل من الأدوات الأساسية وملحق Visual Studio Code على تمكين الإنشاء عن بُعد عند التوزيع إلى Linux. لتوزيع ملف .zip يدويًا إلى تطبيق الوظائف، اتبع الإرشادات الموجودة في التوزيع من ملف .zip أو عنوان URL.

عند التوزيع باستخدام توزيع zip، يمكنك تعيين التطبيق للتشغيل من الحزمة. للتشغيل من الحزمة، عيّن قيمة إعدادات التطبيق WEBSITE_RUN_FROM_PACKAGE على 1. نوصي بتوزيع zip. فهو يعمل على إنتاج أوقات تحميل أسرع للتطبيقات، وهو الإعداد الافتراضي لـ VS Code وVisual Studio وAzure CLI.

متى يتم استخدامه: توزيع Zip هو تقنية التوزيع الموصى بها على Azure Functions.

حيث يتم تخزين محتوى التطبيق: يتم تخزين محتوى التطبيق من نشر zip بشكل افتراضي على نظام الملفات، والذي قد يتم دعمه بواسطة Azure Files من حساب التخزين المحدد عند إنشاء تطبيق الوظائف. في Linux Consumption، يستمر محتوى التطبيق بدلا من ذلك على كائن ثنائي كبير الحجم في حساب التخزين المحدد بواسطة AzureWebJobsStorage الاتصال.

حاوية Docker

يمكنك نشر تطبيق دالة يعمل في حاوية Linux.

كيفية استخدامه: أنشئ وظائفك في حاوية Linux ثم انشر الحاوية إلى خطة Premium أو Dedicated في Azure Functions أو مضيف حاوية آخر. استخدم Azure Functions Core Tools لإنشاء Dockerfile مخصص لمشروعك الذي تستخدمه لإنشاء تطبيق دالة في حاوية. يمكنك استخدام الحاوية في عمليات التوزيع التالية:

متى تستخدمه: استخدم خيار حاوية Docker عندما تحتاج إلى مزيد من التحكم في بيئة Linux حيث يتم تشغيل تطبيق الوظائف ومكان استضافة الحاوية. تتوفر آلية النشر هذه فقط للوظائف التي تعمل على Linux.

حيث يتم تخزين محتوى التطبيق: يتم تخزين محتوى التطبيق في سجل الحاوية المحدد كجزء من الصورة.

‏‫التحكم في المصدر

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

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

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

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

Git محلي

يمكنك استخدام Git محلي لدفع التعليمات البرمجية من الجهاز المحلي إلى Azure Functions باستخدام Git.

كيفية استخدامه: اتبع الإرشادات في توزيع Git المحلي إلى Azure App Service.

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

حيث يتم تخزين محتوى التطبيق: يتم تخزين محتوى التطبيق على نظام الملفات، والذي قد يتم دعمه بواسطة Azure Files من حساب التخزين المحدد عند إنشاء تطبيق الوظائف.

FTP/S

يمكنك استخدام FTP/S لنقل الملفات مباشرة إلى Azure Functions، على الرغم من أن أسلوب النشر هذا غير مستحسن. عندما لا تخطط لاستخدام FTP، يجب تعطيله. إذا اخترت استخدام بروتوكول نقل الملفات، فيجب عليك فرض بروتوكولات نقل الملفات. لمعرفة كيفية القيام به في مدخل Microsoft Azure، راجع فرض FTPS.

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

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

حيث يتم تخزين محتوى التطبيق: يتم تخزين محتوى التطبيق على نظام الملفات، والذي قد يتم دعمه بواسطة Azure Files من حساب التخزين المحدد عند إنشاء تطبيق الوظائف.

تحرير المدخل

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

كيفية استخدامه: لكي تتمكن من تحرير وظائفك في مدخل Microsoft Azure، يجب أن تكون قد أنشأت وظائفك في المدخل. للحفاظ على مصدر واحد للحقيقة، باستخدام أي أسلوب توزيع آخر يجعل الوظيفة للقراءة فقط ويمنع استمرار تحرير المدخل. للعودة إلى الحالة التي يمكنك فيها تحرير ملفاتك في مدخل Microsoft Azure، يمكنك إعادة تشغيل وضع التحرير يدويا وإزالة Read/Write أي إعدادات تطبيق متعلقة بالنشر (مثل WEBSITE_RUN_FROM_PACKAGE).

متى يتم استخدامه: المدخل هو وسيلة جيدة للبدء مع Azure Functions. لمزيد من أعمال التطوير المتقدمة، نوصي باستخدام إحدى أدوات العميل التالية:

حيث يتم تخزين محتوى التطبيق: يتم تخزين محتوى التطبيق على نظام الملفات، والذي قد يتم دعمه بواسطة Azure Files من حساب التخزين المحدد عند إنشاء تطبيق الوظائف.

يعرض الجدول التالي أنظمة التشغيل واللغات التي تدعم التحرير في المدخل:

اللغة استهلاك Windows Windows Premium الـ Windows المخصص استهلاك Linux Linux Premium الـ Linux المخصص
C#‎1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 يتم دعم التحرير في المدخل فقط لملفات البرنامج النصي C#، والتي تعمل قيد المعالجة مع المضيف. لمزيد من المعلومات، راجع مرجع مطور البرنامج النصي Azure Functions C# (.csx).
2 يتم دعم التحرير في المدخل فقط لنموذج برمجة v1 Python.

سلوكيات التوزيع

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

إذا كنت بحاجة إلى مزيد من التحكم في هذا الانتقال، ينبغي استخدام فتحات التوزيع.

الفتحات الخاصة بالنشر

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

تعتمد الطريقة التي تنشر بها على فتحة على أداة التوزيع المحددة التي تستخدمها. على سبيل المثال، عند استخدام Azure Functions Core Tools، يمكنك تضمين--slot الخيار للإشارة إلى اسم فتحة معينة للأمر func azure functionapp publish .

للحصول على مزيدٍ من المعلومات حول فتحات التوزيع، راجع وثائق فتحات توزيع Azure Functions للحصول على التفاصيل.

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

اقرأ هذه المقالات لمعرفة المزيد حول توزيع تطبيق الوظائف: