Erstellen eines Auftrags mit Azure Container Apps (Vorschau)
Aufträge von Azure Container Apps ermöglichen die Ausführung containerisierter Aufgaben, die für einen begrenzten Zeitraum ausgeführt und dann beendet werden. Sie können einen Auftrag manuell auslösen, die Ausführung planen oder die Ausführung basierend auf Ereignissen auslösen.
Aufträge eignen sich am besten für Aufgaben wie Datenverarbeitung, maschinelles Lernen, Ressourcenbereinigung oder Szenarios, die bedarfsgesteuerte Verarbeitung erfordern.
In dieser Schnellstartanleitung erstellen Sie einen manuellen oder geplanten Auftrag. Informationen zum Erstellen eines ereignisgesteuerten Auftrags finden Sie unter Bereitstellen eines ereignisgesteuerten Auftrags mit Azure Container Apps.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement.
- Falls Sie keins haben, können Sie kostenlos eins erstellen.
- Installieren Sie die Azure CLI.
- Eine Liste der Einschränkungen finden Sie unter Einschränkungen für Aufträge.
Setup
Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.
az login
Stellen Sie sicher, dass Sie die neueste Version der CLI über den Upgradebefehl ausführen.
az upgrade
Installieren Sie die neueste Version der Azure Container Apps-CLI-Erweiterung.
az extension add --name containerapp --upgrade
Registrieren Sie die Namespaces
Microsoft.App
undMicrosoft.OperationalInsights
, wenn Sie sie noch nicht in Ihrem Azure-Abonnement registriert haben.az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights
Nachdem die Einrichtung Ihrer Azure CLI abgeschlossen ist, können Sie die Umgebungsvariablen definieren, die in diesem Artikel verwendet werden.
RESOURCE_GROUP="jobs-quickstart" LOCATION="northcentralus" ENVIRONMENT="env-jobs-quickstart" JOB_NAME="my-job"
Erstellen einer Container-Apps-Umgebung
Die Azure Container Apps-Umgebung fungiert als sichere Grenze um Container-Apps und -Aufträge, sodass sie das gleiche Netzwerk nutzen und miteinander kommunizieren können.
Erstellen Sie mithilfe des folgenden Befehls eine Ressourcengruppe.
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"
Erstellen Sie die Container-Apps-Umgebung mit dem folgenden Befehl.
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
Erstellen und Ausführen eines manuellen Auftrags
Um manuelle Aufträge zu verwenden, erstellen Sie zunächst einen Auftrag mit dem Triggertyp Manual
und starten dann eine Ausführung. Sie können mehrere Ausführungen desselben Auftrags starten, und mehrere Auftragsausführungen können gleichzeitig laufen.
Erstellen Sie einen Auftrag in der Container Apps-Umgebung mit dem folgenden Befehl.
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"
Manuelle Aufträge werden nicht automatisch ausgeführt. Sie müssen eine Ausführung des Auftrags starten.
Starten Sie mit dem folgenden Befehl eine Ausführung des Auftrags.
az containerapp job start \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP"
Der Befehl gibt Details zur Auftragsausführung zurück, einschließlich des Namens.
Erstellen und Ausführen eines geplanten Auftrags
Um geplante Aufträge zu verwenden, erstellen Sie einen Auftrag mit dem Triggertyp Schedule
und einem Cron-Ausdruck, der den Zeitplan definiert.
Erstellen Sie mit dem folgenden Befehl einen Auftrag in der Container Apps-Umgebung, der minütlich gestartet wird.
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 * * * *"
Auftragsausführungen werden basierend auf dem Zeitplan automatisch gestartet.
Container Apps-Aufträge verwenden Cron-Ausdrücke, um Zeitpläne zu definieren. Unterstützt wird das Standardformat für Cron-Ausdrücke mit fünf Feldern für Minute, Stunde, Tag des Monats, Monat und Wochentag.
Auflisten des jüngsten Auftragsausführungsverlaufs
Container Apps-Aufträge verwalten einen Verlauf der letzten Ausführungen. Sie können die Ausführungen eines Auftrags auflisten.
az containerapp job execution list \
--name "$JOB_NAME" \
--resource-group "$RESOURCE_GROUP" \
--output table \
--query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
Ausführungen geplanter Aufträge werden in der Liste angezeigt, während sie ausgeführt werden.
Status Name StartTime
--------- -------------- -------------------------
Succeeded my-job-jvsgub6 2023-05-08T21:21:45+00:00
Abfragen von Auftragsausführungsprotokollen
Auftragsausführungen geben Protokolle an den Protokollierungsanbieter aus, den Sie für die Container Apps-Umgebung konfiguriert haben. Protokolle werden standardmäßig in Azure Log Analytics gespeichert.
Speichern Sie die Log Analytics-Arbeitsbereichs-ID für die Container Apps-Umgebung in einer Variablen.
LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \ --output tsv)
Speichern Sie den Namen der jüngsten Auftragsausführung in einer Variablen.
JOB_EXECUTION_NAME=$(az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --query "[0].name" \ --output tsv)
Führen Sie mit dem folgenden Befehl eine Abfrage der Auftragsausführung an Log Analytics aus.
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"
Hinweis
Bis die
ContainerAppConsoleLogs_CL
-Tabelle bereit ist, gibt der Befehl keine Ergebnisse oder einen Fehler zurück:BadArgumentError: The request had some invalid properties
. Warten Sie ein paar Minuten, und führen Sie den Befehl noch mal aus.Die folgende Ausgabe ist ein Beispiel für die Protokolle, die von der Auftragsausführung ausgegeben werden.
[ "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!" ]
Bereinigen von Ressourcen
Wenn Sie diese Anwendung nicht weiter verwenden möchten, führen Sie den folgenden Befehl aus, um die Ressourcengruppe zusammen mit allen in dieser Schnellstartanleitung erstellten Ressourcen zu löschen.
Achtung
Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Falls in der angegebenen Ressourcengruppe Ressourcen enthalten sind, die nicht zum Umfang dieser Schnellstartanleitung gehören, werden sie ebenfalls gelöscht.
az group delete --name "$RESOURCE_GROUP"
Tipp
Treten Probleme auf? Informieren Sie uns über GitHub, indem Sie ein Problem im Azure Container Apps-Repository öffnen.