Lancer une exécution planifiée de services

Avec Cloud Scheduler, vous pouvez déclencher un service Cloud Run de manière planifiée et sécurisée. Cette méthode revient à utiliser des tâches Cron.

Exemples d'utilisation possible :

  • Sauvegarde à intervalles réguliers
  • Exécution de tâches d'administration récurrentes, telles que les suivantes :
    • Nouvelle génération d'un sitemap
    • Suppression d'anciens contenus, données, configurations ou révisions
    • Synchronisation du contenu entre les systèmes de données
    • Traitement des notifications quotidiennes par e-mail
    • Validation et création de rapports sur l'accès aux services en aval
  • Génération de documents, tels que des factures

Cette page décrit comment utiliser Cloud Scheduler avec Cloud Run dans le même projet Google Cloud en toute sécurité.

Avant de commencer

Activez l'API Cloud Scheduler sur le projet que vous utilisez.

Créer et déployer votre service

Pour créer et déployer un service, procédez comme suit :

  1. Dans votre service, mettez en œuvre la tâche que vous souhaitez exécuter de manière planifiée.

  2. Notez le type de requête avec lequel votre service s'attend à recevoir des requêtes de tâche. Par exemple, GET ou POST. Lorsque vous créez la tâche planifiée qui appelle votre service, vous devez spécifier la méthode HTTP qui correspond à ce service.

  3. Lorsque vous déployez le service que vous utilisez avec Cloud Scheduler, assurez-vous de NE PAS autoriser les appels non authentifiés.

Créer un compte de service pour Cloud Scheduler

Vous devez créer un compte de service à associer à Cloud Scheduler et l'autoriser à appeler votre service Cloud Run. Vous pouvez utiliser un compte de service existant pour représenter Cloud Scheduler ou en créer un.

Pour créer un compte de service et l'autoriser à appeler le service Cloud Run, procédez comme suit :

Console

  1. Accédez à la page Créer une clé de compte de service dans Cloud Console.

    Page "Créer un compte de service"

  2. Dans la liste Compte de service, sélectionnez Nouveau compte de service.

  3. Dans le champ Nom du compte de service, saisissez le nom que vous souhaitez utiliser pour le compte de service.

  4. Cliquez sur Créer.

  5. Copiez l'adresse e-mail du compte de service à utiliser dans les étapes suivantes.

  6. Cliquez sur Continuer si vous êtes invité à spécifier des autorisations.

  7. Accédez à la page Services Cloud Run dans Cloud Console.

    Accéder à la page "Services"

  8. Sélectionnez votre service dans la liste affichée.

  9. Si nécessaire, cliquez sur le bouton Afficher le panneau d'informations/Masquer le panneau d'informations situé tout à droite de la page pour afficher des informations.

  10. Recherchez l'onglet Autorisations, puis cliquez sur Ajouter un membre dans cet onglet.

  11. Collez l'adresse e-mail de votre compte de service dans le champ Nouveaux membres.

  12. Dans le menu déroulant "Rôle", sélectionnez Cloud Run > Demandeur Cloud Run.

  13. Cliquez sur Enregistrer.

Ligne de commande

  1. Créez le compte de service :

    gcloud iam service-accounts create SERVICE-ACCOUNT_NAME \
       --display-name "DISPLAYED-SERVICE-ACCOUNT_NAME"

    Remplacez

    • SERVICE-ACCOUNT_NAME par un nom écrit en minuscules unique dans votre projet Google Cloud, par exemple my-invoker-service-account-name ;
    • DISPLAYED-SERVICE-ACCOUNT-NAME par le nom que vous souhaitez afficher pour ce compte de service, par exemple dans la console : My Invoker Service Account.
  2. Pour Cloud Run, autorisez votre compte de service à appeler votre service :

    gcloud run services add-iam-policy-binding SERVICE \
       --member=serviceAccount:SERVICE-ACCOUNT_NAME@PROJECT-ID.iam.gserviceaccount.com \
       --role=roles/run.invoker

    Remplacez

    • SERVICE par le nom du service que vous souhaitez que Cloud Scheduler appelle.
    • SERVICE-ACCOUNT_NAME par le nom du compte de service.
    • PROJECT-ID par l'ID de votre projet Google Cloud.

Créer une tâche Cloud Scheduler

Vous devez créer une tâche qui appelle votre service aux moments spécifiés. Vous pouvez utiliser la console ou la ligne de commande :

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.

    Accéder à Cloud Scheduler

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

    capture d'écran

  3. Indiquez un nom pour la tâche.

  4. Spécifiez la fréquence (intervalle de tâche) à laquelle la tâche doit être exécutée à l'aide d'une chaîne de configuration. Par exemple, la chaîne 0 */3 * * * exécute la tâche toutes les trois heures. La chaîne que vous fournissez ici peut être n'importe quelle chaîne compatible avec crontab.

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

  5. Dans la liste déroulante, choisissez le fuseau horaire à utiliser pour la fréquence de tâche.

  6. Spécifiez HTTP comme cible :

    1. Spécifiez l'URL complète de votre service, par exemple https://myservice-abcdef-uc.a.run.app. La tâche enverra des requêtes à cette URL.

    2. Spécifiez la méthode HTTP : celle-ci doit correspondre à celle attendue par votre service Cloud Run précédemment déployé. 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 lorsque la méthode HTTP POST ou PUT est sélectionnée.

    4. Cliquez sur Plus pour afficher les paramètres d'authentification.

    5. Dans le menu déroulant, sélectionnez Ajouter un jeton OIDC.

    6. Dans le champ Compte de service, copiez l'adresse e-mail du compte de service que vous avez créé précédemment.

    7. Dans le champ Audience, copiez l'URL complète de votre service.

  7. Cliquez sur Créer pour créer et enregistrer la tâche.

Ligne de commande

  1. Créez la tâche suivante :

    gcloud beta scheduler jobs create http test-job --schedule "5 * * * *" \
       --http-method=HTTP-METHOD \
       --uri=SERVICE-URL \
       --oidc-service-account-email=SERVICE-ACCOUNT-EMAIL   \
       --oidc-token-audience=SERVICE-URL

    Remplacez

    • HTTP-METHOD par la méthode HTTP, par exemple GET, POST, PUT, etc.
    • SERVICE-URL par votre URL de service.
    • SERVICE-ACCOUNT-EMAIL par l'adresse e-mail de votre compte de service.

Votre service Cloud Run sera déclenché via une requête de la tâche Cloud Scheduler à la fréquence que vous avez définie. Vous pouvez vérifier et surveiller ce comportement en examinant les journaux de ce service.

Étape suivante