تشغيل وظائفك من ملف حزمة في Azure

في Azure، يمكنك تشغيل وظائفك مباشرة من ملف حزمة توزيع في تطبيق الوظائف. يتمثل الخيار الآخر في توزيع ملفاتك في دليل d:\home\site\wwwroot (لنظام التشغيل Windows) أو /home/site/wwwroot (لنظام التشغيل Linux) لتطبيق الوظائف الخاص بك.

توضح هذه المقالة فوائد تشغيل الوظائف الخاصة بك من حزمة. كما توضح كيفية تمكين هذه الوظيفة في تطبيق الوظائف الخاص بك.

فوائد التشغيل من ملف حزمة

هناك العديد من الفوائد للتشغيل من ملف حزمة:

  • يقلل من مخاطر مشكلات تأمين نسخ الملفات.
  • يمكن توزيعها في تطبيق إنتاج (مع إعادة التشغيل).
  • يمكنك التأكد من الملفات التي يتم تشغيلها في تطبيقك.
  • تحسين أداء عمليات توزيع Azure Resource Manager.
  • قد يقلل من أوقات البدء الباردة، وخاصة بالنسبة إلى وظائف JavaScript مع أشجار حزمة npm كبيرة.

لمزيد من المعلومات، راجع هذا الإعلان.

تمكين الوظائف للتشغيل من حزمة

لتمكين تطبيق الوظائف الخاص بك للتشغيل من حزمة، أضف إعداد WEBSITE_RUN_FROM_PACKAGE إلى إعدادات تطبيق الوظائف الخاص بك. يمكن أن يحتوي إعداد WEBSITE_RUN_FROM_PACKAGE على إحدى القيم التالية:

قيمة ‏‏الوصف
1 تشير إلى أن تطبيق الوظائف يعمل من ملف حزمة محلي تم نشره في المجلد d:\home\data\SitePackages (لنظام التشغيل Windows) أو /home/data/SitePackages (لنظام التشغيل Linux) لتطبيق الوظائف الخاص بك.
<URL> تضبط عنوان URL ذي الموقع البعيد لملف الحزمة المحدد الذي تريد تشغيله. مطلوب لتطبيقات الوظائف التي تعمل على Linux في خطة الاستهلاك.

يشير الجدول التالي إلى خيارات WEBSITE_RUN_FROM_PACKAGE الموصى بها للتوزيع إلى نظام تشغيل معين وخطة استضافة:

خطة الاستضافة Windows Linux
الاستهلاك يوصى بـ 1 بشدة. يتم دعم <URL> فقط.
بريميوم يوصى بـ 1. يوصى بـ 1.
مخصصه يوصى بـ 1. يوصى بـ 1.

اعتبارات عامة

  • يجب أن يكون ملف الحزمة بتنسيق zip. تنسيقات Tar وgzip غير مدعومة حالياً.
  • يوصى بـ توزيع Zip.
  • عند توزيع تطبيق الوظائف الخاص بك إلى Windows، يجب تعيين WEBSITE_RUN_FROM_PACKAGE إلى 1 ونشره بتوزيع الرمز البريدي.
  • عند التشغيل من حزمة، يصبح المجلد wwwroot للقراءة فقط وستتلقى خطأ عند كتابة الملفات إلى هذا الدليل. كما أن الملفات للقراءة فقط في مدخل Microsoft Azure.
  • يبلغ الحد الأقصى لحجم ملف حزمة التوزيع حالياً 1 GB.
  • لا يمكنك استخدام ذاكرة التخزين المؤقت المحلية عند التشغيل من حزمة توزيع.
  • إذا كان مشروعك بحاجة إلى استخدام البنية عن بعد، فلا تستخدم إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE. بدلاً من ذلك، أضف إعداد تطبيق تخصيص التوزيع SCM_DO_BUILD_DURING_DEPLOYMENT=true. بالنسبة إلى نظام التشغيل Linux، أضف الإعداد ENABLE_ORYX_BUILD=true أيضاً. لمعرفة المزيد، راجع البنية عن بعد.

