スケジュールに従ってジョブを実行する

このページでは、Cloud Scheduler を使用して、スケジュールに従って Cloud Run ジョブを実行する方法について説明します。

必要なロール

このページで説明するオペレーションに必要な権限を取得するには、Cloud Run ジョブに対する次の IAM ロールを付与するよう、管理者に依頼してください。

  • Cloud Scheduler 管理者roles/cloudscheduler.admin)または cloudscheduler.jobs.create 権限を持つカスタムロール
  • Cloud Run 起動元roles/run.invoker): Google Cloud CLI を使用してジョブを実行する場合。Cloud Run デベロッパーroles/run.developer): Google Cloud コンソールを使用してジョブを実行する場合。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run ジョブが Google Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

始める前に

Cloud Run ジョブを作成します

スケジュールに従って実行するように Cloud Run ジョブを構成する

スケジュールに従って Cloud Run ジョブを実行するには:

コンソール

  1. Cloud Run ジョブに移動します。

  2. スケジュールに従って実行するジョブをクリックします。

  3. [トリガー] タブをクリックします。

  4. [スケジューラ トリガーを追加] をクリックします。

  5. プロジェクトで Cloud Scheduler API をまだ有効にしていない場合は、右端のパネルにある [API を有効にする] をクリックします。

  6. Cloud Scheduler ジョブフォームに入力します。

    画像

  7. [スケジュールを定義する] で、次の操作を行います。

    1. Cloud Scheduler ジョブに名前を付けます。

    2. Cloud Scheduler ジョブのリージョンを選択します。Cloud Run ジョブに使用されるリージョンと一致している必要はありません。

    3. ジョブ実行の頻度unix-cron 形式で指定します(例: 0 12 * * *)。

    4. タイムゾーンを選択します。

  8. [続行] をクリックします。

  9. [サービス アカウント] プルダウン メニューで、現在の Cloud Run サービスを呼び出す権限を持つサービス アカウントを選択します。

  10. [作成] をクリックして、指定した頻度で Cloud Run ジョブを実行する Cloud Scheduler ジョブを作成します。

コマンドライン

  1. 最初に Cloud Run ジョブを作成します。

  2. 次のコマンドを実行します。

    gcloud scheduler jobs create http SCHEDULER_JOB_NAME \
      --location SCHEDULER_REGION \
      --schedule="SCHEDULE" \
      --uri="https://CLOUD_RUN_REGION-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT-ID/jobs/JOB-NAME:run" \
      --http-method POST \
      --oauth-service-account-email PROJECT-NUMBER-compute@developer.gserviceaccount.com

    次のように置き換えます。

    • SCHEDULER_JOB_NAME: スケジューラ ジョブに付ける名前。
    • SCHEDULER_REGION: Cloud Scheduler でサポートされているリージョン(europe-west2 など)。
    • CLOUD_RUN_REGION: Cloud Run ジョブのリージョン。プレビューするには、europe-west9 を使用します。
    • SCHEDULE: 目的の頻度(0 12 * * * など)。
    • PROJECT-ID: プロジェクト ID。
    • PROJECT-NUMBER: プロジェクト番号。
    • JOB-NAME: Cloud Run ジョブ。

Terraform

Cloud Run ジョブを実行する Cloud Scheduler ジョブを作成するには:

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]
}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Cloud Scheduler は、指定された頻度で Cloud Run ジョブを実行します。

次のステップ

この機能の使用後に、次の操作を行うことができます。