Planifier un workflow à l'aide de Cloud Scheduler

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

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 Google Cloud Console 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 :

    Console

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

      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 son 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 du journal d'appels du workflow, sélectionnez le niveau de journalisation des appels que vous souhaitez appliquer pendant l'exécution du workflow. Vous pouvez accepter la valeur par défaut Aucun journal ou sélectionner l'une des options suivantes:

        • Tous les appels : consignez tous les appels aux sous-workflows ou aux fonctions de la bibliothèque, ainsi que leurs résultats.
        • Erreurs uniquement : journalisez uniquement lorsqu'un appel est arrêté en raison d'une exception.
      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 est désormais répertoriée 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