إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في هذا البدء السريع، تستخدم كود Visual Studio لبناء تطبيق يستجيب للأحداث في حاوية تخزين Blob. بعد اختبار الكود محليا باستخدام محاكي، تقوم بنشره على تطبيق وظائف بدون خادم جديد يعمل بخطة استهلاك مرنة في Azure Functions.
يستخدم المشروع إضافة Azure Developer CLI (azd) مع كود Visual Studio لتبسيط تهيئة والتحقق من كود مشروعك محليا، بالإضافة إلى نشر الكود على Azure. يتبع هذا النشر أفضل الممارسات الحالية لتوزيع وظائف Azure الآمنة والقابلة للتطوير.
تدعم هذه المقالة الإصدار 4 من نموذج البرمجة Node.js ل Azure Functions.
تدعم هذه المقالة الإصدار 2 من نموذج برمجة Python ل Azure Functions.
المتطلبات الأساسية
حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
Visual Studio Code في واحدة من النظم الأساسية المدعومة.
ملحق Azure Functions للمحرر Visual Studio Code. يتطلب هذا الملحق أدوات Azure Functions الأساسية. عندما لا تكون هذه الأداة متوفرة محليا، يحاول الملحق تثبيتها باستخدام مثبت يستند إلى الحزمة. يمكنك أيضا تثبيت حزمة الأدوات الأساسية أو تحديثها عن طريق التشغيل
Azure Functions: Install or Update Azure Functions Core Toolsمن لوحة الأوامر. إذا لم يكن لديك npm أو Homebrew مثبتا على الكمبيوتر المحلي، فيجب عليك بدلا من ذلك تثبيت Core Tools أو تحديثها يدويا.
ملحق #C لـ Visual Studio Code.
مجموعة تطوير جافا، الإصدارات 8، 11، 17 أو 21 (لينكس).
Apache Maven، الإصدار 3.0 أو إصدار أعلى.
حزمة ملحق Java
-
Node.js 18.x أو أعلى. يمكنك استخدام أمر
node --versionللتحقق من الإصدار الخاص بك.
إصدارات Python التي تدعمها دوال Azure. لمزيد من المعلومات، راجع كيفية تثبيت Python.
- ملحق Azure Developer CLI ل Visual Studio Code.
إضافة REST Client أو أداة REST مكافئة تستخدمها لتنفيذ طلبات HTTP بأمان.
تهيئة المشروع
استخدم الأمر azd init من لوحة الأوامر لإنشاء مشروع كود محلي ل Azure Functions من قالب معين.
في Visual Studio Code، افتح مجلدا أو مساحة عمل حيث تريد إنشاء مشروعك.
اضغط F1 لفتح لوحة الأوامر، ابحث عن الأمر
Azure Developer CLI (azd): Initialize App (init)ونفذه، ثم اختر اختيار قالب.قد يكون هناك تأخير طفيف أثناء
azdتهيئة المجلد أو مساحة العمل الحالية.
عند المطالبة، اختر تحديد قالب، ثم ابحث عن .
Azure Functions C# Event Grid Blob Trigger using Azure Developer CLIعند الطلب في الطرفية، أدخل اسم بيئة فريد، مثل
blobevents-dotnet.يقوم هذا الأمر بسحب ملفات المشروع من مستودع القوالب وتهيئة المشروع في المجلد أو مساحة العمل الحالية.
عند المطالبة، اختر تحديد قالب، ثم ابحث عن .
Azure Functions Python Event Grid Blob Trigger using Azure Developer CLIعند الطلب في الطرفية، أدخل اسم بيئة فريد، مثل
blobevents-python.يقوم هذا الأمر بسحب ملفات المشروع من مستودع القوالب وتهيئة المشروع في المجلد أو مساحة العمل الحالية.
عند المطالبة، اختر تحديد قالب، ثم ابحث عن .
Azure Functions TypeScript Event Grid Blob Trigger using Azure Developer CLIعند المطالبة، أدخل اسم بيئة فريدا، مثل
blobevents-typescript.يقوم هذا الأمر بسحب ملفات المشروع من مستودع القوالب وتهيئة المشروع في المجلد أو مساحة العمل الحالية.
عند المطالبة، اختر تحديد قالب، ثم ابحث عن .
Azure Functions Java Event Grid Blob Trigger using Azure Developer CLIعند المطالبة، أدخل اسم بيئة فريدا، مثل
blobevents-java.يقوم هذا الأمر بسحب ملفات المشروع من مستودع القوالب وتهيئة المشروع في المجلد أو مساحة العمل الحالية.
عند المطالبة، اختر تحديد قالب، ثم ابحث عن .
Azure Functions PowerShell Event Grid Blob Trigger using Azure Developer CLIعند المطالبة، أدخل اسم بيئة فريدا، مثل
blobevents-powershell.يقوم هذا الأمر بسحب ملفات المشروع من مستودع القوالب وتهيئة المشروع في المجلد أو مساحة العمل الحالية.
في azd، تحتفظ البيئة بسياق توزيع فريد لتطبيقك، ويمكنك تحديد أكثر من واحد. كما أنه جزء من اسم مجموعة الموارد التي تقوم بإنشائها في Azure.
أضف ملف local.settings.json
يحتاج Functions إلى ملف local.settings.json لتكوين المضيف عند التشغيل محليا.
شغل هذا الأمر للذهاب إلى
srcمجلد التطبيق:cd src
قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
قم بإنشاء ملف باسم local.settings.json في
srcالمجلد الذي يحتوي على بيانات JSON هذه:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python", "PDFProcessorSTORAGE": "UseDevelopmentStorage=true" } }
إنشاء وتنشيط البيئة الظاهرية
في src المجلد، قم بتشغيل هذه الأوامر لإنشاء وتفعيل بيئة افتراضية باسم .venv:
python3 -m venv .venv
source .venv/bin/activate
إذا لم تقم بايثون بتثبيت حزمة venv على توزيعة لينكس الخاصة بك، شغل الأمر التالي:
sudo apt-get install python3-venv
إعداد المحاكي المحلي للتخزين
استخدم محاكي Azurite لتشغيل مشروع التعليمات البرمجية محليا قبل إنشاء موارد Azure واستخدامها.
إذا لم تكن قد قمت بذلك بالفعل، فقم بتثبيت Azurite.
اضغط على F1. في لوحة الأوامر، ابحث عن الأمر
Azurite: Startوقم بتشغيله لبدء تشغيل محاكي التخزين المحلي.في منطقة Azure، قم بتوسيع محاكيحسابات> التخزين المرفقة في مساحة العمل>المحلية، ثم انقر بزر الفأرة الأيمن (Ctrl-click على ماك) حاويات Blob Containers، ثم اختر إنشاء حاوية Blob Container...، ثم أنشئ هاتين الحاويتين في المحاكي المحلي:
-
unprocessed-pdf: الحاوية التي يراقبها المشغل لأحداث التخزين. -
processed-pdf: الحاوية حيث ترسل الدالة كتل معالجة كمخرجات.
-
قم بتوسيع حاويات البلوب، انقر بزر الفأرة الأيمن (Ctrl-click على ماك) unprocessed pdf، اختر رفع الملفات...، اضغط Enter لقبول المجلد الجذري، وارفع ملفات PDF من
dataمجلد المشروع.
عند التشغيل محليا، يمكنك استخدام REST لتفعيل الوظيفة عن طريق محاكاة تلقي الوظيفة رسالة من اشتراك حدث.
تشغيل الدالة محليًا
يتكامل Visual Studio Code مع أدوات Azure Functions Core للسماح لك بتشغيل هذا المشروع على كمبيوتر التطوير المحلي باستخدام محاكي Azurite.
PDFProcessorSTORAGE يحدد متغير البيئة اتصال حساب التخزين، والذي يتم ضبطه أيضا في "UseDevelopmentStorage=true" ملف local.settings.json عند تشغيله محليا.
شغل هذا الأمر من مجلد المشروع
srcفي محطة طرفية أو موجه أوامر:func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startعندما يبدأ مضيف الوظائف، يكتب اسم الزناد ونوع الزناد على مخرج الطرفية. في قسم الوظائف، يحتوي مجلد جذر المشروع على ملف host.json.
مع استمرار تشغيل Core Tools في Terminal، افتح الملف
test.httpفي مشروعك واختر إرسال طلب لتفعيل الوظيفةProcessBlobUploadعن طريق إرسال حدث blob اختبار إلى webhook الخاص بحدث blob.تحاكي هذه الخطوة استلام حدث من اشتراك حدث عند التشغيل محليا، ويجب أن ترى معلومات الطلب والملف المعالج مكتوبة في السجلات. إذا لم تكن تستخدم عميل REST، يجب عليك استخدام أداة REST آمنة أخرى لاستدعاء نقطة النهاية مع الحمولة في
test.http.في منطقة مساحة العمل الخاصة بحاوية blob، قم بتوسيع ملف معالجة PDF وتحقق من أن الوظيفة عالجت ملف PDF ونسخته مع
processed-بادئة.عند الانتهاء، اضغط على Ctrl+C في نافذة المحطة الطرفية لإيقاف
func.exeعملية المضيف.
راجع الكود (اختياري)
يمكنك مراجعة الكود الذي يحدد تفعيل كتلة شبكة الأحداث في ملف المشروع ProcessBlobUpload.cs. توضح الدالة كيف:
- الاستخدام
BlobTriggerمعSource = BlobTriggerSource.EventGridللمعالجة شبه الفورية - ربط إلى
BlobClientللكتلة المصدر وللوجهةBlobContainerClient - أعالج محتوى blob وأنسخه إلى حاوية أخرى باستخدام التدفقات
يمكنك مراجعة الكود الذي يحدد تفعيل كتلة شبكة الأحداث في ملف المشروع function_app.py. توضح الدالة كيف:
- الاستخدام
@app.blob_triggerمعsource="EventGrid"للمعالجة شبه الفورية - الوصول إلى محتوى blob باستخدام
InputStreamالمعامل - نسخ الملفات المعالجة إلى الحاوية الوجهة باستخدام مجموعة تطوير البرمجيات الخاصة بذاكرة Azure Storage
يمكنك مراجعة الكود الذي يحدد تفعيل كتلة شبكة الأحداث في ملف المشروع processBlobUpload.ts. توضح الدالة كيف:
- الاستخدام
app.storageBlob()معsource: 'EventGrid'للمعالجة شبه الفورية - الوصول إلى محتوى blob باستخدام Node.js Azure Storage SDK
- معالجة ونسخ الملفات إلى حاوية الوجهة بشكل غير متزامن
يمكنك مراجعة الكود الذي يحدد تفعيل شبكة الأحداث في ملف المشروع ProcessBlobUpload.java. توضح الدالة كيف:
- الاستخدام
@BlobTriggerمعsource = "EventGrid"للمعالجة شبه الفورية - الوصول إلى محتوى blob باستخدام
BlobInputStreamالمعامل - نسخ الملفات المعالجة إلى الحاوية الوجهة باستخدام Azure Storage SDK لجافا
يمكنك مراجعة الكود الذي يحدد تفعيل كتلة شبكة الأحداث في ملف مشروع ProcessBlobUpload/run.ps1 وملف function.jsonالمقابل. توضح الدالة كيف:
- تكوين مشغل blob مع
"source": "EventGrid"في function.json للمعالجة شبه اللحظية - Access blob content using PowerShell Azure Storage cmdlets
- معالجة ونسخ الملفات إلى الحاوية الوجهة باستخدام وحدات Azure PowerShell
بعد مراجعة التعليمات البرمجية للوظيفة والتحقق منها محليا، حان الوقت لنشر المشروع على Azure.
إنشاء موارد Azure ونشرها
استخدم الأمر azd up لإنشاء تطبيق الوظيفة ضمن خطة استهلاك مرنة مع موارد Azure المطلوبة الأخرى، بما في ذلك اشتراك الحدث. بعد أن تصبح البنية التحتية جاهزة، azd يقوم أيضا بنشر كود مشروعك على تطبيق الوظائف الجديد في Azure.
لفتح لوحة الأوامر في تعليمة Visual Studio البرمجية، اضغط على F1. ابحث عن الأمر
Azure Developer CLI (azd): Sign In with Azure Developer CLIونفذه، ثم سجل الدخول باستخدام حساب Azure الخاص بك.في جذر المشروع، اضغط F1 لفتح لوحة الأوامر. ابحث عن الأمر ونفذه
Azure Developer CLI (azd): Provision and Deploy (up)لإنشاء موارد Azure المطلوبة ونشر الكود الخاص بك.عند مطالبتك في نافذة المحطة الطرفية، قم بتوفير معلمات النشر المطلوبة التالية:
Prompt الوصف حدد اشتراك Azure لاستخدامه اختر الاشتراك الذي تريد من خلاله إنشاء مواردك. اسم البيئة بيئة تستخدم للحفاظ على سياق نشر فريد لتطبيقك. موقع Azure منطقة Azure التي يتم فيها إنشاء مجموعة الموارد التي تحتوي على موارد Azure الجديدة. يتم عرض المناطق التي تدعم حاليا خطة استهلاك Flex فقط. azd upيستخدم الأمر ردودك على هذه التعليمات باستخدام ملفات تكوين Bicep لإنشاء وتكوين هذه الموارد المطلوبة من Azure، وفقا لأحدث أفضل الممارسات:- خطة استهلاك Flex وتطبيق الوظائف
- Azure Storage account with blob containers
- رؤى التطبيقات (موصى بها)
- نهج الوصول والأدوار لحسابك
- اشتراك شبكة الأحداث لفعاليات البلوب
- الاتصالات بين الخدمة باستخدام الهويات المدارة (بدلا من سلاسل الاتصال المخزنة)
بعد إكمال الأمر بنجاح، يعمل تطبيقك في Azure مع اشتراك حدث مهيأ لتفعيل وظيفتك عند إضافة الكتل إلى الحاوية
unprocessed-pdf.دون ملاحظة ل
AZURE_STORAGE_ACCOUNT_NAMEوAZURE_FUNCTION_APP_NAMEفي المخرج. هذه الأسماء فريدة لحساب التخزين وتطبيق الوظائف في Azure على التوالي.
تحقق من الدالة المنشورة
في كود Visual Studio، اضغط F1. في لوحة الأوامر، ابحث عن الأمر
Azure Storage: Upload Files...وقم بتشغيله . اقبل الدليل الجذري، وكما كان من قبل، قم برفع ملف PDF أو أكثر منdataمجلد المشروع.عند طلب ذلك، اختر اسم حساب التخزين الجديد الخاص بك (من
AZURE_STORAGE_ACCOUNT_NAME). اختر Blob Containers>unprocessed-pdf.اضغط على F1. في لوحة الأوامر، ابحث عن الأمر
Azure Storage: Open in Explorerوقم بتشغيله . اختر نفس حساب > التخزين Blob Containers>processed-pdf، ثم افتح في نافذة جديدة.في المستكشف، تحقق من أن ملفات PDF التي رفعتها تمت معالجتها بواسطة وظيفتك. يتم كتابة المخرجات على الحاوية
processed-pdfمعprocessed-بادئة.
تقوم كتلة شبكة الأحداث بمعالجة الملفات خلال ثوان من الرفع. تظهر هذه السرعة القدرات شبه الفورية لهذا النهج مقارنة بمحفزات الكتل التقليدية القائمة على الاستطلاعات.
إعادة نشر التعليمات البرمجية الخاصة بك
شغل azd up الأمر عدة مرات تحتاج لتوفير موارد Azure ونشر تحديثات الكود إلى تطبيق الوظائف الخاص بك.
ملاحظة
تتم دائما الكتابة فوق ملفات التعليمات البرمجية المنشورة بواسطة أحدث حزمة نشر.
يتم تخزين استجاباتك الأولية للمطالبات azd وأي متغيرات بيئة تم إنشاؤها بواسطة azd محليا في البيئة المسماة.
azd env get-values استخدم الأمر لمراجعة كافة المتغيرات في بيئتك التي تم استخدامها عند إنشاء موارد Azure.
تنظيف الموارد
عندما تنتهي من العمل مع تطبيق الوظائف والموارد ذات الصلة، استخدم هذا الأمر لحذف تطبيق الوظائف وموارده ذات الصلة من Azure. يساعدك هذا الإجراء على تجنب تكبد أي تكاليف إضافية:
azd down --no-prompt
ملاحظة
يرشد --no-promptazd الخيار إلى حذف مجموعة الموارد الخاصة بك دون تأكيد منك.
لا يؤثر هذا الأمر على مشروع التعليمات البرمجية المحلية.