Créer et configurer des tâches Cron

Vous pouvez vous servir de Cloud Scheduler pour configurer des unités de travail planifiées, connues sous le nom de tâches Cron, qui sont envoyées à des cibles selon une planification récurrente, également appelée intervalle ou fréquence de tâche. Vous pouvez créer ces tâches à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud.

Une seule instance d'une tâche doit être exécutée à un instant T. Sachez en outre que Cloud Scheduler est conçu pour fournir une exécution de type "au moins une fois". En d'autres termes, si une tâche est planifiée, Cloud Scheduler envoie la requête de tâche au moins une fois. Dans de rares cas, il peut arriver que des requêtes soient envoyées pour plusieurs instances d'une même tâche. 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épétitives. Si vous ne devez 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.

Créer des tâches

Pour créer une tâche, vous pouvez utiliser la console ou l'outil de ligne de commande gcloud. Cliquez sur l'onglet approprié :

Console

  1. Accédez à la page Cloud Scheduler de la console.

    Cloud Scheduler

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

    capture d'écran

  3. Indiquez un nom pour la tâche. Ce nom doit être unique dans le projet. Notez que vous pouvez réutiliser un nom de tâche dans un projet après avoir supprimé la tâche associée.

  4. Vous pouvez éventuellement fournir une brève description de la tâche, par exemple un rappel de son rôle. Cette description est affichée dans la console à côté du nom de la tâche.

  5. À l'aide d'une chaîne de configuration, définissez le calendrier selon lequel la tâche doit être exécutée. Par exemple, la chaîne 0 1 * * 0 exécute la tâche une fois par semaine tous les dimanches à une heure du matin. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron.

    Pour plus d'informations, reportez-vous à la rubrique Configurer la planification de tâches.

  6. Dans la liste déroulante, choisissez le fuseau horaire à utiliser pour le calendrier de tâche.

  7. Spécifiez la cible :

  8. Cliquez sur Créer pour créer et enregistrer la tâche. La tâche sera dorénavant exécutée à la fréquence spécifiée.

gcloud

Lorsque vous créez une tâche à l'aide de la ligne de commande gcloud, vous devez utiliser des commandes différentes pour chaque type de cible. Pour consulter des exemples de lignes de commande, cliquez sur les liens cibles ci-dessous :

Cible Pub/Sub

Si vous choisissez la 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. Cet élément est envoyé en tant que paramètre data dans le message Pub/Sub. Pour voir un exemple de cette opération, reportez-vous au Démarrage rapide.

Cloud Scheduler publiera des messages dans ce sujet en tant que compte de service des API Google. Notez que la configuration de la cible Pub/Sub n'offre aucune option permettant de définir la répétition des tentatives d'exécution, étant donné que Pub/Sub fournit son propre mécanisme et sa propre stratégie de répétition des tentatives d'exécution.

Cible App Engine

Si vous choisissez la cible App Engine HTTP, vous devez utiliser 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 en tant que cible et non App Engine HTTP.

Définissez le formulaire comme suit :

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

  2. Spécifiez le nom du service App Engine qui exécute le gestionnaire pour la tâche Cloud Scheduler. Si vous omettez de le spécifier, le service default est utilisé. Si vous souhaitez le définir, vous pouvez trouver les noms de services dans Google Cloud Console.

  3. 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.

  4. 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 Google Cloud Console.

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

  6. 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 tant qu'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

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

Cible HTTP

Si vous choisissez la 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 tant qu'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

  4. Pour créer une tâche cible HTTP qui nécessite une authentification, consultez la page Utiliser l'authentification avec des cibles HTTP.

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

Cible 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 des API Google.

Syntaxe

gcloud scheduler jobs create pubsub JOB --schedule=SCHEDULE --topic=TOPIC (--message-body=MESSAGE_BODY | --message-body-from-file=MESSAGE_BODY_FROM_FILE) [optional flags]

Pour utiliser la cible Pub/Sub dans la ligne de commande :

  1. Pour JOB, spécifiez un nom pour la tâche. Ce nom 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.

  2. Spécifiez la planification (également appelée fréquence ou intervalle de tâche) selon laquelle la tâche doit être exécutée ; par exemple, "every 3 hours" (Toutes les trois heures). La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Vous pouvez également utiliser l'ancienne syntaxe Cron App Engine pour définir le calendrier.

