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
- Si vous ne disposez pas encore d'un workflow que vous souhaitez planifier, créez-en un et déployez-le.
-
Enable the Cloud Scheduler API.
Vous pouvez également saisir la commande suivante dans un terminal :
gcloud services enable cloudscheduler.googleapis.com
Planifier un workflow
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.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.
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 CloudSERVICE_ACCOUNT_NAME
: nom du compte de service que vous avez créé précédemment.
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 configurer la journalisation des appels via la page Workflows (Workflows) de la console Google Cloud. Pour en savoir plus, consultez la procédure ci-dessous.
Console
Pour planifier un workflow, accédez à la page Workflows (Workflows) de la console Google Cloud:
Sur la page "Workflows", sélectionnez un workflow pour accéder à sa page d'informations.
Sur la page Détails du workflow, cliquez sur edit Modifier.
Sur la page Modifier le workflow, sélectionnez Ajouter un déclencheur > Cloud Scheduler.
Le volet Créer une tâche Scheduler s'ouvre.
Définissez le planning :
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.
Dans la liste Région, sélectionnez une région appropriée. Exemple : us-central1.
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 * * * *
.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.
Cliquez sur Continuer.
Configurez l'exécution :
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 :
. Si votre workflow n'utilise pas d'arguments d'exécution, acceptez la valeur par défaut de{"firstName":"Sherlock", "lastName":"Holmes"}
{}
ou laissez le champ vide.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.
Dans la liste Compte de service, sélectionnez le compte de service que vous avez créé précédemment.
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.
Si vous souhaitez mettre à jour ou supprimer la tâche, vous devez modifier le workflow:
- Sur la page Détails du workflow, cliquez sur edit Modifier.
- Dans la section Déclencheurs, recherchez la tâche que vous souhaitez modifier ou supprimer.
- Cliquez sur edit Modifier la ressource ou sur delete Supprimer la ressource.
gcloud
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 SchedulerFREQUENCY
: 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 CloudREGION_NAME
: région dans laquelle se trouve le workflow, par exempleus-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.
Pour lister toutes les tâches d'un projet, procédez comme suit :
gcloud scheduler jobs list
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
- Utiliser IAM pour contrôler l'accès
- Transmettre des arguments d'environnement d'exécution dans une requête d'exécution
- Tutoriel: Planifier des workflows avec Cloud Scheduler