使用 Azure Container Apps 建立作業
Azure Container Apps 作業 可讓您執行容器化工作,以有限持續時間執行並結束。 您可以手動觸發作業、排程其執行,或根據事件觸發其執行。
作業最適合用於數據處理、機器學習,或任何需要隨選處理之案例的工作。
在本快速入門中,您會建立手動或排程的工作。 若要瞭解如何建立事件驅動作業,請參閱 使用 Azure Container Apps 部署事件驅動作業。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。
- 如果您沒有,可以免費建立一個。
- 安裝 Azure CLI。
- 如需限制清單,請參閱作業限制。
設定
若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證程式。
az login
請確定您是透過升級命令執行最新版的 CLI。
az upgrade
安裝最新版的 Azure Container Apps CLI 擴充功能。
az extension add --name containerapp --upgrade
Microsoft.App
如果您尚未在 Azure 訂用帳戶中註冊 和Microsoft.OperationalInsights
命名空間,請註冊 和命名空間。az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights
現在,您的 Azure CLI 設定已完成,您可以定義本文中使用的環境變數。
RESOURCE_GROUP="jobs-quickstart" LOCATION="northcentralus" ENVIRONMENT="env-jobs-quickstart" JOB_NAME="my-job"
建立容器應用程式環境
Azure Container Apps 環境可作為容器應用程式和作業的安全界限,讓它們可以共用相同的網路並彼此通訊。
使用下列命令建立資源群組。
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"
使用下列命令建立 Container Apps 環境。
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
建立並執行手動作業
若要使用手動作業,請先建立具有觸發程式類型的 Manual
作業,然後啟動執行。 您可以啟動相同作業的多個執行,而多個作業執行可以同時執行。
使用下列命令在 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"
手動作業不會自動執行。 您必須開始執行作業。
使用下列命令啟動作業的執行。
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 中。
將 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`
將最近的作業執行名稱儲存至變數。
JOB_EXECUTION_NAME=`az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --query "[0].name" \ --output tsv`
使用下列命令,針對 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 上知道。