Pour plus d'informations, reportez-vous à la rubrique Configurer la planification de tâches.

  1. Spécifiez le nom du sujet sur lequel la tâche sera publiée.

  2. Spécifiez un message à envoyer au sujet. Cet élément est envoyé en tant que paramètre data dans le message Pub/Sub. Pour voir un exemple de cette opération, reportez-vous au Démarrage rapide.

  3. D'autres paramètres facultatifs sont disponibles, tels que le fuseau horaire, les attributs, etc. Ces paramètres sont décrits dans la Documentation de référence de l'outil de ligne de commande gcloud.

Notez que la configuration de la cible Pub/Sub n'offre aucune option permettant de définir la répétition des tentatives d'exécution, étant donné que Pub/Sub fournit son propre mécanisme et sa propre stratégie de répétition des tentatives d'exécution.

Exemple de ligne de commande :

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

Cible App Engine

La cible App Engine HTTP est disponible uniquement 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 en tant que cible et non App Engine HTTP.

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

Syntaxe

gcloud scheduler jobs create app-engine JOB --schedule=SCHEDULE [optional flags]

Pour utiliser l'attribut de classe App Engine HTTP target, procédez comme suit :

  1. Pour JOB, spécifiez un nom pour la tâche. Ce nom 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.

  2. Spécifiez la planification (également appelée fréquence ou intervalle de tâche) selon laquelle la tâche doit être exécutée ; par exemple, "every 3 hours" (Toutes les trois heures). La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Vous pouvez également utiliser l'ancienne syntaxe Cron App Engine pour définir le calendrier.

Pour plus d'informations, reportez-vous à la rubrique Configurer la planification de tâches.

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

  2. Spécifiez le nom du service App Engine qui exécute le gestionnaire pour la tâche Cloud Scheduler. Si vous omettez de le spécifier, le service default est utilisé. Si vous souhaitez le définir, vous pouvez trouver les noms de services dans Google Cloud Console.

  3. 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.

  4. 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 Google Cloud Console.

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

  6. 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 tant qu'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

  7. Vous pouvez éventuellement définir les valeurs "Tentatives", qui permettent de spécifier le nombre de tentatives d'exécution de la tâche App Engine à effectuer en cas d'échec. Dans la plupart des cas, les valeurs par défaut seront suffisantes. Pour en savoir plus, consultez la documentation de référence de l'outil de ligne de commande gcloud.

  8. D'autres paramètres facultatifs sont disponibles, tels que le fuseau horaire, la description, etc. Ces paramètres sont décrits dans la Documentation de référence de l'outil de ligne de commande gcloud.

Exemple de ligne de commande :

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

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.

Syntaxe

gcloud scheduler jobs create http JOB --schedule=SCHEDULE --uri=URI [optional flags]

Pour utiliser l'attribut de classe HTTP target, procédez comme suit :

  1. Pour JOB, spécifiez un nom pour la tâche. Ce nom 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.

  2. Spécifiez la planification (également appelée fréquence ou intervalle de tâche) selon laquelle la tâche doit être exécutée ; par exemple, "every 3 hours" (Toutes les trois heures). La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec unix-cron. Vous pouvez également utiliser l'ancienne syntaxe Cron App Engine pour définir le calendrier.

Pour plus d'informations, reportez-vous à la rubrique Configurer la planification de tâches.

  1. Spécifiez l'URL complète du point de terminaison que la tâche doit contacter.

  2. Vous pouvez éventuellement spécifier 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 tant qu'octets lorsque la méthode HTTP POST ou PUT est sélectionnée.

  4. Vous pouvez éventuellement définir les valeurs "Tentatives", qui permettent de spécifier le nombre de tentatives d'exécution de la tâche App Engine à effectuer en cas d'échec. Dans la plupart des cas, les valeurs par défaut seront suffisantes. Pour en savoir plus, consultez la documentation de référence de l'outil de ligne de commande gcloud.

  5. D'autres paramètres facultatifs sont disponibles, tels que le fuseau horaire, la description, etc. Ces paramètres sont décrits dans la Documentation de référence de l'outil de ligne de commande gcloud.

  6. Pour créer une tâche cible HTTP qui nécessite une authentification, consultez la page Utiliser l'authentification avec des cibles HTTP.

Exemple de ligne de commande :

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

Supprimer une tâche

Pour supprimer une tâche, procédez comme suit :

Console

  1. Accédez à la page Cloud Scheduler de la console.

    Cloud Scheduler

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

  3. Cliquez sur SUPPRIMER LA TÂCHE.

gcloud

  1. Ouvrez une fenêtre de terminal sur la machine sur laquelle vous avez installé le SDK Cloud.

  2. Appelez la commande :

    gcloud scheduler jobs delete [my-job]
    

    en remplaçant [my-job] par le nom de la tâche à supprimer.