إشعار

لا يعمل WEBSITE_RUN_FROM_PACKAGE مع MSDeploy كما هو موضح هنا. ستتلقى خطأ أثناء النشر مثل ARM-MSDeploy Deploy Failed. تغيير /MSDeploy إلى /ZipDeploy وسيتم حل هذا الخطأ.

إضافة إعداد WEBSITE_RUN_FROM_PACKAGE

توجد عدة طرق يمكنك من خلالها إضافة إعدادات تطبيق الوظائف وتحديثها وحذفها:

تتطلب التغييرات في إعدادات تطبيق الوظائف إعادة تشغيل تطبيق الوظائف.

Using WEBSITE_RUN_FROM_PACKAGE = 1

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

اعتبارات التوزيع من حزمة في الموقع

  • استخدام حزمة في الموقع هو الخيار الموصى به للتشغيل من حزمة التوزيع، باستثناء نظام التشغيل Linux المستضاف في خطة الاستهلاك.
  • توزيع Zip هو الطريقة الموصى بها لتحميل حزمة توزيع إلى موقعك.
  • عند عدم استخدام نشر zip، تأكد من أن المجلد d:\home\data\SitePackages (لنظام التشغيل Windows) أو /home/data/SitePackages (لنظام التشغيل Linux) يحتوي على ملف يسمى packagename.txt. يحتوي هذا الملف فقط على اسم ملف الحزمة الموجود في هذا المجلد الذي يعمل حالياً، دون أي مسافة.

التكامل مع توزيع الرمز البريدي

توزيع الرمز البريدي هو ميزة لـ Azure App Service التي تمكنك من توزيع مشروع تطبيق الوظائف الخاص بك إلى الدليل wwwroot. يتم حزم المشروع كملف توزيع .zip. يمكن استخدام واجهات برمجة التطبيقات نفسها لتوزيع حزمتك إلى المجلد d:\home\data\SitePackages (لنظام التشغيل Windows) أو /home/data/SitePackages (لنظام التشغيل Linux).

مع قيمة إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE لـ 1، تقوم واجهات برمجة التطبيقات لتوزيع zip بنسخ حزمتك إلى المجلد d:\home\data\SitePackages (لنظام التشغيل Windows) أو /home/data/SitePackages (لنظام التشغيل Linux) بدلاً من استخراج الملفات إلى d:\home\site\wwwroot (لنظام التشغيل Windows) أو /home/site/wwwroot (لنظام التشغيل Linux). كما أنه ينشئ الملف packagename.txt. بعد إعادة التشغيل، يتم إدخال الحزمة إلى wwwroot كنظام ملفات للقراءة فقط. لمزيد من المعلومات حول توزيع الرمز البريدي، راجع توزيع الرمز البريدي لـ Azure Functions.

إشعار

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

Using WEBSITE_RUN_FROM_PACKAGE = URL

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

اعتبارات التوزيع من عنوان URL

  • عند تشغيل تطبيق وظائف على نظام التشغيل Windows، يوفر إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE = <URL> أداء أسوأ للتشغيل العادي ولا يوصى به.
  • عند تحديد عنوان URL، يجب أيضاً مزامنة المشغلات يدوياً بعد نشر حزمة محدثة.
  • يجب أن يكون لوقت تشغيل الوظائف أذونات للوصول إلى عنوان URL للحزمة.
  • يجب عدم توزيع الحزمة الخاصة بك على مخزن الكائنات الثنائية كبيرة الحجم في Azure ككائن ثنائي عام كبير الحجم. بدلاً من ذلك، استخدم حاوية خاصة مع توقيع الوصول المشترك (SAS) أو استخدم هوية مدارة لتمكين وقت تشغيل الوظائف للوصول إلى الحزمة.
  • يجب الاحتفاظ بأي عناوين URL ل SAS مستخدمة للنشر. عند انتهاء صلاحية SAS، لا يمكن نشر الحزمة. في هذه الحالة، يجب إنشاء SAS جديد وتحديث الإعداد في تطبيق الوظائف. يمكنك التخلص من عبء الإدارة هذا باستخدام هوية مدارة.
  • عند التشغيل على الخطة المميزة، تأكد من التخلص من حالات التشغيل العادي.
  • عند التشغيل على خطة مخصصة، تأكد من تمكين مجموعات قابلية وصول عالية التوفر AlwaysOn.
  • بمجرد استخدام مستكشف تخزين Azure لتحميل ملفات الحزم إلى حاويات الكائنات الثنائية كبيرة الحجم في حساب التخزين الخاص بك.

