Gérer des jobs Cron

Cible Pub/Sub

Si vous choisissez le type de cible Pub/Sub:

  1. Spécifiez le nom du sujet sur lequel le job sera publié. Il s'agit d'un sujet Pub/Sub que vous avez déjà configuré dans votre projet.

  2. Spécifiez un message à envoyer au sujet. Cet élément est envoyé en tant que data dans le message Pub/Sub. Par exemple, consultez le guide de démarrage rapide.

  3. Ajoutez les attributs de message dont vous avez besoin.

  4. Définissez toute configuration supplémentaire à l'aide de Configure optional settings. .

Cloud Scheduler publiera des messages dans ce sujet en tant que compte de service des API Google.

Cible HTTP App Engine

Si vous choisissez le type de cible HTTP App Engine, vous devez utiliser le application App Engine et la région associée au projet en cours. Si vous souhaitez utiliser une autre application App Engine sélectionnez HTTP comme cible, et non App Engine HTTP. La Les règles de pare-feu cibles doivent autoriser les requêtes provenant de la plage d'adresses IP 0.1.0.2/32.

Définissez le formulaire comme suit :

  1. Dans la liste Type de cible, sélectionnez App Engine HTTP.

  2. Indiquez le nom du service App Engine qui exécute le gestionnaire pour le job Cloud Scheduler. En cas d'omission, default est utilisé. Si vous souhaitez la définir, vous trouverez les noms des services dans la Console Google Cloud

  3. Vous pouvez éventuellement spécifier la version. Si cette dernière n'est pas définie, la version actuellement active est utilisée. Vous pouvez trouver les versions disponibles dans la console Google Cloud.

  4. Vous pouvez éventuellement spécifier l'instance. Si cette règle n'est pas configurée, n'importe quelle instance disponible peut être utilisée. Vous pouvez trouver les versions disponibles dans la console Google Cloud.

  5. Spécifiez l'URL relative du point de terminaison App Engine auquel le job contactera. Si vous utilisez la valeur par défaut /, le job utilisera PROJECT-ID.appspot.com, où PROJECT-ID est l'ID de votre projet actuel.

  6. Définissez la méthode HTTP que vous souhaitez utiliser lors de l'exécution du job. La valeur par défaut est POST.

  7. Ajoutez tous les en-têtes dont vous avez besoin à la requête.

  8. Vous pouvez également spécifier les données du corps à envoyer à la cible. Ces données sont envoyées dans le corps de la requête en tant qu'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

Les points de terminaison App Engine ciblés doivent appartenir au même projet et peuvent être sécurisé avec login: admin sur l'élément handlers dans app.yaml.

Cible HTTP

Si vous choisissez le type de cible HTTP:

  1. Spécifiez l'URL complète du point de terminaison que le job doit contacter.

  2. Spécifiez la méthode HTTP. La valeur par défaut est POST.

  3. Vous pouvez éventuellement spécifier les données à envoyer à la cible. Ces données sont envoyées dans le corps de la requête sous forme d'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

  4. Ajoutez les en-têtes dont vous avez besoin.

  5. Pour créer un job HTTP cible nécessitant une authentification, consultez la page Utilisez l'authentification avec des cibles HTTP.

Les points de terminaison HTTP ciblés doivent être accessibles au public.

Vous pouvez utiliser Cloud Scheduler pour configurer des unités de travail planifiées, connues en tant que jobs Cron, qui sont envoyés à des cibles sur certains plannings récurrents, également appelés intervalle ou fréquence du job.

Une seule instance d'un job doit être exécutée à un instant T. Rarement en fonction des circonstances, il est possible que plusieurs instances d'un même job soient demandées. Par conséquent, votre gestionnaire de requêtes doit être idempotent, et votre code doit vous assurer qu'il n'y a pas d'effets secondaires néfastes si cela se produit.

Cloud Scheduler est destiné aux jobs récurrents. Si vous devez exécuter un job une seule fois, envisagez d'utiliser Cloud Tasks, qui peut planifier un job jusqu'à 30 jours à l'avance.

Avant de commencer

Assurez-vous d'avoir configuré votre environnement pour Cloud Scheduler.

Choisir un type de cible

Cloud Scheduler peut appeler les types de cibles suivants:

Appeler des services cibles limités à l'entrée interne

