Créer et configurer des tâches Cron

Cible Pub/Sub

Si vous choisissez le type de cible Pub/Sub:

  1. Spécifiez le nom du sujet sur lequel la tâche sera publiée. 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. Il est envoyé en tant que paramètre data dans le message Pub/Sub. Pour obtenir un 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 la section 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 l'application App Engine et la région associée au projet actuel. Si vous souhaitez utiliser une autre application App Engine en dehors de votre projet actuel, choisissez HTTP comme cible, et non App Engine HTTP.

Définissez le formulaire comme suit :

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

  2. Spécifiez le nom du service App Engine qui exécute le gestionnaire pour la tâche Cloud Scheduler. En cas d'omission, le service default est utilisé. Si vous le souhaitez, vous pouvez trouver les noms des services dans la console.

  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.

  4. Vous pouvez éventuellement spécifier l'instance. Si cette valeur n'est pas définie, n'importe quelle instance disponible peut être utilisée. Vous pouvez trouver les versions disponibles dans la console.

  5. Spécifiez l'URL relative du point de terminaison App Engine que la tâche contactera. Si vous utilisez la valeur par défaut /, la tâche utilisera PROJECT-ID.appspot.com, où PROJECT-ID correspond à l'ID de votre projet actuel.

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

  7. Ajoutez 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 sous forme d'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

Les points de terminaison App Engine ciblés doivent faire partie du même projet et peuvent être sécurisés à l'aide de login: admin sur l'élément handlers du fichier app.yaml.

Cible HTTP

Si vous choisissez le type de cible HTTP:

  1. Spécifiez l'URL complète du point de terminaison que la tâche 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 en 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 une tâche cible HTTP nécessitant une authentification, consultez Utiliser 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, appelées tâches Cron, qui sont envoyées à des cibles selon une programmation récurrente, également appelée intervalle ou fréquence de tâche.

Une seule instance d'une tâche doit être exécutée à un instant T. Dans de rares cas, il est possible que plusieurs instances de la même tâche soient demandées. Par conséquent, votre gestionnaire de requêtes doit être idempotent et votre code doit garantir l'absence d'effets secondaires si cela se produit.

Cloud Scheduler est conçu pour les tâches récurrentes. Si vous n'avez besoin d'exécuter une tâche qu'une seule fois, envisagez d'utiliser Cloud Tasks, qui permet de planifier une tâche jusqu'à 30 jours à l'avance.

Avant de commencer

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

Créer une tâche

Vous pouvez créer une tâche à l'aide de Google Cloud Console ou de Google Cloud CLI.

Console

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

    Accéder à Cloud Scheduler

  2. Cliquez sur Créer une tâche.

  3. Dans le champ Nom, saisissez un nom unique pour chaque tâche.

    Après avoir supprimé la tâche associée, vous pouvez réutiliser un nom de tâche dans un projet.

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

    Si vous utilisez une cible HTTP App Engine, vous devez sélectionner la même région que celle de votre application App Engine. Pour en savoir plus, consultez la page Régions compatibles par cible.

  5. Vous pouvez éventuellement fournir une brève description de la tâche, par exemple un rappel de son rôle.

    Cette description s'affiche dans la console à côté du nom de la tâche.

  6. Spécifiez la fréquence à laquelle la tâche doit être exécutée, à l'aide d'une chaîne de configuration.

    Par exemple, la chaîne 0 1 * * 0 exécute la tâche une fois par semaine à 1h du matin chaque dimanche matin. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

  7. Dans la liste Fuseau horaire, choisissez le fuseau horaire à utiliser pour la planification de la tâche.

  8. Cliquez sur Continuer.

  9. Spécifiez le type de cible:

    • HTTP: le point de terminaison HTTP ciblé doit être accessible au public.

    • Pub/Sub: vous devez spécifier le nom du sujet Pub/Sub que vous avez déjà configuré dans votre projet et dans lequel la tâche sera publiée.

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

  10. Cliquez sur Continuer.

  11. (Facultatif) Pour configurer le comportement des nouvelles tentatives, cliquez sur Configurer les paramètres facultatifs. Pour spécifier la durée, utilisez une séquence d'entiers décimaux 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 fractionnées ne sont pas autorisées. Le champ Max retry duration n'accepte que les valeurs h, m et s. Min backoff duration et Max backoff duration acceptent tous les deux l'ensemble complet.

  12. (Facultatif) Pour les cibles HTTP et App Engine HTTP, configurez un délai pour les tentatives de tâche. Si le gestionnaire de requêtes ne répond pas dans ce délai, la requête est annulée et la tentative est marquée comme ayant échoué. Cloud Scheduler relance la tâche en fonction de la configuration des nouvelles tentatives.

  13. Pour créer et enregistrer la tâche, cliquez sur Créer.

    La tâche sera désormais exécutée à la fréquence spécifiée.

gcloud

Lorsque vous créez une tâche à l'aide de la CLI gcloud, vous utilisez 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 tâche qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de tâche dans un projet, même si vous supprimez la tâche associée.

  • LOCATION : il doit s'agir du même emplacement que votre application App Engine.

  • SCHEDULE : fréquence ou intervalle de tâche auquel la tâche doit être exécutée, par exemple every 3 hours. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Bien que nous ne recommandions pas son utilisation, l'ancienne syntaxe Cron App Engine est toujours compatible avec les tâches existantes.

    Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

  • URI: URI complet du point de terminaison que la tâche contactera.

