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 oder Szenarien, 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

Setup

  1. 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
    
  2. Stellen Sie sicher, dass Sie die neueste Version der CLI über den Upgradebefehl ausführen.

    az upgrade
    
  3. Installieren Sie die neueste Version der Azure Container Apps-CLI-Erweiterung.

    az extension add --name containerapp --upgrade
    
  4. Registrieren Sie die Namespaces Microsoft.App und Microsoft.OperationalInsights, wenn Sie sie noch nicht in Ihrem Azure-Abonnement registriert haben.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. 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.

  1. Erstellen Sie mithilfe des folgenden Befehls eine Ressourcengruppe.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. 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.

  1. 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.

  2. 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.

  1. 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`
    
  2. 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`
    
  3. 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.

Nächste Schritte