Planifier un workflow à l'aide de Cloud Scheduler

Cette page explique comment utiliser Cloud Scheduler pour exécuter un workflow selon une planification particulière, par exemple tous les lundis à 9 h ou toutes les 15 minutes. Vous pouvez configurer la planification dans la console Google Cloud ou à l'aide de Google Cloud CLI.

Avant de commencer

  1. Si vous ne disposez pas encore d'un workflow que vous souhaitez planifier, créez-en un et déployez-le.
  2. Activez l'API Cloud Scheduler

    Activer l'API

  3. Vous pouvez également saisir la commande suivante dans un terminal :
    gcloud services enable cloudscheduler.googleapis.com

Planifier un workflow

  1. Créez un compte de service afin que Cloud Scheduler puisse envoyer des requêtes à l'API Workflows :

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Remplacez SERVICE_ACCOUNT_NAME par un nom comportant entre 6 et 30 caractères. Il peut contenir des caractères alphanumériques minuscules et des tirets. Une fois le compte de service créé, vous ne pouvez pas en modifier le nom.

  2. Pour autoriser le compte principal qui exécutera vos commandes Cloud Scheduler à agir en tant que compte de service Identity and Access Management (IAM), attribuez un rôle permettant au compte principal d'emprunter l'identité du compte de service.

  3. Attribuez le rôle workflows.invoker à votre nouveau compte de service afin qu'il soit autorisé à déclencher votre workflow:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/workflows.invoker

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • SERVICE_ACCOUNT_NAME: nom du compte de service que vous avez créé précédemment.
  4. Créez une tâche Cloud Scheduler qui déclenche votre workflow à l'aide du compte de service que vous avez créé précédemment pour l'authentification.

    Notez que si vous appliquez la journalisation des appels, vous devez la configurer via la page Workflows de la console Google Cloud. Pour en savoir plus, procédez comme suit.

    Console

    1. Pour planifier un workflow, accédez à la page Workflows de la console Google Cloud:

      Accéder à "Workflows"

    2. Sur la page "Workflows", sélectionnez un workflow pour accéder à sa page d'informations.

    3. Sur la page Détails du workflow, cliquez sur Modifier.

    4. Sur la page Modifier le workflow, sélectionnez Ajouter un déclencheur > Cloud Scheduler.

      Le volet Créer une tâche Scheduler s'ouvre.

    5. Définissez le planning :

      1. Dans le champ Nom, saisissez un nom pour votre tâche Cloud Scheduler. Celui-ci doit être unique pour toutes les tâches de la même région.

      2. Dans la liste Région, sélectionnez une région appropriée (par exemple, us-central1).

      3. Dans le champ Fréquence, spécifiez un intervalle de temps que vous définissez au format unix-cron. Par exemple, pour planifier l'exécution de votre workflow toutes les cinq minutes, saisissez */5 * * * *.

      4. Dans la liste Fuseau horaire, sélectionnez le fuseau horaire que Cloud Scheduler doit utiliser pour interpréter la planification que vous fournissez. Vous pouvez effectuer une recherche par pays.

    6. Cliquez sur Continuer.

    7. Configurez l'exécution :

      1. Dans le champ Argument du workflow, spécifiez les arguments d'exécution à transmettre à votre workflow avant l'exécution. Les arguments doivent être au format JSON. Exemple : {"firstName":"Sherlock", "lastName":"Holmes"}. Si votre workflow n'utilise pas d'arguments d'exécution, acceptez la valeur par défaut de {} ou laissez le champ vide.

      2. Dans la liste Niveau de journal d'appels du workflow, sélectionnez le niveau de journalisation des appels que vous souhaitez appliquer lors de l'exécution du workflow:

        • Non spécifié: aucun niveau de journalisation n'est spécifié. Il s'agit de l'option par défaut. Un niveau de journalisation d'exécution est prioritaire sur tout niveau de journalisation de workflow, sauf si celui-ci n'est pas spécifié (valeur par défaut). Dans ce cas, le niveau de journalisation du workflow s'applique.
        • Erreurs uniquement: consigne toutes les exceptions interceptées, ou lorsqu'un appel est arrêté en raison d'une exception.
        • Tous les appels: consigne tous les appels aux sous-workflows ou aux fonctions de la bibliothèque, ainsi que leurs résultats.
        • Aucun journal: aucun journal d'appels.
      3. Dans la liste Compte de service, sélectionnez le compte de service que vous avez créé précédemment.

    8. Cliquez sur Créer.

      Notez que si vous mettez à jour un workflow existant, vous n'avez pas besoin de le redéployer.

      La tâche Cloud Scheduler apparaît désormais dans l'onglet Déclencheurs de la page Détails du workflow.

    9. Si vous souhaitez mettre à jour ou supprimer la tâche, vous devez modifier le workflow:

      1. Sur la page Détails du workflow, cliquez sur Modifier.
      2. Dans la section Déclencheurs, recherchez la tâche que vous souhaitez mettre à jour ou supprimer.
      3. Cliquez sur Modifier la ressource ou sur Supprimer la ressource.

    gcloud

    1. Ouvrez un terminal et saisissez la commande suivante :

      gcloud scheduler jobs create http JOB_NAME \
          --schedule="FREQUENCY" \
          --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
          --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
          --time-zone="TIME_ZONE" \
          --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

      Remplacez les éléments suivants :

      • JOB_NAME: nom attribué à la tâche Cloud Scheduler
      • FREQUENCY : intervalle de temps que vous définissez à l'aide d'un format unix-cron. Par exemple, pour planifier l'exécution de votre workflow toutes les cinq minutes, saisissez */5 * * * *.
      • PROJECT_ID : ID de votre projet Google Cloud
      • REGION_NAME: région dans laquelle se trouve le workflow, par exemple us-central1.
      • WORKFLOW_NAME: nom du workflow dont vous souhaitez planifier l'exécution.
      • DOUBLE_ESCAPED_JSON_STRING: encodage JSON des arguments que vous transmettez. Les guillemets doubles dans la chaîne entre guillemets sont échappés avec des barres obliques inverses (\). Par exemple : --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: fuseau horaire que Cloud Scheduler doit utiliser pour interpréter la planification que vous fournissez. Par exemple : America/New_York.
      • SERVICE_ACCOUNT_NAME: nom du compte de service que vous avez créé précédemment.
    2. Pour répertorier toutes les tâches d'un projet:

      gcloud scheduler jobs list

    3. Pour supprimer une tâche, procédez comme suit :

      gcloud scheduler jobs delete JOB_NAME

Votre workflow s'exécute désormais selon la fréquence que vous avez définie.

Étapes suivantes