Jobs nach Zeitplan ausführen

Auf dieser Seite wird beschrieben, wie Sie Cloud Run-Jobs mit einem Cloud Scheduler nach einem Zeitplan ausführen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rollen für Ihren Cloud Run-Job zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die auf dieser Seite beschriebenen Vorgänge benötigen:

  • Cloud Scheduler-Administrator (roles/cloudscheduler.admin) oder eine benutzerdefinierte Rolle mit der Berechtigung cloudscheduler.jobs.create.
  • Cloud Run-Invoker (roles/run.invoker), um Jobs mithilfe der Google Cloud CLI auszuführen, oder Cloud Run-Entwickler (roles/run.developer), um Jobs mit der Google Cloud Console auszuführen.

Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Job mitGoogle Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.

Hinweis

  1. Erstellen Sie einen Cloud Run-Job, falls Sie noch keinen erstellt haben.
  2. Aktivieren Sie die Cloud Scheduler API für Ihr Projekt:

    gcloud services enable cloudscheduler.googleapis.com
    

Cloud Run-Job für die zeitgesteuerte Ausführung konfigurieren

Sie können einen Cloud Run-Job so konfigurieren, dass er nach einem Zeitplan ausgeführt wird. Dazu haben Sie folgende Möglichkeiten: Google Cloud die Console, die gcloud CLI oder Terraform:

Console

  1. Wechseln Sie in der Google Cloud -Console zur Seite „Cloud Run-Jobs“:

    Zu Cloud Run-Jobs

  2. Klicken Sie auf den Job, den Sie nach Zeitplan ausführen möchten.

  3. Klicken Sie auf den Tab Trigger.

  4. Klicken Sie auf Planer-Trigger hinzufügen.

  5. Führen Sie im Formular für Cloud Scheduler-Jobs die folgenden Schritte aus:

    1. Geben Sie unter Name einen Namen für Ihren Cloud Scheduler-Job ein.

    2. Wählen Sie unter Region eine Region für Ihren Cloud Scheduler-Job aus. Es muss nicht mit der Region übereinstimmen, die für den Cloud Run-Job verwendet wird.

    3. Geben Sie die Häufigkeit der Ausführung des Jobs im Format unix-cron an, z. B. 0 12 * * *.

    4. Wählen Sie Ihre Zeitzone aus.

    5. Klicken Sie auf Weiter.

    6. Wählen Sie im Abschnitt Ausführung konfigurieren das Dienstkonto aus, das die Berechtigung zum Aufrufen des aktuellen Cloud Run-Jobs hat.

  6. Klicken Sie auf Erstellen, um den Cloud Scheduler-Job zu erstellen, der den Cloud Run-Job dann mit der angegebenen Häufigkeit ausführt.

gcloud

Führen Sie dazu diesen Befehl aus:

  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

Ersetzen Sie Folgendes:

  • SCHEDULER_JOB_NAME: der Name, den Sie dem Scheduler-Job geben möchten.
  • SCHEDULER_REGION: eine von Cloud Scheduler unterstützte Region, z. B. europe-west2.
  • SCHEDULE: die erforderliche Häufigkeit, z. B. 0 12 * * *.
  • PROJECT_ID: Ihre Projekt-ID.
  • CLOUD_RUN_REGION: Die Region für Ihren Cloud Run-Job. Beispiel: europe-west1.
  • JOB: Der Name Ihres Cloud Run-Jobs.
  • PROJECT_NUMBER: Ihre Projektnummer.

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Fügen Sie der Ressource google_cloud_run_v2_job in Ihrer Terraform-Konfiguration Folgendes hinzu:
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 führt den Cloud Run-Job mit der angegebenen Häufigkeit aus.

Job in einem VPC Service Controls-Perimeter planen

Wenn sich Ihr Google Cloud -Projekt in einem VPC Service Controls-Perimeter in einem Virtual Private Cloud-Netzwerk befindet, unterstützt die Cloud Scheduler-Integration mit VPC Service Controls Cloud Run-Jobs als Ziel mit dem folgenden URI-Format:

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Google Cloud Projekt-ID.
  • REGION: die Google Cloud Region des Jobs.
  • JOB: Der Name Ihres Cloud Run-Jobs.

Weitere Informationen zum Konfigurieren von VPC Service Controls für Cloud Run finden Sie unter VPC Service Controls (VPC SC) verwenden. Weitere Informationen zur Verwendung von Cloud Scheduler mit VPC Service Controls finden Sie unter Cronjobs mit VPC Service Controls schützen.

Nächste Schritte

Nachdem Sie dieses Feature verwendet haben, können Sie Folgendes tun: