共用方式為


使用 Azure 容器應用程式建立作業

Azure 容器應用程式的作業可讓您執行容器化工作,在有限的持續時間內執行並結束。 您可手動觸發作業、排程執行,或根據事件觸發其執行作業。

作業最適合用於數據處理、機器學習、資源清除,或任何需要隨選處理之案例的工作。

在快速入門中,您可建立手動或排程的作業。 如需瞭解如何建立事件驅動作業,請參閱使用 Azure 容器應用程式部署事件驅動作業 (部分機器翻譯)。

必要條件

設定

  1. 若要從 CLI 登入 Azure,請執行下列命令並遵循提示來完成驗證流程。

    az login
    
  2. 確定您是透過升級命令執行最新版的 CLI。

    az upgrade
    
  3. 安裝最新版的 Azure 容器應用程式 CLI 延伸模組。

    az extension add --name containerapp --upgrade
    
  4. Microsoft.App如果您尚未在 Azure 訂用帳戶中註冊 、Microsoft.OperationalInsights、 和 Microsoft.Storage 命名空間,請註冊它們。

    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 容器應用程式環境可作為容器應用程式和作業的安全界限,因此讓其共用相同的網路並彼此交流。

  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 運算式來定義排程。 這會支援標準 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  2023-05-08T21:21:45+00:00

查詢作業執行記錄

作業執行會將記錄輸出至您為容器應用程式環境設定的記錄提供者。 根據預設,記錄會儲存在 Azure Log Analytics 中。

  1. 將容器應用程式環境的 Log Analytics 工作區 ID 儲存至變數。

    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"

提示

有問題嗎? 在 Azure 容器應用程式存放庫中提出問題,讓我們在 GitHub 上了解該問題。

下一步