Planifier des jobs dépendants

Ce document explique comment créer et exécuter une tâche qui n'est planifiée que lorsque des tâches spécifiques ont réussi ou échoué. Pour en savoir plus sur les états des tâches, consultez la présentation de la création et de l'exécution des tâches.

Si vous avez une charge de travail avec des besoins en ressources variables, envisagez d'utiliser des tâches dépendantes pour créer une chaîne automatisée de tâches qui utilisent chacune des VM distinctes. Par exemple, séparez les types de VM utilisés pour les opérations à faible demande (comme la préparation des données) et les opérations nécessitant beaucoup de calcul (comme le traitement des données). En utilisant des tâches dépendantes pour optimiser la consommation de ressources, vous pouvez réduire les coûts et l'utilisation des quotas.

Avant de commencer

  1. Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les prérequis pour les projets et les utilisateurs.
  2. Pour obtenir les autorisations nécessaires pour créer une tâche, demandez à votre administrateur de vous accorder les rôles IAM suivants :

    Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Restrictions

Les tâches dépendantes sont soumises aux restrictions suivantes :

  • Une tâche dépendante peut avoir jusqu'à quatre dépendances. Chaque dépendance doit contenir un nom de tâche unique et l'un des états requis suivants :

    • SUCCEEDED : réussi
    • FAILED : échec
    • FINISHED : réussi ou échec
  • Lorsque vous créez une tâche dépendante, toutes ses tâches de dépendance doivent exister.

  • Une tâche dépendante ne peut pas passer à l'état planifié (SCHEDULED) tant que chaque tâche de dépendance n'a pas atteint l'état requis. S'il devient impossible pour une tâche de dépendance d'atteindre l'état requis, la tâche dépendante échoue immédiatement sans être planifiée.

  • Comme toutes les tâches, une tâche dépendante ne peut pas passer à l'état planifié (SCHEDULED) si elle dépasse le délai d'attente maximal dans la file d'attente. Batch applique cette limite pour éviter que vos tâches ne deviennent obsolètes. Par conséquent, si vous pensez que le temps restant nécessaire à la fin de l'une des tâches de dépendance peut dépasser cette limite, envisagez d'effectuer une ou plusieurs des opérations suivantes :

    • Si vous n'avez pas encore créé de tâche de dépendance, essayez de réduire la durée d'exécution prévue de la tâche de dépendance. Par exemple, vous pouvez augmenter le parallélisme de la charge de travail ou limiter la durée d'exécution des tâches et des exécutables qui n'ont pas besoin de réussir.
    • Attendez de créer la tâche dépendante jusqu'à ce que la durée d'exécution prévue des tâches de dépendance soit inférieure à la limite.

Créer une tâche dépendante

Vous pouvez créer une tâche qui est dépendante à l'aide des méthodes suivantes :

Pour spécifier qu'une tâche est dépendante, incluez le dependencies[].items champ, qui accepte une ou plusieurs dépendances spécifiées sous forme de paires clé-valeur, dans le corps principal du fichier JSON :

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

Remplacez les éléments suivants :

  • DEPENDENCY_JOB_NAME: nom d'une tâche de dépendance, qui doit atteindre l'état requis avant que cette tâche dépendante ne puisse être planifiée.

  • REQUIRED_STATE: état requis pour la tâche de dépendance correspondante, qui doit être SUCCEEDED, FAILED ou FINISHED.

Par exemple, une tâche dépendante avec trois dépendances peut avoir un fichier de configuration JSON semblable à celui-ci :

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "dependencies": [
    {
      "items": {
        "DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
        "DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
        "DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
      }
    }
  ]
}

Étape suivante

  • Si vous rencontrez des problèmes lors de la création ou de l'exécution d'une tâche, consultez la section Dépannage.
  • Découvrez comment afficher les tâches.
  • Découvrez d'autres options de création de tâches .