Cloud Scheduler peut appeler les services suivants en interne :

  • Fonctions Cloud Run
  • Cloud Run (sur l'URL run.app, et non sur les domaines personnalisés)

Pour appeler ces cibles en interne, la cible doit se trouver dans le même votre projet Google Cloud ou périmètre VPC Service Controls en tant que Job Cloud Scheduler.

Pour en savoir plus sur la sécurisation des cibles en limitant le trafic d'entrée, consultez Restreindre le trafic d'entrée (par Cloud Run) et Configurer les paramètres réseau (par fonctions Cloud Run).

Créer un job

Vous pouvez créer un job à l'aide de la console Google Cloud ou de Google Cloud CLI.

Console

  1. Dans la console Google Cloud, accédez à la page Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Cliquez sur Créer un job.

  3. Dans le champ Nom, saisissez un nom pour le job, unique au projet.

    Après avoir supprimé le job associé, vous pouvez réutiliser un nom de job dans un projet.

  4. Dans la liste Région, sélectionnez une région.

    Si vous utilisez une cible HTTP App Engine, vous devez choisir le même en tant qu'application App Engine. Pour en savoir plus, consultez Régions dans lesquelles le service est disponible par cible :

  5. Vous pouvez éventuellement fournir une brève description du job, par exemple un rappel de son rôle.

    Cette description apparaît dans la console à côté du nom du job.

  6. Spécifiez la fréquence. dans laquelle le job doit être exécuté, à l'aide d'une chaîne de configuration.

    Par exemple, la chaîne 0 1 * * 0 exécute le job une fois par semaine à 1 h du matin tous les dimanches matin. La chaîne que vous indiquez ici peut être Compatible avec unix-cron . Pour en savoir plus, consultez Configurez des job Cron Cron.

  7. Dans la liste Fuseau horaire, sélectionnez le fuseau horaire à utiliser pour la programmation du job.

  8. Cliquez sur Continuer.

  9. Spécifiez le type de cible:

    • HTTP

    • Pub/Sub: vous devez spécifiez le nom du sujet Pub/Sub déjà configurés dans votre projet et dans lesquels le job sera publié.

    • App Engine HTTP: vous devez utiliser l'application App Engine et la région associée le projet en cours.

  10. Cliquez sur Continuer.

  11. Si vous souhaitez configurer un comportement de nouvelle tentative, cliquez sur Configurez les paramètres facultatifs. Pour spécifier la durée, utilisez une séquence de Entiers décimals non négatifs avec les suffixes d'unités suivants:

    • h - heure
    • m - minute
    • s - seconde
    • ms - milliseconde
    • us - microseconde
    • ns - nanoseconde

    Les valeurs négatives et fractionnaires ne sont pas autorisées. Le champ Max retry duration n'accepte que les valeurs h, m et s. Les deux Min backoff duration et Max backoff duration prennent en charge l'ensemble complet.

  12. Pour les cibles HTTP HTTP et App Engine, vous pouvez éventuellement configurer un pour les tentatives de job. Si le gestionnaire de requêtes ne répond pas délai, la requête est annulée et la tentative est marquée comme ayant échoué. Cloud Scheduler relance le job en fonction de la configuration des nouvelles tentatives.

  13. Pour créer et enregistrer le job, cliquez sur Créer.

    Le job s'exécutera désormais à la fréquence spécifiée.

gcloud

Lorsque vous créez une tâche à l'aide de la CLI gcloud, vous devez utiliser des commandes différentes pour chaque type de cible :

HTTP

Vous pouvez envoyer une requête à n’importe quel point de terminaison HTTP ou HTTPS. Les points de terminaison HTTP ciblés doivent être accessibles au public.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Remplacez les éléments suivants :

  • JOB: nom de job qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de job dans un projet, même si vous supprimer le job associé.

  • LOCATION: emplacement d'exécution de votre job.

  • SCHEDULE: fréquence ou intervalle du job auquel le job doit s'exécuter (par exemple, every 3 hours). La que vous indiquez ici peut être tout type unix-cron chaîne compatible. Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.

    Pour en savoir plus, consultez Configurez des job Cron Cron.

  • URI: URI complet du point de terminaison le job contactera.

Les autres paramètres sont décrits dans la Documentation de référence sur la ligne de commande gcloud:

  • Vous pouvez éventuellement spécifier la méthode HTTP. La valeur par défaut est POST.

  • Vous pouvez éventuellement spécifier les données à envoyer à la cible. Ces données sont envoyé dans le corps de la requête sous forme d'octets lorsque POST ou PUT Méthode HTTP sélectionnée.

  • Vous pouvez également définir des valeurs pour les nouvelles tentatives, qui spécifient la manière dont App Engine le job doit être relancé en cas d'échec. Dans la plupart des cas, les valeurs par défaut suffisant.

  • Pour créer un job HTTP Target nécessitant une authentification, consultez la page Utiliser l'authentification avec des cibles HTTP

Exemple

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Vous devez utiliser un sujet Pub/Sub que vous avez déjà configuré dans votre projet. Cloud Scheduler publiera des messages dans en tant que compte de service des API Google.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Remplacez les éléments suivants :

  • JOB: nom de job qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de job dans un projet, même si vous supprimer le job associé.

  • LOCATION: emplacement d'exécution de votre job.

  • SCHEDULE: fréquence ou intervalle du job auquel le job doit s'exécuter (par exemple, every 3 hours). La que vous indiquez ici peut être n'importe quelle unix-cron chaîne compatible. Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.

    Pour en savoir plus, consultez Configurez des job Cron Cron.

  • TOPIC : nom du sujet auquel la tâche sera publiée. Utilisez l'option --message-body ou --message-body-from-file. pour spécifier un message à envoyer au sujet. Cet élément est envoyé en tant que data dans le message Pub/Sub. Par exemple, consultez le guide de démarrage rapide.

Les autres paramètres sont décrits dans la Documentation de référence sur l'outil de ligne de commande gcloud

Exemple

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

HTTP App Engine

La cible App Engine HTTP n'est disponible que pour App Engine. l'application associée au projet en cours. Si vous souhaitez utiliser une autre application App Engine en dehors de votre projet actuel, choisissez HTTP en tant que cible et non App Engine HTTP. Les règles de pare-feu cibles doivent autoriser les requêtes provenant de la plage d'adresses IP 0.1.0.2/32.

Les points de terminaison App Engine peuvent être sécurisés à l'aide de login: admin sur le l'élément handlers dans le fichier app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Remplacez les éléments suivants :

  • JOB: nom de job qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de job dans un projet, même si vous supprimer le job associé.

  • LOCATION: emplacement d'exécution de votre job. Il doit être identique à celui de votre application App Engine.

  • SCHEDULE: fréquence ou intervalle du job auquel le job doit s'exécuter, par exemple, every 3 hours. La chaîne que vous fournissez il peut y avoir unix-cron chaîne compatible. Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.

    Pour en savoir plus, consultez Configurez des job Cron Cron.

D'autres paramètres sont décrits dans la documentation de référence de la ligne de commande gcloud :

  • Spécifiez l'URL relative du point de terminaison App Engine que le que le job contactera. Si vous utilisez la valeur par défaut /, le job utilisera PROJECT-ID.appspot.com, où PROJECT-ID est l'ID de votre projet actuel.

  • Indiquez le nom du service App Engine en cours d'exécution. le gestionnaire du job Cloud Scheduler. En cas d'omission, default est utilisé. Si vous souhaitez la définir, vous pouvez trouver les noms des services dans la console Google Cloud.

  • Vous pouvez éventuellement définir la méthode HTTP que vous souhaitez utiliser lors de l'exécution du job. La valeur par défaut est POST.

  • Vous pouvez éventuellement spécifier la version. Si cette règle n'est pas configurée, est utilisée. Vous trouverez les versions disponibles dans le Console Google Cloud

  • Vous pouvez éventuellement spécifier l'instance. Si cette règle n'est pas configurée, toutes les instances disponibles peuvent être utilisées. Vous pouvez trouver les versions disponibles dans la console Google Cloud.

  • Vous pouvez éventuellement spécifier les données à envoyer à la cible. Ces données sont envoyées dans le corps de la requête sous forme d'octets lorsque la requête HTTP POST ou PUT est sélectionnée.

  • Vous pouvez également définir des valeurs pour les nouvelles tentatives, qui spécifient la manière dont App Engine le job doit être relancé en cas d'échec. Dans la plupart des cas, les valeurs par défaut sont suffisant.

Exemple

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Modifier un job

Vous pouvez modifier la configuration d'un job.

Console

  1. Dans la console Google Cloud, accédez à la page Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Sélectionnez le job à modifier.

  3. Cliquez sur Modifier.

  4. Suivez les étapes pour définir le calendrier, configurer l'exécution et configurer des paramètres facultatifs lors de la création d'un job.

gcloud

Lorsque vous modifiez un job à l'aide de gcloud CLI, vous utilisez différentes pour chaque type de target:

HTTP

Vous pouvez envoyer une requête à n’importe quel point de terminaison HTTP ou HTTPS. Les points de terminaison HTTP ciblés doivent être accessibles au public.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Remplacez les éléments suivants :

  • JOB: nom de job qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de job dans un projet, même si vous supprimer le job associé.

  • LOCATION: emplacement dans lequel votre job est exécuté. Si vous ne spécifiez pas l'emplacement, la gcloud CLI utilise votre emplacement par défaut. Si le job à modifier se trouve dans un autre vous devez spécifier l'emplacement en plus de l'élément NAME pour que votre job soit identifié. Vous ne pouvez pas mettre à jour l'emplacement du job.

  • SCHEDULE: fréquence ou intervalle du job auquel le job doit s'exécuter (par exemple, every 3 hours). La que vous indiquez ici peut être tout type unix-cron chaîne compatible. Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.

    Pour en savoir plus, consultez Configurez des job Cron Cron.

  • URI : URI complet du point de terminaison que le job doit contacter.

Les autres paramètres sont décrits dans la Documentation de référence sur l'outil de ligne de commande gcloud

Exemple

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Vous devez utiliser un sujet Pub/Sub que vous avez déjà configuré dans votre projet. Cloud Scheduler publiera des messages dans en tant que compte de service des API Google.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Remplacez les éléments suivants :

  • JOB: nom de job qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de job dans un projet, même si vous supprimer le job associé.

  • LOCATION: emplacement dans lequel votre job est exécuté. Si vous ne spécifiez pas l'emplacement, la gcloud CLI utilise votre emplacement par défaut. Si le job à modifier se trouve dans un autre vous devez spécifier l'emplacement en plus de l'élément NAME pour que votre job soit identifié. Vous ne pouvez pas mettre à jour l'emplacement du job.

  • SCHEDULE: fréquence ou intervalle du job auquel le job doit s'exécuter, par exemple, every 3 hours. La chaîne que vous fournissez il peut y avoir unix-cron chaîne compatible. Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.

    Pour en savoir plus, consultez Configurez des job Cron Cron.

  • TOPIC: nom du sujet sur lequel le job va être publié. Utilisez l'option --message-body ou --message-body-from-file. pour spécifier un message à envoyer au sujet. Cet élément est envoyé en tant que data dans le message Pub/Sub. Par exemple, consultez le guide de démarrage rapide.

Les autres paramètres sont décrits dans la Documentation de référence sur l'outil de ligne de commande gcloud

Exemple

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

HTTP App Engine

La cible App Engine HTTP n'est disponible que pour l'application App Engine associée au projet en cours. Si vous souhaitez utiliser d'autres Application App Engine en dehors de votre projet actuel, choisissez HTTP la cible, et non App Engine HTTP.

Les points de terminaison App Engine peuvent être sécurisés à l'aide de login: admin sur le l'élément handlers dans le fichier app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Remplacez les éléments suivants :

  • JOB: nom de job qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de job dans un projet, même si vous supprimer le job associé.

  • LOCATION: emplacement dans lequel votre job s'exécute (il s'agit de l'emplacement identique à l'emplacement de votre application App Engine cible). Si vous ne spécifiez pas l'emplacement, la gcloud CLI utilise votre emplacement par défaut. Si le job à modifier se trouve dans un autre vous devez spécifier l'emplacement en plus de l'élément NAME pour que votre job soit identifié. Vous ne pouvez pas mettre à jour l'emplacement du job.

  • SCHEDULE: fréquence ou intervalle du job auquel le job doit s'exécuter, par exemple, every 3 hours. La chaîne que vous fournissez il peut y avoir unix-cron chaîne compatible. Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.

    Pour en savoir plus, consultez Configurez des job Cron Cron.

