Exécuter des jobs selon un calendrier

Cette page explique comment exécuter des tâches Cloud Run de manière planifiée en utilisant Cloud Scheduler.

Rôles requis

Pour obtenir les autorisations nécessaires pour effectuer les opérations décrites sur cette page, demandez à votre administrateur de vous accorder les rôles IAM sur votre job Cloud Run :

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre job Cloud Run communique avec des APIGoogle Cloud , telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Avant de commencer

  1. Créez un job Cloud Run si vous n'en avez pas encore créé.
  2. Activez l'API Cloud Scheduler pour votre projet :

    gcloud services enable cloudscheduler.googleapis.com
    

Configurer un job Cloud Run pour qu'il s'exécute selon une programmation

Vous pouvez configurer un job Cloud Run pour qu'il s'exécute selon une planification à l'aide de la consoleGoogle Cloud , de la gcloud CLI ou de Terraform :

Console

  1. Dans la console Google Cloud , accédez à la page des jobs Cloud Run :

    Accéder aux jobs Cloud Run

  2. Cliquez sur le job que vous souhaitez exécuter selon une programmation.

  3. Cliquez sur l'onglet Triggers (Déclencheurs).

  4. Cliquez sur Ajouter un déclencheur de programmeur.

  5. Dans le formulaire de job Cloud Scheduler, procédez comme suit :

    1. Dans le champ Nom, saisissez un nom pour votre job Cloud Scheduler.

    2. Dans le champ Région, sélectionnez une région pour votre job Cloud Scheduler. Ce nom ne doit pas nécessairement correspondre à la région utilisée pour la tâche Cloud Run.

    3. Spécifiez la fréquence d'exécution de votre job en utilisant le format unix-cron. Par exemple, 0 12 * * *.

    4. Sélectionnez votre fuseau horaire.

    5. Cliquez sur Continuer.

    6. Dans la section Configurer l'exécution, sélectionnez le compte de service autorisé à appeler le job Cloud Run actuel.

  6. Cliquez sur Créer pour créer le job Cloud Scheduler qui va exécuter le job Cloud Run à la fréquence spécifiée.

gcloud

Exécutez la commande ci-dessous.

  gcloud scheduler jobs create http SCHEDULER_JOB_NAME \
      --location SCHEDULER_REGION \
      --schedule="SCHEDULE" \
      --uri="https://run.googleapis.com/v2/projects/PROJECT_ID/locations/CLOUD_RUN_REGION/jobs/JOB:run" \
      --http-method POST \
      --oauth-service-account-email PROJECT_NUMBER-compute@developer.gserviceaccount.com

Remplacez les éléments suivants :

  • SCHEDULER_JOB_NAME : nom que vous souhaitez attribuer à votre job Scheduler.
  • SCHEDULER_REGION : région compatible avec Cloud Scheduler (par exemple, europe-west2).
  • SCHEDULE : fréquence nécessaire, par exemple 0 12 * * *.
  • PROJECT_ID : ID de votre projet.
  • CLOUD_RUN_REGION : région de votre job Cloud Run. Exemple :europe-west1
  • JOB par le nom de votre job Cloud Run
  • PROJECT_NUMBER : votre numéro de projet.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_job dans votre configuration Terraform :
resource "google_cloud_scheduler_job" "job" {
  name             = "schedule-job"
  description      = "test http job"
  schedule         = "*/8 * * * *"
  attempt_deadline = "320s"
  region           = "us-central1"
  project          = data.google_project.project.project_id

  retry_config {
    retry_count = 3
  }

  http_target {
    http_method = "POST"
    uri         = "https://run.googleapis.com/v2/projects/${data.google_project.project.project_id}/locations/${google_cloud_run_v2_job.default.location}/jobs/${google_cloud_run_v2_job.default.name}:run"
    body        = base64encode("{}")

    headers = {
      "Content-Type" = "application/json"
    }

    oauth_token {
      service_account_email = google_service_account.cloud_run_invoker_sa.email
    }
  }

  depends_on = [resource.google_project_service.cloudscheduler_api, resource.google_cloud_run_v2_job.default, resource.google_cloud_run_v2_job_iam_binding.binding]
}

Cloud Scheduler exécute la tâche Cloud Run à la fréquence spécifiée.

Planifier votre job dans un périmètre VPC Service Controls

Si votre projet Google Cloud se trouve dans un périmètre VPC Service Controls d'un réseau cloud privé virtuel, l'intégration de Cloud Scheduler à VPC Service Controls accepte les jobs Cloud Run comme cible à l'aide du format URI suivant :

https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB:run

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud .
  • REGION : Google Cloud région du job.
  • JOB par le nom de votre job Cloud Run

Pour en savoir plus sur la configuration de VPC Service Controls pour Cloud Run, consultez Utiliser VPC Service Controls (VPC SC). Pour en savoir plus sur l'utilisation de Cloud Scheduler avec VPC Service Controls, consultez Sécuriser les tâches Cron avec VPC Service Controls.

Étapes suivantes

Après avoir utilisé cette fonctionnalité, vous pouvez effectuer les opérations suivantes :