Delen via


Een taak maken met Azure Container Apps

Met Azure Container Apps-taken kunt u containertaken uitvoeren die worden uitgevoerd voor een eindige duur en afsluiten. U kunt een taak handmatig activeren, de uitvoering plannen of de uitvoering activeren op basis van gebeurtenissen.

Taken zijn het meest geschikt voor taken zoals gegevensverwerking, machine learning, opschonen van resources of scenario's waarvoor verwerking op aanvraag is vereist.

In deze quickstart maakt u een handmatige of geplande taak. Zie Een gebeurtenisgestuurde taak implementeren met Azure Container Apps voor meer informatie over het maken van een gebeurtenisgestuurde taak.

Vereisten

Instellingen

  1. Als u zich wilt aanmelden bij Azure vanuit de CLI, voert u de volgende opdracht uit en volgt u de aanwijzingen om het verificatieproces te voltooien.

    az login
    
  2. Zorg ervoor dat u de nieuwste versie van de CLI uitvoert via de upgradeopdracht.

    az upgrade
    
  3. Installeer de nieuwste versie van de Azure Container Apps CLI-extensie.

    az extension add --name containerapp --upgrade
    
  4. Registreer de Microsoft.App en Microsoft.OperationalInsights naamruimten als u deze nog niet hebt geregistreerd in uw Azure-abonnement.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. Nu uw Azure CLI-installatie is voltooid, kunt u de omgevingsvariabelen definiƫren die in dit artikel worden gebruikt.

    RESOURCE_GROUP="jobs-quickstart"
    LOCATION="northcentralus"
    ENVIRONMENT="env-jobs-quickstart"
    JOB_NAME="my-job"
    

Een Container Apps-omgeving maken

De Azure Container Apps-omgeving fungeert als een veilige grens rond container-apps en -taken, zodat ze hetzelfde netwerk kunnen delen en met elkaar kunnen communiceren.

  1. Gebruik de volgende opdracht om een resourcegroep te maken.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Maak de Container Apps-omgeving met behulp van de volgende opdracht.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Een handmatige taak maken en uitvoeren

Als u handmatige taken wilt gebruiken, maakt u eerst een taak met het triggertype Manual en start u vervolgens een uitvoering. U kunt meerdere uitvoeringen van dezelfde taak starten en meerdere taakuitvoeringen kunnen gelijktijdig worden uitgevoerd.

  1. Maak een taak in de Container Apps-omgeving met behulp van de volgende opdracht.

    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"
    

    Handmatige taken worden niet automatisch uitgevoerd. U moet een uitvoering van de taak starten.

  2. Start een uitvoering van de taak met behulp van de volgende opdracht.

    az containerapp job start \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP"
    

    De opdracht retourneert details van de taakuitvoering, inclusief de naam.

Een geplande taak maken en uitvoeren

Als u geplande taken wilt gebruiken, maakt u een taak met triggertype Schedule en een cron-expressie waarmee de planning wordt gedefinieerd.

Maak een taak in de Container Apps-omgeving die elke minuut wordt gestart met behulp van de volgende opdracht.

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 * * * *"

Taakuitvoeringen worden automatisch gestart op basis van de planning.

Container Apps-taken maken gebruik van cron-expressies om planningen te definiƫren. Het ondersteunt de standaard cron-expressie-indeling met vijf velden voor minuut, uur, dag van maand, maand en dag van de week.

Recente uitvoeringsgeschiedenis van taken weergeven

Container Apps-taken onderhouden een geschiedenis van recente uitvoeringen. U kunt de uitvoeringen van een taak weergeven.

az containerapp job execution list \
    --name "$JOB_NAME" \
    --resource-group "$RESOURCE_GROUP" \
    --output table \
    --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'

Uitvoeringen van geplande taken worden weergegeven in de lijst terwijl ze worden uitgevoerd.

Status     Name            StartTime
---------  --------------  -------------------------
Succeeded  my-job-jvsgub6  2023-05-08T21:21:45+00:00

Uitvoeringslogboeken voor querytaken

Taakuitvoeringen voeren uitvoerlogboeken uit naar de logboekregistratieprovider die u hebt geconfigureerd voor de Container Apps-omgeving. Logboeken worden standaard opgeslagen in Azure Log Analytics.

  1. Sla de Log Analytics-werkruimte-id voor de Container Apps-omgeving op in een variabele.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. Sla de naam van de meest recente taakuitvoering op in een variabele.

    JOB_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. Voer een query uit op Log Analytics voor de taakuitvoering met behulp van de volgende opdracht.

    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"
    

    Notitie

    Totdat de ContainerAppConsoleLogs_CL tabel gereed is, retourneert de opdracht geen resultaten of met een fout: BadArgumentError: The request had some invalid properties Wacht enkele minuten en voer de opdracht opnieuw uit.

    De volgende uitvoer is een voorbeeld van de logboeken die door de taak worden afgedrukt.

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

Resources opschonen

Als u deze toepassing niet wilt blijven gebruiken, voert u de volgende opdracht uit om de resourcegroep te verwijderen, samen met alle resources die in deze quickstart zijn gemaakt.

Let op

Met de volgende opdracht verwijdert u de opgegeven resourcegroep en alle resources erin. Als resources buiten het bereik van deze quickstart in de opgegeven resourcegroep bestaan, worden ze ook verwijderd.

az group delete --name "$RESOURCE_GROUP"

Tip

Ondervindt u problemen? Laat het ons weten op GitHub door een probleem te openen in de Azure Container Apps-opslagplaats.

Volgende stappen