D'autres paramètres sont décrits dans la documentation de référence de l'outil de 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ées dans le corps de la requête en octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

  • Vous pouvez également définir les valeurs de nouvelle tentative, qui spécifient comment la tâche App Engine doit être relancée en cas d'échec. Dans la plupart des cas, les valeurs par défaut suffisent.

  • Pour créer une tâche 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 ce sujet en tant que compte de service d'API Google.

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

Remplacez les éléments suivants :

  • JOB : nom de tâche qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de tâche dans un projet, même si vous supprimez la tâche associée.

  • LOCATION : il doit s'agir du même emplacement que votre application App Engine.

  • SCHEDULE : fréquence ou intervalle de tâche auquel la tâche doit être exécutée, par exemple every 3 hours. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Bien que nous ne recommandions pas son utilisation, l'ancienne syntaxe Cron App Engine est toujours compatible avec les tâches existantes.

    Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

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

D'autres paramètres sont décrits dans la documentation de référence de la 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 l'application App Engine associée au projet en cours. Si vous souhaitez utiliser une autre application App Engine en dehors de votre projet actuel, choisissez HTTP comme cible, et non App Engine HTTP.

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

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

Remplacez les éléments suivants :

  • JOB: nom de tâche qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de tâche dans un projet, même si vous supprimez la tâche associée.

  • LOCATION: il doit s'agir du même emplacement que votre application App Engine.

  • SCHEDULE: fréquence ou intervalle de tâche auquel la tâche doit être exécutée, par exemple every 3 hours. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Bien que nous ne recommandions pas son utilisation, l'ancienne syntaxe Cron App Engine est toujours compatible avec les tâches existantes.

    Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

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

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

  • Spécifiez le nom du service App Engine qui exécute le gestionnaire pour la tâche Cloud Scheduler. En cas d'omission, le service default est utilisé. Si vous souhaitez le définir, vous trouverez 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 de la tâche. La valeur par défaut est POST.

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

  • Vous pouvez éventuellement spécifier l'instance. Si cette valeur n'est pas définie, n'importe quelle instance disponible peut être utilisée. Vous pouvez trouver les versions disponibles dans Google Cloud Console.

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

  • Vous pouvez également définir les valeurs de nouvelle tentative, qui spécifient comment la tâche App Engine doit être relancée en cas d'échec. Dans la plupart des cas, les valeurs par défaut sont suffisantes.

Exemple

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

Modifier une mission

Vous pouvez modifier la configuration d'une tâche.

Console

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

    Accéder à Cloud Scheduler

  2. Sélectionnez la tâche à modifier.

  3. Cliquez sur Modifier.

  4. Suivez les étapes pour définir la planification et l'exécution, ainsi que les paramètres facultatifs lors de la création d'une tâche.

gcloud

Lorsque vous modifiez une tâche à l'aide de la CLI gcloud, vous utilisez 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 update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Remplacez les éléments suivants :

  • JOB: nom de tâche qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de tâche dans un projet, même si vous supprimez la tâche associée.

  • LOCATION : il doit s'agir du même emplacement que votre application App Engine.

  • SCHEDULE : fréquence ou intervalle de tâche auquel la tâche doit être exécutée, par exemple every 3 hours. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Bien que nous ne recommandions pas son utilisation, l'ancienne syntaxe Cron App Engine est toujours compatible avec les tâches existantes.

    Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

  • URI: URI complet du point de terminaison que la tâche contactera.

D'autres paramètres sont décrits dans la documentation de référence de la 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 ce sujet en tant que compte de service d'API Google.

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

Remplacez les éléments suivants :

  • JOB : nom de tâche qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de tâche dans un projet, même si vous supprimez la tâche associée.

  • LOCATION : il doit s'agir du même emplacement que votre application App Engine.

  • SCHEDULE : fréquence ou intervalle de tâche auquel la tâche doit être exécutée, par exemple every 3 hours. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Bien que nous ne recommandions pas son utilisation, l'ancienne syntaxe Cron App Engine est toujours compatible avec les tâches existantes.

    Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

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

D'autres paramètres sont décrits dans la documentation de référence de la 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 une autre application App Engine en dehors de votre projet actuel, choisissez HTTP comme cible, et non App Engine HTTP.

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

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

Remplacez les éléments suivants :

  • JOB: nom de tâche qui doit être unique dans le projet. Notez que vous ne pouvez pas réutiliser un nom de tâche dans un projet, même si vous supprimez la tâche associée.

  • LOCATION: il doit s'agir du même emplacement que votre application App Engine.

  • SCHEDULE: fréquence ou intervalle de tâche auquel la tâche doit être exécutée, par exemple every 3 hours. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Bien que nous ne recommandions pas son utilisation, l'ancienne syntaxe Cron App Engine est toujours compatible avec les tâches existantes.

    Pour en savoir plus, consultez la page Configurer les planifications de tâches Cron.

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

Exemple

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

Suspendre une tâche

Vous pouvez suspendre l'exécution d'une tâche.

Console

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

    Accéder à Cloud Scheduler

  2. Sélectionnez la tâche à 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 de la tâche à suspendre.

Lorsqu'une tâche est en veille, vous pouvez également la modifier. Une fois la tâche modifiée, elle reste suspendue jusqu'à ce que vous la réactiviez.

Reprendre une tâche

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

Console

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

    Accéder à Cloud Scheduler

  2. Sélectionnez la tâche à reprendre.

    La tâche doit déjà être suspendue.

  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 de la tâche à reprendre.

Supprimer une offre d'emploi

Vous pouvez supprimer une tâche.

Console

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

    Accéder à Cloud Scheduler

  2. Sélectionnez la tâche à 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 de la tâche à supprimer.