Créer un travail avec Azure Container Apps

Les travaux Azure Container Apps vous permettent d’exécuter des tâches conteneurisées qui s’exécutent pendant une durée limitée et s’arrêtent. Vous pouvez déclencher un travail manuellement, planifier son exécution ou déclencher son exécution en fonction des événements.

Les travaux conviennent parfaitement aux tâches telles que le traitement des données, le Machine Learning ou n’importe quel scénario nécessitant un traitement à la demande.

Dans ce guide de démarrage rapide, vous créez un travail manuel ou planifié. Pour savoir comment créer un travail piloté par les événements, consultez Déployer un travail piloté par les événements avec Azure Container Apps.

Prérequis

Programme d’installation

  1. Pour vous connecter à Azure à partir de l’interface CLI, exécutez la commande suivante et suivez les invites pour procéder à l’authentification.

    az login
    
  2. Vérifiez que vous exécutez la dernière version de l’interface CLI à l’aide de la commande de mise à niveau.

    az upgrade
    
  3. Installez la dernière version de l’extension CLI Azure Container Apps.

    az extension add --name containerapp --upgrade
    
  4. Inscrivez les espaces de noms Microsoft.App et Microsoft.OperationalInsights si vous ne les avez pas déjà inscrits dans votre abonnement Azure.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. À présent que votre configuration Azure CLI est terminée, vous pouvez définir les variables d’environnement utilisées dans cet article.

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

Créer un environnement Container Apps

L’environnement Azure Container Apps fait office de barrière sécurisée entourant les applications conteneur et les travaux afin qu’ils puissent partager le même réseau et communiquer entre eux.

  1. Créez un groupe de ressources à l’aide de la commande suivante.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Créez l’environnement Container Apps à l’aide de la commande suivante.

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

Créer et exécuter un travail manuel

Pour utiliser des travaux manuels, vous devez d’abord créer un travail avec le type Manual de déclencheur, puis démarrer une exécution. Vous pouvez démarrer plusieurs exécutions du même travail et plusieurs exécutions de travaux peuvent s’exécuter simultanément.

  1. Créez un travail dans l’environnement Container Apps à l’aide de la commande suivante.

    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"
    

    Les travaux manuels ne s’exécutent pas automatiquement. Vous devez démarrer une exécution du travail.

  2. Démarrez une exécution du travail à l’aide de la commande suivante.

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

    La commande retourne les détails de l’exécution du travail, y compris son nom.

Créer et exécuter un travail planifié

Pour utiliser des travaux planifiés, vous créez un travail avec un type Schedule de déclencheur et une expression cron qui définit la planification.

Créez un travail dans l’environnement Container Apps qui démarre toutes les minutes à l’aide de la commande suivante.

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

Les exécutions de travaux démarrent automatiquement en fonction de la planification.

Les travaux Container Apps utilisent des expressions cron pour définir les planifications. Il prend en charge le format d’expression cron standard avec cinq champs pour minute, heure, jour du mois, mois et jour de la semaine.

Répertorier l’historique d’exécution des travaux récents

Les travaux Container Apps conservent un historique des exécutions récentes. Vous pouvez lister les exécutions d’un travail.

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

Les exécutions de travaux planifiés apparaissent dans la liste au fur et à mesure de leur exécution.

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

Journaux d’exécution des travaux de requête

Les journaux de sortie des exécutions de travaux sont destinés au fournisseur de journalisation que vous avez configuré pour l’environnement Container Apps. Par défaut, les journaux sont stockés dans Azure Log Analytics.

  1. Enregistrez l’ID d’espace de travail Log Analytics pour l’environnement Container Apps dans une variable.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. Enregistrez le nom de l’exécution du travail la plus récente dans une variable.

    JOB_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. Exécutez une requête sur Log Analytics pour l’exécution du travail à l’aide de la commande suivante.

    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"
    

    Notes

    Tant que la ContainerAppConsoleLogs_CL table n’est pas prête, la commande ne retourne aucun résultat ou avec une erreur : BadArgumentError: The request had some invalid properties. Attendez quelques minutes, puis utilisez à nouveau la commande.

    La sortie suivante est un exemple des journaux imprimés par l’exécution du travail.

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

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser cette application, exécutez la commande suivante pour supprimer le groupe de ressources ainsi que toutes les ressources créées pendant ce démarrage rapide.

Attention

La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors du cadre de ce démarrage rapide existent dans le groupe de ressources spécifié, elles seront également supprimées.

az group delete --name "$RESOURCE_GROUP"

Conseil

Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Container Apps.

Étapes suivantes