Share via


使用 Azure Container Apps 建立作業

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

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

在本快速入門中,您會建立手動或排程的工作。 若要瞭解如何建立事件驅動作業,請參閱 使用 Azure Container Apps 部署事件驅動作業。

必要條件

設定

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

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

    az upgrade
    
  3. 安裝最新版的 Azure Container Apps CLI 擴充功能。

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

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  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. 使用下列命令建立 Container Apps 環境。

    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 --replica-retry-limit 1 --replica-completion-count 1 --parallelism 1 \
        --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 --replica-retry-limit 1 --replica-completion-count 1 --parallelism 1 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

作業執行會根據排程自動啟動。

Container Apps 作業會使用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

查詢作業執行記錄

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

  1. 將 Container Apps 環境的 Log Analytics 工作區標識符儲存至變數。

    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!"
    ]
    

注意

您必須為 Azure Container Apps 上的所有 .NET 應用程式啟用資料保護。 如需詳細資訊,請參閱 在 Azure Container Apps 上部署和調整 ASP.NET Core 應用程式

清除資源

如果您不打算繼續使用此應用程式,請執行下列命令來刪除資源群組以及本快速入門中建立的所有資源。

警告

下列命令會刪除指定的資源群組及其內含的所有資源。 如果本快速入門範圍以外的資源存在於指定的資源群組中,也會刪除它們。

az group delete --name "$RESOURCE_GROUP"

提示

發生問題嗎? 在 Azure Container Apps 存放庫中開啟問題,讓我們在 GitHub 上知道。

下一步