Esegui job in base a una pianificazione

Questa pagina descrive come eseguire job Cloud Run in base a una pianificazione utilizzando Cloud Scheduler.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per le operazioni descritte in questa pagina, chiedi all'amministratore di concederti i ruoli IAM nel tuo job Cloud Run:

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo job Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.

Prima di iniziare

  1. Crea un job Cloud Run se non ne hai ancora creato uno.
  2. Abilita l'API Cloud Scheduler per il tuo progetto:

    gcloud services enable cloudscheduler.googleapis.com
    

Configura un job Cloud Run da eseguire in base a una pianificazione

Puoi configurare un job Cloud Run in modo che venga eseguito in base a una pianificazione utilizzando la consoleGoogle Cloud , gcloud CLI o Terraform:

Console

  1. Nella console Google Cloud , vai alla pagina dei job Cloud Run:

    Vai ai job Cloud Run

  2. Fai clic sul job che vuoi eseguire in base a una pianificazione.

  3. Fai clic sulla scheda Attivatori.

  4. Fai clic su Aggiungi trigger dello scheduler.

  5. Nel modulo del job Cloud Scheduler, segui questi passaggi:

    1. In Nome, inserisci un nome per il job Cloud Scheduler.

    2. Per Regione, seleziona una regione per il job Cloud Scheduler. Non deve corrispondere alla regione utilizzata per il job Cloud Run.

    3. Specifica la frequenza di esecuzione del job utilizzando il formato unix-cron, ad esempio 0 12 * * *

    4. Seleziona il tuo fuso orario.

    5. Fai clic su Continua.

    6. Nella sezione Configura l'esecuzione, seleziona il account di servizio che ha l'autorizzazione per richiamare il job Cloud Run corrente.

  6. Fai clic su Crea per creare il job Cloud Scheduler che eseguirà il job Cloud Run alla frequenza specificata.

gcloud

Esegui questo comando:

  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

Sostituisci quanto segue:

  • SCHEDULER_JOB_NAME: il nome che vuoi dare al job di pianificazione.
  • SCHEDULER_REGION: una regione supportata da Cloud Scheduler, ad esempio europe-west2.
  • SCHEDULE: la frequenza necessaria, ad esempio 0 12 * * *.
  • PROJECT_ID: il tuo ID progetto.
  • CLOUD_RUN_REGION: la regione del tuo job Cloud Run. Ad esempio, europe-west1.
  • JOB: il nome del job Cloud Run.
  • PROJECT_NUMBER: il numero del progetto.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_job nella configurazione 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 eseguirà il job Cloud Run alla frequenza specificata.

Pianifica il job all'interno di un perimetro dei Controlli di servizio VPC

Se il tuo Google Cloud progetto si trova all'interno di un perimetro dei Controlli di servizio VPC in una rete Virtual Private Cloud, l'integrazione di Cloud Scheduler con i Controlli di servizio VPC supporta i job Cloud Run come destinazione utilizzando il seguente formato URI:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto Google Cloud .
  • REGION: la Google Cloud regione del job.
  • JOB: il nome del job Cloud Run.

Per saperne di più sulla configurazione dei Controlli di servizio VPC per Cloud Run, consulta Utilizzo dei Controlli di servizio VPC (VPC SC). Per saperne di più sull'utilizzo di Cloud Scheduler con i Controlli di servizio VPC, consulta Proteggere i cron job con i Controlli di servizio VPC.

Passaggi successivi

Dopo aver utilizzato questa funzionalità, puoi: