Cloud Scheduler를 사용하여 일정에 따라 Cloud Run 서비스를 안전하게 트리거합니다. 크론 작업을 사용하는 것과 유사합니다.
코드 샘플
Terraform
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요. 자세한 내용은 Terraform 제공업체 참고 문서를 확인하세요.
data "google_project" "project" {
}
# Enable Cloud Run API
resource "google_project_service" "cloudrun_api" {
service = "run.googleapis.com"
disable_on_destroy = false
project = data.google_project.project.project_id
}
# Enable Compute Engine API
resource "google_project_service" "computeengine_api" {
service = "compute.googleapis.com"
disable_on_destroy = false
project = data.google_project.project.project_id
}
# Enable Cloud Scheduler API
resource "google_project_service" "cloudscheduler_api" {
service = "cloudscheduler.googleapis.com"
disable_on_destroy = false
project = data.google_project.project.project_id
}
# Cloud Run Invoker Service Account
resource "google_service_account" "cloud_run_invoker_sa" {
account_id = "cloud-run-invoker"
display_name = "Cloud Run Invoker"
provider = google-beta
project = data.google_project.project.project_id
}
# Project IAM binding
resource "google_project_iam_binding" "run_invoker_binding" {
project = data.google_project.project.project_id
role = "roles/run.invoker"
members = ["serviceAccount:${google_service_account.cloud_run_invoker_sa.email}"]
}
resource "google_project_iam_binding" "token_creator_binding" {
project = data.google_project.project.project_id
role = "roles/iam.serviceAccountTokenCreator"
members = ["serviceAccount:${google_service_account.cloud_run_invoker_sa.email}"]
}
# Cloud Run Job
resource "google_cloud_run_v2_job" "default" {
provider = google-beta
name = "cloud-run-job"
location = "us-central1"
launch_stage = "BETA"
project = data.google_project.project.project_id
template {
template {
containers {
image = "us-docker.pkg.dev/cloudrun/container/job:latest"
}
}
}
depends_on = [resource.google_project_service.cloudrun_api]
}
# Cloud Run Job IAM binding
resource "google_cloud_run_v2_job_iam_binding" "binding" {
project = data.google_project.project.project_id
location = google_cloud_run_v2_job.default.location
name = google_cloud_run_v2_job.default.name
role = "roles/viewer"
members = ["serviceAccount:${google_service_account.cloud_run_invoker_sa.email}"]
depends_on = [resource.google_cloud_run_v2_job.default]
}
resource "google_cloud_scheduler_job" "job" {
provider = google-beta
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://${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"
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]
}
다음 단계
다른 Google Cloud 제품의 코드 샘플을 검색하고 필터링하려면 Google Cloud 샘플 브라우저를 참조하세요.