إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذه المقالة، يمكنك استخدام أدوات سطر الأوامر المحلية لإنشاء دالة تستجيب لطلبات HTTP. بعد التحقق من التعليمات البرمجية محليا، يمكنك توزيعها إلى خطة استضافة استهلاك Flex بلا خادم في Azure Functions.
يتطلب إكمال هذا التشغيل السريع تكلفة صغيرة تبلغ بضعة سنتات أمريكية أو أقل في حساب Azure الخاص بك.
تأكد من تحديد لغة التطوير المفضلة لديك في أعلى المقالة.
Prerequisites
- حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
-
مجموعة مطوري Java 17
- إذا كنت تستخدم إصدارا آخر مدعوما من Java، يجب تحديث ملف pom.xml للمشروع.
-
JAVA_HOMEيجب تعيين متغير البيئة إلى موقع تثبيت الإصدار الصحيح من Java Development Kit (JDK).
- أباتشي مافن 3.8.x
jqمعالج JSON سطر الأوامر، المستخدم لتحليل إخراج JSON، وهو متاح أيضا في Azure Cloud Shell.
تثبيت الأدوات الأساسية لوظائف Azure
تعتمد الطريقة الموصى بها لتثبيت Core Tools على نظام تشغيل كمبيوتر التطوير المحلي.
الخطوات التالية استخدام مثبت Windows (MSI) لتثبيت أدوات الأساسية v4.x. لمزيدٍ من المعلومات حول المثبتات الأخرى المستندة إلى الحزمة، راجع الملف الأساسي أدوات القراءة.
قم بتنزيل وتشغيل مثبت الأدوات الأساسية، استنادًا إلى إصدار Windows:
- v4.x - Windows 64-bit (موصى به. يتطلب تصحيح أخطاء Visual Studio Code 64 بت.)
- v4.x - Windows 32-بت
إذا كنت قد استخدمت مثبت Windows (MSI) مسبقا لتثبيت Core Tools على Windows، فيجب إلغاء تثبيت الإصدار القديم من إضافة إزالة البرامج قبل تثبيت أحدث إصدار.
إنشاء وتنشيط البيئة الظاهرية
في مجلد مناسب، شغل الأوامر التالية لإنشاء وتنشيط بيئة ظاهرية باسم .venv. تأكد من استخدام أحد إصدارات Python التي تدعمها Azure Functions.
python -m venv .venv
source .venv/bin/activate
إذا لم يثبت Python حزمة venv على توزيع Linux الخاص بك، فشغل الأمر التالي:
sudo apt-get install python3-venv
شغل جميع الأوامر اللاحقة في هذه البيئة الافتراضية النشطة.
إنشاء مشروع تعليمة برمجية محلية ودالة
في Azure Functions، مشروع الكود الخاص بك هو تطبيق يحتوي على وظيفة أو أكثر فردية تستجيب كل منها لمحفز محدد. تشترك جميع الدالات في مشروع في نفس التكوينات ويتم نشرها كوحدة إلى Azure. في هذا القسم، يمكنك إنشاء مشروع تعليمة برمجية يحتوي على دالة واحدة.
في terminal أو موجه الأوامر، قم بتشغيل هذا
func initالأمر لإنشاء مشروع تطبيق دالة في المجلد الحالي:func init --worker-runtime dotnet-isolated
في terminal أو موجه الأوامر، قم بتشغيل هذا
func initالأمر لإنشاء مشروع تطبيق دالة في المجلد الحالي:func init --worker-runtime node --language javascript
في terminal أو موجه الأوامر، قم بتشغيل هذا
func initالأمر لإنشاء مشروع تطبيق دالة في المجلد الحالي:func init --worker-runtime powershell
في terminal أو موجه الأوامر، قم بتشغيل هذا
func initالأمر لإنشاء مشروع تطبيق دالة في المجلد الحالي:func init --worker-runtime python
في terminal أو موجه الأوامر، قم بتشغيل هذا
func initالأمر لإنشاء مشروع تطبيق دالة في المجلد الحالي:func init --worker-runtime node --language typescript
في terminal أو موجه الأوامر، قم بتشغيل هذا
func initالأمر لإنشاء مشروع تطبيق دالة في المجلد الحالي:func init --worker-runtime custom
في مجلد فارغ، قم بتشغيل هذا
mvnالأمر لإنشاء مشروع التعليمات البرمجية من نموذج أصلي Azure Functions Maven:mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17Important
- استخدم
-DjavaVersion=11إذا كنت تريد تشغيل دالاتك على Java 11. لمعرفة المزيد، راجع إصدارات Java. - قم بتعيين
JAVA_HOMEمتغير البيئة إلى موقع تثبيت النسخة الصحيحة من JDK لإكمال هذا المقال.
- استخدم
يطلب منك Maven القيم اللازمة لإنهاء إنشاء المشروع عند النشر.
قم بتوفير القيم التالية عند مطالبتك:Prompt Value Description groupId com.fabrikamقيمة تُعرّف المشروع الخاص بك بشكل فريد عبر جميع المشاريع، باتباع قواعد تسمية الحزمة لـ Java التالية. artifactId fabrikam-functionsقيمة تمثل اسم jar، بدون رقم إصدار. version 1.0-SNAPSHOTاختر القيمة الافتراضية. package com.fabrikamقيمة تمثل حزمة Java للتعليمات البرمجية للدالة التي تم إنشاؤها. استخدم الافتراضي. اكتب
Yأو اضغط إدخال للتأكيد.يقوم Maven بإنشاء ملفات المشروع في مجلد جديد باسم artifactId ، وهو في هذا المثال
fabrikam-functions.انتقل إلى مجلد المشروع:
cd fabrikam-functionsيمكنك مراجعة التعليمات البرمجية التي تم إنشاؤها بواسطة القالب لوظيفة مشغل HTTP الجديدة في Function.java في دليل المشروع \src\main\java\com\fabrikam .
استخدم هذا
func newالأمر لإضافة دالة إلى مشروعك:func new --name HttpExample --template "HTTP trigger" --authlevel "function"تتم إضافة ملف تعليمة برمجية جديد إلى مشروعك. في هذه الحالة، الوسيطة
--nameهي الاسم الفريد للدالة (HttpExample) وتحدد--templateالوسيطة مشغل HTTP.
يحتوي المجلد الجذر للمشروع على ملفات متنوعة للمشروع ، بما في ذلك ملفات التكوينات المسماة local.settings.json و host.json. نظرا لأن local.settings.json يمكن أن تحتوي على أسرار تم تنزيلها من Azure، يتم استبعاد الملف من التحكم في المصدر بشكل افتراضي في ملف .gitignore
إنشاء وبناء دالتك
يعلن ملف function.json في مجلد HttpExample عن دالة مشغل HTTP. يمكنك إكمال الدالة عن طريق إضافة معالج وتحويله برمجيًا إلى قابل للتنفيذ.
اضغط على Ctrl + N (Cmd + N على macOS) لإنشاء ملف جديد. احفظه كمعالج.goفي جذر تطبيق الدالة (في نفس المجلد مثل host.json).
في handler.go، أضف التعليمات البرمجية التالية واحفظ الملف. هذا هو معالج Go المخصص الخاص بك.
package main import ( "fmt" "log" "net/http" "os" ) func helloHandler(w http.ResponseWriter, r *http.Request) { message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n" name := r.URL.Query().Get("name") if name != "" { message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name) } fmt.Fprint(w, message) } func main() { listenAddr := ":8080" if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok { listenAddr = ":" + val } http.HandleFunc("/api/HttpExample", helloHandler) log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr) log.Fatal(http.ListenAndServe(listenAddr, nil)) }اضغط على Ctrl + Shift + ' أو حدد New Terminal من قائمة Terminal لفتح محطة طرفية متكاملة جديدة في VS Code.
قم بالتحويل البرمجي للمعالج المخصص لديك باستخدام الأمر التالي. ملف قابل للتنفيذ يسمى
handler(handler.exeعلى Windows) هو الإخراج في المجلد الجذر لتطبيق الوظائف.go build handler.go
تكوين تطبيق وظيفتك
يجب تكوين مضيف الدالة لتشغيل ثنائي المعالج المخصص لديك عند بدء تشغيله.
افتح host.json.
في
customHandler.descriptionالقسم ، قم بتعيين قيمةdefaultExecutablePathإلىhandler(في Windows، قم بتعيينها إلىhandler.exe).في
customHandlerالقسم ، أضف خاصية باسمenableForwardingHttpRequestواضبط قيمتها علىtrue. بالنسبة للوظائف التي تتكون من مشغل HTTP فقط، يبسط هذا الإعداد البرمجة من خلال السماح لك بالعمل مع طلب HTTP نموذجي بدلا من حمولة طلب المعالج المخصص.تأكد من أن
customHandlerالمقطع يبدو مثل هذا المثال. حفظ الملف."customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
تم تكوين تطبيق الدالة لبدء المعالج المخصص القابل للتنفيذ.
تشغيل الدالة محليًا
تحقق من الدالة الجديدة عن طريق تشغيل المشروع محليا واستدعاء نقطة نهاية الدالة.
استخدم هذا الأمر لبدء مضيف وقت تشغيل Azure Functions المحلي في جذر مجلد المشروع:
func startnpm install npm startmvn clean package mvn azure-functions:runنحو نهاية المخرج، تظهر الأسطر التالية:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...انسخ عنوان URL لوظيفتك
HttpExampleمن هذا المخرج إلى متصفح وتصفح إلى رابط الدالة. يجب أن تتلقى ردا ناجحا برسالة "مرحبا بالعالم".Note
نظرا لأن تفويض مفتاح الوصول غير مطبق عند التشغيل محليا، فإن رابط الوظيفة المرتجع لا يتضمن قيمة مفتاح الوصول ولا تحتاجه لاستدعاء وظيفتك.
عند الانتهاء ، استخدم Ctrl+C واختر
yإيقاف مضيف الوظائف.
إنشاء موارد Azure الداعمة للدالة
قبل أن تتمكن من نشر التعليمات البرمجية للدالة إلى Azure، تحتاج إلى إنشاء هذه الموارد:
- مجموعة موارد، وهي حاوية منطقية للموارد ذات الصلة.
- حساب تخزين افتراضي، يتم استخدامه من قبل مضيف الوظائف للحفاظ على الحالة والمعلومات الأخرى حول وظائفك.
- هوية مدارة يعينها المستخدم، والتي يستخدمها مضيف الوظائف للاتصال بحساب التخزين الافتراضي.
- تطبيق الوظيفة، الذي يوفر البيئة لتنفيذ التعليمة البرمجية للوظيفة. يقوم تطبيق الدالة بالتعيين إلى مشروع الدالة المحلي الخاص بك ويسمح لك بتجميع الدالات الخاصة بك كوحدة منطقية لتيسير إدارة الموارد، ونشرها، ومشاركتها.
استخدم أوامر Azure CLI في هذه الخطوات لإنشاء الموارد المطلوبة.
إذا لم تكن قد فعلت ذلك بالفعل، سجل الدخول إلى Azure:
az loginaz loginيسجل لك الأمر الدخول إلى حساب Azure الخاص بك. تخطي هذه الخطوة عند التشغيل في Azure Cloud Shell.إذا لم تكن قد فعلت ذلك بالفعل، فاستخدم هذا
az extension addالأمر لتثبيت ملحق Application Insights:az extension add --name application-insightsاستخدم الأمر az group create لإنشاء مجموعة موارد باسم
AzureFunctionsQuickstart-rgفي المنطقة التي اخترتها:az group create --name "AzureFunctionsQuickstart-rg" --location "<REGION>"في هذا المثال، استبدل
<REGION>بمنطقة قريبة منك تدعم خطة استهلاك Flex. استخدم الأمر az functionapp list-flexconsumption-locations لعرض قائمة المناطق المدعومة حاليا.استخدم الأمر az storage account create لإنشاء حساب تخزين للأغراض العامة في مجموعة الموارد والمنطقة:
az storage account create --name <STORAGE_NAME> --location "<REGION>" --resource-group "AzureFunctionsQuickstart-rg" \ --sku "Standard_LRS" --allow-blob-public-access false --allow-shared-key-access falseفي هذا المثال، استبدل
<STORAGE_NAME>باسم مناسب لك وفريد في Azure Storage. يجب أن تحتوي الأسماء على ثلاثة إلى 24 حرفا من الأرقام والأحرف الصغيرة فقط. يحددStandard_LRSحساب للأغراض العامة، الذي هو مدعوم من قبل الدالات. يمكن الوصول إلى هذا الحساب الجديد فقط باستخدام هويات Microsoft Entra المصادق عليها والتي تم منحها أذونات لموارد معينة.استخدم هذا البرنامج النصي لإنشاء هوية مدارة معينة من قبل المستخدم، وتحليل خصائص JSON التي تم إرجاعها للكائن باستخدام
jq، ومنحStorage Blob Data Ownerالأذونات في حساب التخزين الافتراضي:output=$(az identity create --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" --location <REGION> \ --query "{userId:id, principalId: principalId, clientId: clientId}" -o json) userId=$(echo $output | jq -r '.userId') principalId=$(echo $output | jq -r '.principalId') clientId=$(echo $output | jq -r '.clientId') storageId=$(az storage account show --resource-group "AzureFunctionsQuickstart-rg" --name <STORAGE_NAME> --query 'id' -o tsv) az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal \ --role "Storage Blob Data Owner" --scope $storageIdإذا لم يكن لديك
jqالأداة المساعدة في Bash shell المحلية، فهي متوفرة في Azure Cloud Shell. في هذا المثال، استبدل<STORAGE_NAME>و<REGION>باسم حساب التخزين الافتراضي والمنطقة، على التوالي.ينشئ الأمر az identity create هوية تسمى
func-host-storage-user. يتم استخدام الذي تم إرجاعهprincipalIdلتعيين أذونات لهذه الهوية الجديدة في حساب التخزين الافتراضي باستخدامaz role assignment createالأمر .az storage account showيتم استخدام الأمر للحصول على معرف حساب التخزين.استخدم الأمر az functionapp create لإنشاء تطبيق الوظائف في Azure:
az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime dotnet-isolated --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime java --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime node --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \ --runtime other --storage-account <STORAGE_NAME> \ --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"في هذا المثال، استبدل هذه العناصر النائبة بالقيم المناسبة:
-
<APP_NAME>: اسم فريد عالميا مناسب لك.<APP_NAME>هو أيضا مجال DNS الافتراضي لتطبيق الوظائف. -
<STORAGE_NAME>: اسم الحساب الذي استخدمته في الخطوة السابقة. -
<REGION>: منطقتك الحالية. -
<LANGUAGE_VERSION>: استخدم نفس نسخة مكدس اللغة المدعومة التي تحققت منها محليا، عند الاقتضاء.
ينشئ هذا الأمر تطبيق وظائف يعمل في وقت تشغيل اللغة المحدد على Linux في خطة استهلاك Flex، وهو مجاني لمقدار الاستخدام الذي تتحمله هنا. يقوم الأمر أيضا بإنشاء مثيل Azure Application Insights مقترن في نفس مجموعة الموارد، والتي يمكنك استخدامها لمراقبة عمليات تنفيذ تطبيق الوظائف وعرض السجلات. للمزيد من المعلومات، راجع مراقبة دوال Azure. لا يتحمل المثيل أي تكاليف حتى تقوم بتنشيطه.
-
استخدم هذا البرنامج النصي لإضافة الهوية المدارة المعينة من قبل المستخدم إلى دور Monitoring Metrics Publisher في مثيل Application Insights الخاص بك:
appInsights=$(az monitor app-insights component show --resource-group "AzureFunctionsQuickstart-rg" \ --app <APP_NAME> --query "id" --output tsv) principalId=$(az identity show --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" \ --query principalId -o tsv) az role assignment create --role "Monitoring Metrics Publisher" --assignee $principalId --scope $appInsightsفي هذا المثال، استبدل
<APP_NAME> باسم تطبيق الوظائف الخاص بك. يضيف الأمر az role assignment create المستخدم إلى الدور. يتم الحصول على معرف المورد لمثيل Application Insights الخاص بك والمعرف الأساسي للمستخدم باستخدام عرض مكون az monitor app-insights والأوامرaz identity show، على التوالي.
تحديث إعدادات التطبيق
لتمكين مضيف الوظائف من الاتصال بحساب التخزين الافتراضي باستخدام الأسرار المشتركة، استبدل AzureWebJobsStorage إعداد سلسلة الاتصال بعدة إعدادات مسبقة ب AzureWebJobsStorage__. تحدد هذه الإعدادات إعدادا معقدا يستخدمه تطبيقك للاتصال بالتخزين وApplication Insights بهوية مدارة يعينها المستخدم.
استخدم هذا البرنامج النصي للحصول على معرف العميل للهوية المدارة المعينة من قبل المستخدم ويستخدمه لتعريف اتصالات الهوية المدارة لكل من التخزين وApplication Insights:
clientId=$(az identity show --name func-host-storage-user \ --resource-group AzureFunctionsQuickstart-rg --query 'clientId' -o tsv) az functionapp config appsettings set --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" \ --settings AzureWebJobsStorage__accountName=<STORAGE_NAME> \ AzureWebJobsStorage__credential=managedidentity AzureWebJobsStorage__clientId=$clientId \ APPLICATIONINSIGHTS_AUTHENTICATION_STRING="ClientId=$clientId;Authorization=AAD"في هذا البرنامج النصي، استبدل
<APP_NAME>و<STORAGE_NAME>بأسماء تطبيق الوظائف وحساب التخزين، على التوالي.قم بتشغيل الأمر az functionapp config appsettings delete لإزالة إعداد سلسلة الاتصال الموجودة
AzureWebJobsStorage، والذي يحتوي على مفتاح سري مشترك:az functionapp config appsettings delete --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" --setting-names AzureWebJobsStorageفي هذا المثال، استبدل
<APP_NAME>بأسماء تطبيق الوظائف.
في هذه المرحلة، يمكن لمضيف الوظائف الاتصال بحساب التخزين بأمان باستخدام هويات مدارة بدلا من الأسرار المشتركة. يمكنك الآن نشر التعليمات البرمجية لمشروعك إلى موارد Azure.
انشر مشروع الوظيفة في Azure
بعد إنشاء تطبيق الوظائف بنجاح في Azure، تصبح الآن جاهزا لنشر مشروع الوظائف المحلية باستخدام func azure functionapp publish الأمر .
في مجلد المشروع الجذر، قم بتشغيل هذا
func azure functionapp publishالأمر:func azure functionapp publish <APP_NAME>في هذا المثال، استبدل
<APP_NAME>باسم تطبيقك. يظهر التوزيع الناجح نتائج مشابهة للإخراج التالي (مقتطع للتبسيط):... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexampleفي طرفك المحلي أو موجه الأوامر، شغل هذا الأمر للحصول على قيمة نقطة نهاية الURL، بما في ذلك مفتاح الوصول:
func azure functionapp list-functions <APP_NAME> --show-keysفي هذا المثال، استبدل
<APP_NAME>مرة أخرى باسم تطبيقك.انسخ عنوان URL ومفتاح نقطة النهاية المرتجع، والذي تستخدمه لاستدعاء نقطة النهاية الخاصة بالدالة.
تحديث ملف pom.xml
بعد أن تنشئ تطبيق الوظائف الخاص بك بنجاح في Azure، قم بتحديث ملف pom.xml حتى يتمكن Maven من نشره في تطبيقك الجديد. وإلا، يقوم Maven بإنشاء مجموعة جديدة من موارد Azure أثناء النشر.
في Azure Cloud Shell، استخدم هذا
az functionapp showالأمر للحصول على عنوان URL لحاوية النشر ومعرف الهوية المدارة الجديدة المعينة من قبل المستخدم:az functionapp show --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg \ --query "{userAssignedIdentityResourceId: properties.functionAppConfig.deployment.storage.authentication.userAssignedIdentityResourceId, \ containerUrl: properties.functionAppConfig.deployment.storage.value}"في هذا المثال، استبدل
<APP_NAME>بأسماء تطبيق الوظائف.في دليل الجذر للمشروع، افتح ملف pom.xml في محرر نصوص، حدد موقع العنصر
properties، وحدث هذه القيم الخاصة بالخصائص:اسم الخاصية Value java.versionاستخدم نفس إصدار مكدس اللغة المدعوم الذي تحققت منه محليا، مثل 17.azure.functions.maven.plugin.version1.37.1azure.functions.java.library.version3.1.0functionAppNameاسم تطبيق الوظائف في Azure. ابحث عن
configurationقسم منazure-functions-maven-pluginواستبدله بجزء XML هذا:<configuration> <appName>${functionAppName}</appName> <resourceGroup>AzureFunctionsQuickstart-rg</resourceGroup> <pricingTier>Flex Consumption</pricingTier> <region>....</region> <runtime> <os>linux</os> <javaVersion>${java.version}</javaVersion> </runtime> <deploymentStorageAccount>...</deploymentStorageAccount> <deploymentStorageResourceGroup>AzureFunctionsQuickstart-rg</deploymentStorageResourceGroup> <deploymentStorageContainer>...</deploymentStorageContainer> <storageAuthenticationMethod>UserAssignedIdentity</storageAuthenticationMethod> <userAssignedIdentityResourceId>...</userAssignedIdentityResourceId> <appSettings> <property> <name>FUNCTIONS_EXTENSION_VERSION</name> <value>~4</value> </property> </appSettings> </configuration>في العنصر الجديد
configuration، قم بإجراء هذه الاستبدالات المحددة لقيم علامات الحذف (...):Configuration Value regionرمز المنطقة لتطبيق الوظائف الحالي، مثل eastus.deploymentStorageAccountاسم حساب التخزين خاصتك. deploymentStorageContainerاسم مشاركة التوزيع، والذي يأتي بعد \في القيمة التيcontainerUrlحصلت عليها.userAssignedIdentityResourceIdمعرف المورد المؤهل بالكامل لهويتك المدارة، والتي حصلت عليها. احفظ التغييرات التي أجريتها على ملف pom.xml .
يمكنك الآن استخدام Maven لنشر مشروع التعليمات البرمجية إلى تطبيقك الحالي.
انشر مشروع الوظيفة في Azure
من موجه الأوامر، قم بتشغيل هذا الأمر:
mvn clean package azure-functions:deployبعد نجاح النشر، شغل أمر Core Tools هذا للحصول على قيمة نقطة نهاية URL، بما في ذلك مفتاح الوصول:
func azure functionapp list-functions <APP_NAME> --show-keysفي هذا المثال، استبدل
<APP_NAME>مرة أخرى باسم تطبيقك.انسخ عنوان URL ومفتاح نقطة النهاية المرتجع، والذي تستخدمه لاستدعاء نقطة النهاية الخاصة بالدالة.
استدعاء الدالة في Azure
نظرا لأن وظيفتك تستخدم مشغل HTTP وتدعم طلبات GET، فإنك تستدعيه عن طريق تقديم طلب HTTP إلى عنوانه الإلكتروني باستخدام مفتاح الوصول على مستوى الوظيفة. من الأسهل تنفيذ طلب GET في المتصفح.
الصق عنوان URL ومفتاح الوصول الذي نسخته في شريط عنوان المتصفح.
يجب أن يبدو عنوان URL لنقطة النهاية مشابها لهذا المثال:
https://contoso-app.azurewebsites.net/api/httpexample?code=aabbccdd...
في هذه الحالة، يجب عليك أيضا توفير مفتاح وصول في سلسلة الاستعلام عند تقديم طلب GET إلى رابط نقطة النهاية. يوصى باستخدام مفتاح الوصول للحد من الوصول من العملاء العشوائيين. عند تقديم طلب POST باستخدام عميل HTTP، يجب عليك بدلا من ذلك توفير مفتاح الوصول في الرأس x-functions-key .
عند الانتقال إلى عنوان URL هذا، يجب أن يعرض المستعرض إخراجا مشابها كما هو الحال عند تشغيل الدالة محليا.
تنظيف الموارد
إذا واصلت إلى الخطوة التالية وأضفت ربط إخراج قائمة انتظار Azure Storage، فاحتفظ بجميع مواردك في مكانها حيث ستبني على ما قمت به بالفعل.
وإلا، استخدم الأمر التالي لحذف مجموعة الموارد، وجميع الموارد الموجودة فيها لتجنب تكبد المزيد من التكاليف.
- Azure CLI
- Azure PowerShell
az group delete --name AzureFunctionsQuickstart-rg