Running Cloud Run services on a schedule
Stay organized with collections
Save and categorize content based on your preferences.
Using Cloud Scheduler to securely trigger a Cloud Run service on a schedule. This is similar to using cron jobs.
Code sample
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],[],[],[],null,["# Running Cloud Run services on a schedule\n\nUsing Cloud Scheduler to securely trigger a Cloud Run service on a schedule. This is similar to using cron jobs.\n\nCode sample\n-----------\n\n### Terraform\n\n\nTo learn how to apply or remove a Terraform configuration, see\n[Basic Terraform commands](/docs/terraform/basic-commands).\n\n\nFor more information, see the\n[Terraform provider reference documentation](https://registry.terraform.io/providers/hashicorp/google/latest/docs).\n\n data \"google_project\" \"project\" {\n }\n\n # Enable Cloud Run API\n resource \"google_project_service\" \"cloudrun_api\" {\n service = \"run.googleapis.com\"\n disable_on_destroy = false\n project = data.google_project.project.project_id\n }\n\n # Enable Compute Engine API\n resource \"google_project_service\" \"computeengine_api\" {\n service = \"compute.googleapis.com\"\n disable_on_destroy = false\n project = data.google_project.project.project_id\n }\n\n # Enable Cloud Scheduler API\n resource \"google_project_service\" \"cloudscheduler_api\" {\n service = \"cloudscheduler.googleapis.com\"\n disable_on_destroy = false\n project = data.google_project.project.project_id\n }\n\n # Cloud Run Invoker Service Account\n resource \"google_service_account\" \"cloud_run_invoker_sa\" {\n account_id = \"cloud-run-invoker\"\n display_name = \"Cloud Run Invoker\"\n provider = google-beta\n project = data.google_project.project.project_id\n }\n\n # Project IAM binding\n resource \"google_project_iam_binding\" \"run_invoker_binding\" {\n project = data.google_project.project.project_id\n role = \"roles/run.invoker\"\n members = [\"serviceAccount:${google_service_account.cloud_run_invoker_sa.email}\"]\n }\n\n resource \"google_project_iam_binding\" \"token_creator_binding\" {\n project = data.google_project.project.project_id\n role = \"roles/iam.serviceAccountTokenCreator\"\n members = [\"serviceAccount:${google_service_account.cloud_run_invoker_sa.email}\"]\n }\n\n # Cloud Run Job\n resource \"google_cloud_run_v2_job\" \"default\" {\n name = \"cloud-run-job\"\n location = \"us-central1\"\n\n deletion_protection = false # set to \"true\" in production\n\n template {\n template {\n containers {\n image = \"us-docker.pkg.dev/cloudrun/container/job:latest\"\n }\n }\n }\n\n depends_on = [resource.google_project_service.cloudrun_api]\n }\n\n # Cloud Run Job IAM binding\n resource \"google_cloud_run_v2_job_iam_binding\" \"binding\" {\n project = data.google_project.project.project_id\n location = google_cloud_run_v2_job.default.location\n name = google_cloud_run_v2_job.default.name\n role = \"roles/viewer\"\n members = [\"serviceAccount:${google_service_account.cloud_run_invoker_sa.email}\"]\n depends_on = [resource.google_cloud_run_v2_job.default]\n }\n\n resource \"google_cloud_scheduler_job\" \"job\" {\n provider = google-beta\n name = \"schedule-job\"\n description = \"test http job\"\n schedule = \"*/8 * * * *\"\n attempt_deadline = \"320s\"\n region = \"us-central1\"\n project = data.google_project.project.project_id\n\n retry_config {\n retry_count = 3\n }\n\n http_target {\n http_method = \"POST\"\n uri = \"https://${google_cloud_run_v2_job.default.location}-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/${data.google_project.project.number}/jobs/${google_cloud_run_v2_job.default.name}:run\"\n\n oauth_token {\n service_account_email = google_service_account.cloud_run_invoker_sa.email\n }\n }\n\n depends_on = [resource.google_project_service.cloudscheduler_api, resource.google_cloud_run_v2_job.default, resource.google_cloud_run_v2_job_iam_binding.binding]\n }\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=cloudrun)."]]