البدء السريع: قم بإنشاء دالة TypeScript في Azure من سطر الأوامر
في هذه المقالة، تستخدم أدوات سطر الأوامر لإنشاء دالة TypeScript تستجيب لطلبات HTTP. بعد اختبار التعليمة البرمجية محليًا، يمكنك توزيعها إلى بيئة بلا خادم من دالات Azure.
هام
يتغير محتوى هذه المقالة استنادا إلى اختيارك لنموذج البرمجة Node.js في المحدد في أعلى الصفحة. يتوفر نموذج v4 بشكل عام وتم تصميمه للحصول على تجربة أكثر مرونة وبديهية لمطوري JavaScript وTypeScript. تعرف على المزيد حول الاختلافات بين v3 وv4 في دليل الترحيل.
يتطلب إكمال هذا التشغيل السريع تكلفة صغيرة تبلغ بضعة سنتات أمريكية أو أقل في حساب Azure الخاص بك.
يوجد أيضًا إصدار مستند إلى Visual Studio Code من هذه المقالة.
تكوين البيئة المحلية الخاصة بك
قبل البدء، يجب أن يكون لديك المتطلبات الأساسية التالية:
حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
إحدى الأدوات التالية لإنشاء موارد Azure:
إصدار Azure CLI 2.4 أو الأحدث.
The Azure Az PowerShell module الإصدار 5.9.0 أو الإصدار الأحدث.
TypeScript الإصدار 4+.
تثبيت الأدوات الأساسية لوظائف 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، فيجب إلغاء تثبيت الإصدار القديم من إضافة إزالة البرامج قبل تثبيت أحدث إصدار.
- تأكد من تثبيت الإصدار v4.0.5382 من Core Tools أو إصدار أحدث.
إنشاء مشروع دوال محلية
في Azure Functions، يُعد مشروع الدوال حاوية لدالة فردية واحدة أو أكثر يستجيب كل منها لمشغل معين. تشترك جميع الدوال في المشروع في نفس التكوينات المحلية والاستضافة. في هذا المقطع، يمكنك إنشاء مشروع دالة يحتوي على دالة واحدة.
في مجلد مناسب، قم بتشغيل
func init
الأمر، كما يلي، لإنشاء مشروع TypeScript Node.js v3 في المجلد الحالي:func init --typescript --model V3
يحتوي هذا المجلد الآن على ملفات مختلفة للمشروع، بما في ذلك ملفات التكوينات المسماة local.settings.json host.json. ونظراً لاحتواء ملفات local.settings.json على الأسرار التي تم تنزيلها من Azure، يُستبعد الملف من التحكم في المصدر افتراضيا في ملف .gitignore.
إضافة دالة إلى المشروع باستخدام الأمر التالي حيث
--name
الوسيطة هي الاسم الفريد للدالة (HttpExample)--template
والوسيطة تحدد مشغل الدالة (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
ينشئ مجلدًا فرعيًا يطابق اسم الوظيفة الذي يحتوي على ملف تعليمات برمجية مناسب للغة المختارة للمشروع وملف تكوين باسم function.json .
(اختياري) افحص محتويات الملف
إذا رغبت في ذلك، يمكنك التخطي إلى تشغيل الوظيفة محليًّا وفحص محتويات الملف لاحقًا.
index.ts
يقوم index.ts بتصدير دالة يتم تشغيلها وفقا للتكوين في function.json.
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
context.log('HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
const responseMessage = name
? "Hello, " + name + ". This HTTP triggered function executed successfully."
: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
};
export default httpTrigger;
بالنسبة لمشغل HTTP، تتلقى الدالة بيانات الطلب في متغير req
من نوع HttpRequest كما هو محدد في function.json. كائن الإرجاع، المعرف كما $return
في function.json، هو الاستجابة.
function.json
function.json هو ملف تكوين يعرّف الإدخال والإخراج bindings
للدالة، بما في ذلك نوع المشغل.
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
يتطلب كل ربط اتجاهًا ونوعًا واسمًا فريدًا. يمتلك مشغل بروتوكول نقل النص الفائق رابط إدخال من نوع httpTrigger
ورابط إخراج من نوع http
.
في مجلد مناسب، قم بتشغيل
func init
الأمر، كما يلي، لإنشاء مشروع TypeScript Node.js v4 في المجلد الحالي:func init --typescript
يحتوي هذا المجلد الآن على ملفات مختلفة للمشروع، بما في ذلك ملفات التكوينات المسماة local.settings.json host.json. ونظراً لاحتواء ملفات local.settings.json على الأسرار التي تم تنزيلها من Azure، يُستبعد الملف من التحكم في المصدر افتراضيا في ملف .gitignore. يتم أيضا تثبيت حزم npm المطلوبة في node_modules.
إضافة دالة إلى المشروع باستخدام الأمر التالي حيث
--name
الوسيطة هي الاسم الفريد للدالة (HttpExample)--template
والوسيطة تحدد مشغل الدالة (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
ينشئ ملفا باسم HttpExample.ts في دليل src/functions، والذي يحتوي على التعليمات البرمجية للدالة.إضافة معلومات اتصال Azure Storage في local.settings.json.
{ "Values": { "AzureWebJobsStorage": "<Azure Storage connection information>", "FUNCTIONS_WORKER_RUNTIME": "node" } }
(اختياري) إذا كنت تريد معرفة المزيد حول دالة معينة، على سبيل المثال مشغل HTTP، يمكنك تشغيل الأمر التالي:
func help httptrigger
تشغيل الدالة محليًا
شغل الدالة عن طريق بدء تشغيل مضيف وقت تشغيل دوال Azure المحلي من المجلد LocalFunctionProj:
npm install npm start
npm start
في نهاية الإخراج، يجب أن تظهر السجلات التالية:
إشعار
إذا لم يظهر HttpExample كما هو موضح في السجلات، فمن المحتمل أنك بدأت المضيف من خارج المجلد الجذر للمشروع. في هذه الحالة، استخدم Ctrl+c لإيقاف المضيف، وانتقل إلى المجلد الجذر للمشروع، وقم بتشغيل الأمر السابق مرة أخرى.
انسخ عنوان URL لدالتك
HttpExample
من هذا الإخراج إلى مستعرض وألحق سلسلة?name=<your-name>
الاستعلام ، مما يجعل عنوان URL الكامل مثلhttp://localhost:7071/api/HttpExample?name=Functions
. يجب أن يعرض المستعرض رسالة مثلHello Functions
:تُظهر المحطة الطرفية التي بدأت فيها مشروعك أيضًا إخراج السجل أثناء تقديم الطلبات.
عندما تكون مستعدا، استخدم Ctrl+c واختر y لإيقاف مضيف الوظائف.
إنشاء موارد Azure الداعمة للدالة
قبل أن تتمكن من نشر رمز دالتك على Azure، تحتاج إلى إنشاء ثلاثة موارد:
- مجموعة الموارد، وهي حاوية منطقية للموارد ذات الصلة.
- حساب تخزين، والذي يستخدم للحفاظ على حالة دالاتك والمعلومات الأخرى المتعلقة بها.
- تطبيق الوظيفة، الذي يوفر البيئة لتنفيذ التعليمة البرمجية للوظيفة. يقوم تطبيق الدالة بالتعيين إلى مشروع الدالة المحلي الخاص بك ويسمح لك بتجميع الدالات الخاصة بك كوحدة منطقية لتيسير إدارة الموارد، ونشرها، ومشاركتها.
استخدم الأوامر التالية لإنشاء هذه العناصر. كل من Azure CLI وPowerShell مدعوم.
إذا لم تكن قد فعلت ذلك بالفعل، سجل الدخول إلى Azure:
az login
يقوم الأمر تسجيل الدخول إلى az بتسجيل الدخول إلى حساب Azure الخاص بك.
إنشاء مجموعة موارد مُسماة
AzureFunctionsQuickstart-rg
في المنطقة التي اخترتها:az group create --name AzureFunctionsQuickstart-rg --location <REGION>
ينشئ الأمر az group create مجموعة موارد. في الأمر أعلاه، استبدل
<REGION>
بمنطقة قريبة منك، باستخدام رمز منطقة متاح يتم إرجاعه من الأمر az account list-locations.إنشاء حساب تخزين للأغراض العامة في مجموعة الموارد والمنطقة الخاصة بك:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
يقوم أمر إنشاء حساب التخزين azبإنشاء حساب التخزين.
في المثال السابق، استبدل
<STORAGE_NAME>
باسم مناسب لك وفريد في تخزين Azure. يجب أن تحتوي الأسماء على ثلاثة إلى 24 حرفا من الأرقام والأحرف الصغيرة فقط. يحددStandard_LRS
حساب للأغراض العامة، الذي هو مدعوم من قبل الدالات.
هام
يتم استخدام حساب التخزين لتخزين بيانات التطبيق المهمة، بما في ذلك أحيانا التعليمات البرمجية للتطبيق نفسه. يجب تقييد الوصول من التطبيقات والمستخدمين الآخرين إلى حساب التخزين.
أنشئ تطبيق الدالة في Azure:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime node --runtime-version 18 --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
ينشئ الأمر az functionapp create تطبيق الدالة في Azure. يوصى باستخدام أحدث إصدار من Node.js، وهو حاليا 18. يمكنك تحديد الإصدار عن طريق تعيين
--runtime-version
إلى18
.في المثال السابق، استبدل
<STORAGE_NAME>
باسم الحساب الذي استخدمته في الخطوة السابقة، واستبدل<APP_NAME>
باسم فريد عالمي يناسبك. يعد<APP_NAME>
أيضًا نطاق DNS الافتراضي لتطبيق الدالات.ينشئ هذا الأمر تطبيق الدالة الذي يتم تشغيله في وقت تشغيل لغتك المحددة ضمن خطة استهلاك دوال Azure وهي خطة مجانية لتحديد قيمة الاستخدام الذي تتحمله هنا. يقوم الأمر أيضا بإنشاء مثيل Azure Application Insights مقترن في نفس مجموعة الموارد، والتي يمكنك من خلالها مراقبة تطبيق الوظائف وعرض السجلات. للمزيد من المعلومات، راجع مراقبة دوال Azure. لا يتحمل المثيل أي تكاليف حتى تقوم بتنشيطه.
انشر مشروع الوظيفة في Azure
قبل استخدام Core Tools لنشر مشروعك في Azure، يمكنك إنشاء بنية جاهزة للإنتاج لملفات JavaScript من ملفات مصدر TypeScript.
استخدم الأمر التالي لإعداد مشروع TypeScript للنشر:
npm run build
مع توفر الموارد الضرورية، أنت الآن جاهز لنشر مشروع الوظائف المحلية إلى تطبيق الوظائف في Azure باستخدام أمر النشر . استبدل، في المثال التالي
<APP_NAME>
باسم التطبيق الخاص بك.func azure functionapp publish <APP_NAME>
إذا رأيت الخطأ ، "تعذر العثور على التطبيق بالاسم ..."، فانتظر بضع ثوان وحاول مرة أخرى، حيث قد لا يكون Azure قد هيأ التطبيق بالكامل بعد الأمر السابق
az functionapp create
.يظهر الأمر نشر نتائج مشابهة للإخراج التالي (اقتطاعها للبساطة):
... 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?code=KYHrydo4GFe9y0000000qRgRJ8NdLFKpkakGJQfC3izYVidzzDN4gQ==
استدعاء الدالة في Azure
لأن الوظيفة تستخدم مشغل HTTP، يمكنك استدعاؤها عن طريق إجراء طلب HTTP إلى عنوان URL الخاص به في المتصفح أو باستخدام أداة مثل curl.
نسخ URL Invoke الكاملة المعروضة في نتيجة أمر النشر في شريط عناوين المتصفح، مع إرفاق معلمة الاستعلام?name=Functions
. يجب أن يعرض المتصفح نتيجة مشابهة كما هو الحال عند تشغيل الدالة محلياً.
قم بتشغيل الأمر التالي لعرض السجلات الجارية في الوقت الحقيقي تقريباً:
func azure functionapp logstream <APP_NAME>
في نافذة طرفية منفصلة أو في المتصفح، اضغط على وظيفة التحكم عن بعد مرة أخرى. سيُعرض سجلاً مطولاً لتنفيذ الوظيفة في Azure في المحطة الطرفية.
تنظيف الموارد
إذا تابعت إلى الخطوة التالية وأضفت ربط ناتج قائمة انتظار Azure Storage، فاحتفظ بجميع مواردك في مكانها حيث ستبني على ما قمت به بالفعل.
وإلا، استخدم الأمر التالي لحذف مجموعة الموارد، وجميع الموارد الموجودة فيها لتجنب تكبد المزيد من التكاليف.
az group delete --name AzureFunctionsQuickstart-rg