مشاركة عبر


إنشاء وظيفة باستخدام Azure Container Apps

تسمح لك مهام Azure Container Apps بتشغيل المهام الحاوية التي يتم تنفيذها لمدة محدودة والخروج. يمكنك تشغيل مهمة يدويا أو جدولة تنفيذها أو تشغيل تنفيذها استنادا إلى الأحداث.

الوظائف هي الأنسب لمهام مثل معالجة البيانات أو التعلم الآلي أو تنظيف الموارد أو أي سيناريو يتطلب المعالجة عند الطلب.

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

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

الإعداد

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

    az login
    
  2. تأكد من تشغيل أحدث إصدار من CLI من خلال أمر الترقية.

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

    az extension add --name containerapp --upgrade
    
  4. Microsoft.App Microsoft.OperationalInsightsقم بتسجيل مساحات الأسماء و و Microsoft.Storage إذا لم تكن قد سجلتها بالفعل في اشتراك Azure الخاص بك.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    az provider register --namespace Microsoft.Storage
    
  5. الآن بعد اكتمال إعداد Azure CLI، يمكنك تحديد متغيرات البيئة المستخدمة في هذه المقالة.

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

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

تعمل بيئة Azure Container Apps ك حدود آمنة حول تطبيقات الحاوية ومهامها حتى يتمكنوا من مشاركة نفس الشبكة والتواصل مع بعضهم البعض.

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

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

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

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

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

  1. إنشاء مهمة في بيئة Container Apps باستخدام الأمر التالي.

    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 الذي يحدد الجدول الزمني.

إنشاء مهمة في بيئة Container Apps التي تبدأ كل دقيقة باستخدام الأمر التالي.

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 لتحديد الجداول الزمنية. وهو يدعم تنسيق تعبير cron القياسي مع خمسة حقول للدقيقة والساعة واليوم من الشهر والشهر واليوم من الأسبوع.

سرد محفوظات تنفيذ المهمة الأخيرة

تحتفظ وظائف Container Apps بمحفوظات عمليات التنفيذ الأخيرة. يمكنك سرد عمليات تنفيذ الوظيفة.

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  2023-05-08T21:21:45+00:00

سجلات تنفيذ مهمة الاستعلام

سجلات إخراج عمليات تنفيذ المهام إلى موفر التسجيل الذي قمت بتكوينه لبيئة Container Apps. بشكل افتراضي، يتم تخزين السجلات في Azure Log Analytics.

  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_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. قم بتشغيل استعلام مقابل Log Analytics لتنفيذ المهمة باستخدام الأمر التالي.

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

    إشعار

    ContainerAppConsoleLogs_CL حتى يكون الجدول جاهزا، لا يرجع الأمر أي نتائج أو مع خطأ: BadArgumentError: The request had some invalid properties. انتظر بضع دقائق ثم قم بتشغيل الأمر مرة أخرى.

    الإخراج التالي هو مثال على السجلات المطبوعة بواسطة تنفيذ المهمة.

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

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

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

تنبيه

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

az group delete --name "$RESOURCE_GROUP"

تلميح

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

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