Les autres paramètres sont décrits dans la Documentation de référence sur l'outil de ligne de commande gcloud

Exemple

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Suspendre un job

Vous pouvez suspendre l'exécution d'un job.

Console

  1. Dans la console Google Cloud, accédez à Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Sélectionnez le job à suspendre.

  3. Cliquez sur Mettre en veille.

gcloud

  1. Ouvrez une fenêtre de terminal sur la machine sur laquelle vous avez installé la CLI gcloud.

  2. Exécutez la commande suivante :

     gcloud scheduler jobs pause MY_JOB
    

    Remplacez MY_JOB par le nom du job à suspendre.

Lorsqu'un job est suspendu, vous pouvez également le modifier. Une fois le job modifié, il en pause jusqu'à ce que vous le relanciez.

Reprendre un job

Vous pouvez reprendre l'exécution d'une tâche mise en pause.

Console

  1. Dans la console Google Cloud, accédez à Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Sélectionnez le job à reprendre.

    Le job doit déjà être mis en pause.

  3. Cliquez sur Reprendre.

gcloud

  1. Ouvrez une fenêtre de terminal sur la machine sur laquelle vous avez installé la CLI gcloud.

  2. Exécutez la commande suivante :

     gcloud scheduler jobs resume MY_JOB
    

    Remplacez MY_JOB par le nom du job à reprendre.

Supprimer un job

Vous pouvez supprimer un job.

Console

  1. Dans la console Google Cloud, accédez à Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Sélectionnez le job à supprimer.

  3. Cliquez sur Supprimer.

gcloud

  1. Ouvrez une fenêtre de terminal sur la machine sur laquelle vous avez installé la CLI gcloud.

  2. Exécutez la commande suivante :

     gcloud scheduler jobs delete MY_JOB
    

    Remplacez MY_JOB par le nom du job à supprimer.