البرنامج التعليمي: تشغيل تعليمة JavaScript البرمجية في جلسة مترجم التعليمات البرمجية في Azure Container Apps (معاينة)
يوضح هذا البرنامج التعليمي كيفية تنفيذ تعليمة JavaScript البرمجية في جلسات عمل Azure Container Apps الديناميكية باستخدام واجهة برمجة تطبيقات HTTP.
نفذت في هذا البرنامج التعليمي:
- إنشاء جلسة مترجم تعليمة برمجية جديدة
- تعيين سياق الأمان المناسب لتجمع جلسة العمل
- تمرير تعليمة JavaScript البرمجية لتشغيل تطبيق الحاوية
إشعار
ميزة مترجم التعليمات البرمجية JavaScript في جلسات عمل Azure Container Apps الديناميكية قيد المعاينة حاليا. لمزيد من المعلومات، راجع قيود المعاينة.
المتطلبات الأساسية
تحتاج إلى الموارد التالية قبل أن تبدأ هذا البرنامج التعليمي.
مورد | الوصف |
---|---|
حساب Azure | تحتاج إلى حساب "Azure" مع اشتراك مفعل. إذا لم يكن لديك مثل هذا الحساب، فيمكنك إنشاء واحد مجانًا. |
Azure CLI | قم بتثبيت Azure CLI. |
الإعداد
ابدأ بإعداد Azure CLI بأحدث التحديثات وتسجيل الدخول إلى Azure.
تحديث Azure CLI إلى أحدث إصدار.
az upgrade
سجل مزود الموارد
Microsoft.App
.az provider register --namespace Microsoft.App
قم بتثبيت أحدث إصدار من ملحق Azure Container Apps CLI.
az extension add \ --name containerapp \ --allow-preview true --upgrade
تسجيل الدخول إلى أزور.
az login
الاستعلام عن معرف اشتراك Azure وتعيين القيمة إلى متغير.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
تعيين المتغيرات المستخدمة في هذا الإجراء.
قبل تشغيل الأمر التالي، تأكد من استبدال العناصر النائبة المحيطة
<>
بالقيم الخاصة بك.RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION="northcentralus"
يمكنك استخدام هذه المتغيرات لإنشاء الموارد في الخطوات التالية.
تعيين الاشتراك الذي تريد استخدامه لإنشاء مجموعة الموارد
az account set -s $SUBSCRIPTION_ID
قم بإنشاء مجموعة موارد.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION
إنشاء تجمع جلسة مترجم التعليمات البرمجية
az containerapp sessionpool create
استخدم الأمر لإنشاء تجمع جلسة عمل Node.js مسؤول عن تنفيذ تعليمات JavaScript البرمجية العشوائية.
az containerapp sessionpool create \
--name $SESSION_POOL_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--max-sessions 5 \
--network-status EgressEnabled \
--container-type NodeLTS \
--cooldown-period 300
تعيين تعيينات الدور لواجهات برمجة التطبيقات لتنفيذ التعليمات البرمجية
للتفاعل مع واجهة برمجة تطبيقات تجمع جلسة العمل، يجب استخدام هوية مع Azure ContainerApps Session Executor
تعيين الدور. في هذا البرنامج التعليمي، يمكنك استخدام هوية مستخدم معرف Microsoft Entra للاتصال بواجهة برمجة التطبيقات.
الاستعلام عن معرف كائن المستخدم الخاص بك.
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
تعيين الدور لهويتك.
az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee-object-id $USER_OBJECT_ID \ --assignee-principal-type User \ --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME"
الحصول على رمز مميز للحامل
للوصول المباشر إلى واجهة برمجة تطبيقات تجمع جلسة العمل، قم بإنشاء رمز مميز للوصول لتضمينه Authorization
في رأس طلباتك. تأكد من أن الرمز المميز يحتوي على مطالبة جماعة مستهدفة (aud
) بقيمة https://dynamicsessions.io
. لمزيد من المعلومات، راجع قواعد المصادقة والتخويل .
احصل على الرمز المميز للوصول.
JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
إنشاء متغير للاحتفاظ بعنوان الطلب.
AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
يصاحب هذا العنوان الطلب الذي تقوم به إلى نقطة نهاية التطبيق الخاص بك.
الحصول على نقطة نهاية إدارة تجمع الجلسة
استخدم الأمر التالي لإرجاع نقطة نهاية التطبيق.
SESSION_POOL_MANAGEMENT_ENDPOINT=$(az containerapp sessionpool show -n $SESSION_POOL_NAME -g $RESOURCE_GROUP --query "properties.poolManagementEndpoint" -o tsv)
نقطة النهاية هذه هي الموقع الذي تجري فيه استدعاءات واجهة برمجة التطبيقات لتنفيذ حمولة التعليمات البرمجية في جلسة مترجم التعليمات البرمجية.
تنفيذ التعليمات البرمجية في جلسة العمل الخاصة بك
الآن بعد أن أصبح لديك رمز حامل لإنشاء سياق الأمان، ونقطة نهاية تجمع الجلسة، يمكنك إرسال طلب إلى التطبيق لتنفيذ كتلة التعليمات البرمجية الخاصة بك.
قم بتشغيل الأمر التالي لتشغيل التعليمات البرمجية JavaScript لتسجيل "hello world" في التطبيق الخاص بك.
curl -v -X 'POST' -H "$AUTH_HEADER" "$SESSION_POOL_MANAGEMENT_ENDPOINT/code/execute?api-version=2024-02-02-preview&identifier=test" -H 'Content-Type: application/json' -d '
{
"properties": {
"codeInputType": "inline",
"executionType": "synchronous",
"code": "console.log(\"hello-world\")"
}
}'
يجب أن تشاهد الإخراج الذي يشبه المثال التالي.
{
"properties": {
"status": "Success",
"stdout": "hello-world\n",
"stderr": "",
"executionResult": "",
"executionTimeInMilliseconds": 5
}
}
يمكنك العثور على المزيد من نماذج واجهة برمجة تطبيقات مترجم التعليمات البرمجية على GitHub.
تنظيف الموارد
الموارد التي تم إنشاؤها في هذا البرنامج التعليمي لها تأثير على فاتورة Azure. إذا كنت لن تستخدم هذه الخدمات على المدى الطويل، فقم بتشغيل الأمر التالي لإزالة كل شيء تم إنشاؤه في هذا البرنامج التعليمي.
az group delete \
--resource-group $RESOURCE_GROUP