تحميل حزمة يدوياً إلى مخزن الكائنات الثنائية كبيرة الحجم

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

  1. إنشاء حزمة .zip لمشروعك باستخدام الأداة المساعدة التي تختارها.

  2. في مدخل Azure، ابحث عن اسم حساب التخزين أو استعرض بحثاً عنه في حسابات التخزين.

  3. في حساب التخزين، حدد الحاويات ضمن تخزين البيانات.

  4. حدد + الحاوية لإنشاء حاوية Blob Storage جديدة لحسابك.

  5. في صفحة الحاوية الجديدة، قم بتوفير الاسم (على سبيل المثال، "عمليات التوزيع")، وتأكد من أن مستوى الوصول العامهوخاص، وحدد إنشاء.

  6. حدد الحاوية التي أنشأتها، وحدد تحميل واستعرض إلى موقع ملف .zip الذي أنشأته مع المشروع، وحدد تحميل.

  7. بعد اكتمال التحميل، اختر ملف كائن ثنائي كبير الحجم الذي تم تحميله، وانسخ عنوان URL. قد تحتاج إلى إنشاء عنوان URL لـ SAS إذا كنت لا تستخدم هوية

  8. ابحث عن تطبيق الوظائف الخاص بك أو استعرضه في صفحة Function App.

  9. في تطبيق الوظائف الخاص بك، حدد التكوينات أسفل الإعدادات.

  10. في علامة التبويب إعدادات التطبيق، حدد إعداد التطبيق الجديد

  11. أدخل قيمة WEBSITE_RUN_FROM_PACKAGEلـ الاسم، والصق عنوان URL الخاص بالحزمة الخاصة بك في Blob Storage كقيمة.

  12. حدد موافق. ثم حدد Save>Continue لحفظ الإعداد وإعادة تشغيل التطبيق.

الآن يمكنك تشغيل الوظيفة الخاصة بك في Azure للتحقق من نجاح عملية التوزيع باستخدام ملف .zip لحزمة التوزيع.

يبين التالي تطبيق وظائف تم تكوينه لتشغيله من ملف .zip مستضاف في تخزين Azure Blob:

WEBSITE_RUN_FROM_ZIP app setting

إحضار حزمة من Azure Blob Storage باستخدام هوية مدارة

يمكن تكوين Azure Blob Storage لتخويل الطلبات باستخدام معرف Microsoft Entra. وهذا يعني أنه بدلاً من إنشاء مفتاح SAS مع انتهاء الصلاحية، يمكنك بدلاً من ذلك الاعتماد على الهوية المدارة للتطبيق. بشكل افتراضي، سيتم استخدام الهوية المعيّنة من قبل النظام للتطبيق. إذا كنت ترغب في تحديد هوية معيّنة من قبل المستخدم، يمكنك ضبط إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID على معرّف المورد لتلك الهوية. يمكن أن يقبل الإعداد أيضًا "SystemAssigned" كقيمة، على الرغم من أن هذا مثل حذف الإعداد تمامًا.

لتمكين إحضار الحزمة باستخدام الهوية:

  1. تأكد من تكوين الكائن الثنائي كبير الحجم للوصول الخاص.

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

  3. قم بتعيين إعداد التطبيق WEBSITE_RUN_FROM_PACKAGE إلى عنوان URL للكائن الثنائي كبير الحجم للحزمة. من المحتمل أن يكون هذا من النموذج "https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}" أو ما شابه ذلك.

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