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. Enable the Cloud Scheduler API.

    Enable the 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 postulez journalisation des appels, vous devez configurer les journaux d'appels via la page Workflows de console Google Cloud. Pour en savoir plus, consultez la procédure ci-dessous.

    Console

    1. Pour planifier un workflow, accédez à la page Workflows (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 region; 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. Par 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 des journaux 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 pour redéployer le workflow.

      Le job Cloud Scheduler est maintenant répertorié dans la liste des 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 modifier ou supprimer.
      3. Cliquez sur Modifier la ressource ou 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 lister toutes les tâches d'un projet, procédez comme suit :

      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.

Étape suivante