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 :
Dans votre service, mettez en œuvre la tâche que vous souhaitez exécuter de manière planifiée.
Notez le type de requête avec lequel votre service s'attend à recevoir des requêtes de tâche. Par exemple,
GET
ouPOST
. Lorsque vous créez le job planifié qui appelle votre service, vous devez spécifier la méthode HTTP qui correspond à ce service.Lorsque vous déployez le service que vous utilisez avec Cloud Scheduler, assurez-vous de NE PAS autoriser les appels non authentifiés.
L'exemple suivant montre comment déployer un service Cloud Run à l'aide de Terraform :
Remplacez us-docker.pkg.dev/cloudrun/container/hello
par une référence à votre propre image de conteneur.
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
Dans la console Google Cloud, accédez à la page Comptes de service.
Sélectionnez un projet.
Saisissez le nom du compte de service à afficher dans la console Google Cloud.
La console Google Cloud génère un ID de compte de service basé sur ce nom. Modifiez l'ID si nécessaire. Vous ne pourrez pas le modifier par la suite.
Facultatif : saisissez la description du compte de service.
Cliquez sur Créer et continuer.
Facultatif : cliquez sur le champ Sélectionner un rôle.
Sélectionnez Cloud Run > Demandeur Cloud Run.
Cliquez sur OK.
Ligne de commande
Créez le compte de service :
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Remplacer
- 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
.
- SERVICE_ACCOUNT_NAME par un nom écrit en minuscules unique dans votre projet Google Cloud, par exemple
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
Remplacer
- 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
Accordez à votre compte de service l'accès au projet afin qu'il soit autorisé à effectuer des actions spécifiques sur les ressources de votre projet :
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Remplacer
RESOURCE_ID : ID de votre projet Google Cloud.
PRINCIPAL : l'identifiant du compte principal, qui se présente généralement sous la forme suivante : PRINCIPAL_TYPE:ID. Exemple :
user:my-user@example.com
. Pour obtenir la liste complète des valeurs possibles pour PRINCIPAL, consultez la documentation de référence sur les liaisons de stratégie.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Pour créer un compte de service à l'aide de Terraform, procédez comme suit :
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
Accédez à la page Cloud Scheduler de la console.
Cliquez sur Créer une tâche.
Indiquez un nom pour la tâche.
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.
Dans la liste déroulante, choisissez le fuseau horaire à utiliser pour la fréquence de tâche.
Spécifiez
HTTP
comme cible :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.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
.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
ouPUT
est sélectionnée.Cliquez sur Plus pour afficher les paramètres d'authentification.
Dans le menu déroulant, sélectionnez Ajouter un jeton OIDC.
Dans le champ Compte de service, copiez l'adresse e-mail du compte de service que vous avez créé précédemment.
Dans le champ Audience, copiez l'URL complète de votre service.
Cliquez sur Créer pour créer et enregistrer la tâche.
Ligne de commande
Vous devez utiliser l'authentification OIDC pour accéder à un service Cloud Run authentifié à partir de Cloud Scheduler. L'authentification OIDC inclut les options de compte de service et d'audience. Pour en savoir plus, consultez la section Utiliser l'authentification pour les cibles HTTP.
Pour créer le job Cloud Scheduler :
gcloud 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
Remplacer
- HTTP-METHOD par la méthode HTTP (GET, POST, PUT, etc…).
- SERVICE-URL par votre URL de service.
- SERVICE-ACCOUNT-EMAIL par l'adresse e-mail de votre compte de service.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.
Pour créer une tâche Cloud Scheduler pour le service Cloud Run, procédez comme suit :
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
- Journaliser et afficher des journaux
- Surveiller l'état et les performances
- Déclencher à partir de Pub/Sub
- Appeler avec HTTPS