مشاركة عبر


Quickstart: إنشاء وظيفة في Azure Container Apps

في هذا البدء السريع، تقوم بإنشاء وظيفة Azure Container Apps. في تطبيقات الحاويات، تستخدم الوظائف لبدء مهام الحاويات التي تعمل لمدة محددة ثم تخرج. الوظائف مناسبة بشكل أفضل لمهام مثل معالجة البيانات، تعلم الآلة، تنظيف الموارد، أو أي سيناريو يتطلب معالجة عند الطلب.

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

المتطلبات الأساسية

للحصول على معلومات حول الميزات التي لا تدعمها وظائف تطبيقات الحاويات، راجع قيود الوظائف.

أعِد البيئة

  1. لتسجيل الدخول إلى Azure من واجهة الأزرار، قم بتشغيل الأمر التالي واتبع التعليمات لإكمال عملية المصادقة.

    az login
    
  2. تأكد من أنك تشغل أحدث إصدار من واجهة واجهة Azure عبر az upgrade الأمر.

    az upgrade
    
  3. قم بتثبيت أحدث إصدار من إضافة Container Apps CLI.

    az extension add --name containerapp --upgrade
    
  4. سجل المساحات Microsoft.Appالاسمية و Microsoft.StorageMicrosoft.OperationalInsights، وإذا لم تكن مسجلة بالفعل في اشتراكك في أزور.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    az provider register --namespace Microsoft.Storage
    
  5. حدد المتغيرات البيئية المستخدمة في هذا المقال.

    RESOURCE_GROUP="jobs-quickstart"
    LOCATION="northcentralus"
    ENVIRONMENT="env-jobs-quickstart"
    JOB_NAME="my-job"
    

إنشاء بيئة تطبيقات الحاوية

تعمل بيئة تطبيقات الحاويات كحاجز عزل حول تطبيقات ووظائف الحاويات بحيث يمكنها مشاركة نفس الشبكة والتواصل مع بعضها البعض.

  1. إنشاء مجموعة موارد باستخدام الأمر التالي.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. أنشئ بيئة تطبيقات الحاويات باستخدام الأمر التالي.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

إنشاء مهمة يدوية وتشغيلها

لاستخدام الوظائف اليدوية، تبدأ أولا بإنشاء وظيفة بنوع Manual من الزناد ثم تبدأ تشغيلها. يمكنك بدء عدة عمليات لنفس الوظيفة، ويمكن تنفيذ عدة مهام في نفس الوقت.

  1. أنشئ وظيفة في بيئة تطبيقات الحاويات باستخدام الأمر التالي.

    az containerapp job create \
        --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP"  --environment "$ENVIRONMENT" \
        --trigger-type "Manual" \
        --replica-timeout 1800 \
        --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
        --cpu "0.25" --memory "0.5Gi"
    

    المهام اليدوية لا تعمل تلقائيا. يجب أن تبدأ كل وظيفة.

  2. ابدأ المهمة باستخدام الأمر التالي.

    az containerapp job start \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP"
    

    تعيد الأوامر معلومات مفصلة عن تنفيذ المهمة، بما في ذلك اسمها.

إنشاء مهمة مجدولة وتشغيلها

لاستخدام المهام المجدولة، تقوم بإنشاء وظيفة بنوع Schedule من المحفز وتعبير cron يحدد الجدول.

استخدم الأمر التالي لإنشاء مهمة تطبيقات الحاويات التي تبدأ كل دقيقة.

az containerapp job create \
    --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP"  --environment "$ENVIRONMENT" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

تبدأ جولات المهام تلقائيا بناء على الجدول.

تستخدم cron وظائف تطبيقات الحاويات تعبيرات لتعريف الجداول. تدعم الوظائف صيغة تعبير كرون القياسية، التي تحتوي على حقول للدقيقة، والساعة، ويوم الشهر، والشهر، ويوم الأسبوع.

اذكر تاريخ تشغيل الوظائف الأخيرة

وظائف تطبيقات الحاويات تحافظ على تاريخ من الإصدارات الأخيرة. يمكنك سرد عدد مرات الوظيفة.

az containerapp job execution list \
    --name "$JOB_NAME" \
    --resource-group "$RESOURCE_GROUP" \
    --output table \
    --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'

تظهر الوظائف في القائمة أثناء تشغيلها.

Status     Name            StartTime
---------  --------------  -------------------------
Succeeded  my-job-jvsgub6  2025-11-17T21:21:45+00:00

سجلات تشغيل الوظائف الاستعلامية

تقوم المهام بكتابة سجلات الإخراج إلى مزود السجلات الذي تقوم بتكوينه لبيئة تطبيقات الحاويات. افتراضيا، يتم تخزين السجلات في تحليلات السجل.

  1. احفظ معرف مساحة عمل Log Analytics لبيئة Container Apps إلى متغير.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. احفظ اسم أحدث مهمة تم تشغيلها إلى متغير.

    JOB_RUN_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. شغل استعلام تحليلات السجلات للوظيفة التي يتم تشغيلها باستخدام الأمر التالي.

    az monitor log-analytics query \
        --workspace "$LOG_ANALYTICS_WORKSPACE_ID" \
        --analytics-query "ContainerAppConsoleLogs_CL | where ContainerGroupName_s startswith '$JOB_RUN_NAME' | order by _timestamp_d asc" \
        --query "[].Log_s"
    

    إشعار

    حتى يصبح جدول ContainerAppConsoleLogs_CL جاهزا، لا يعطي الأمر أي نتائج، أو يعيد الخطأ التالي: "BadArgumentError: الطلب كان يحتوي على بعض الخصائص غير الصالحة." في كلتا الحالتين، انتظر بضع دقائق ثم شغل الأمر مرة أخرى.

    المخرج التالي هو مثال على السجلات التي تطبعها عملية التشغيل.

    [
        "2025/11/17 18:38:28 This is a sample application that demonstrates how to use Azure Container Apps jobs",
        "2025/11/17 18:38:28 Starting processing...",
        "2025/11/17 18:38:33 Finished processing. Shutting down!"
    ]
    

تنظيف الموارد

إذا لم تكن ستستمر في استخدام هذه المهمة، قم بتشغيل الأمر التالي لحذف مجموعة الموارد وكل الموارد من هذا البدء السريع.

تنبيه

يحذف الأمر التالي مجموعة الموارد المحددة وجميع الموارد المضمنة فيها. إذا كانت هناك موارد خارج نطاق هذه البداية السريعة موجودة في مجموعة الموارد المحددة، فإنها تحذف أيضا.

az group delete --name "$RESOURCE_GROUP"

تلميح

هل تواجه مشكلات؟ اسمحوا لنا أن نعرف على GitHub عن طريق فتح مشكلة في Azure Container Apps repo.

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