TL

Cloud Service

Cloud Scheduler

cron 形式のスケジュールでジョブを定期実行するフルマネージドサービス。AWS の EventBridge Scheduler に相当。

基礎運用上の優秀性
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.cron 式でジョブを定期実行するフルマネージドなスケジューラ。
  • 2.HTTP/Pub/Sub/App Engine を宛先に呼び出し、再試行も任せられる。
  • 3.サーバー常駐の cron をなくし、運用とスケールをマネージドに任せる。

解決する課題

サーバーに常駐させた crontab を運用・冗長化する手間をなくし、定期実行をマネージドに任せられます。

  • 「毎日深夜にバッチを起動」「5 分おきにヘルスチェック」のような 定期実行(cron) を、専用 VM を立てずに実現したい
  • cron を動かすサーバーが落ちるとジョブが止まる、という 単一障害点 を避けたい
  • 失敗したジョブを 自動でリトライ し、確実に実行させたい
  • 既存の HTTP エンドポイントや Pub/Sub トピックを、スケジュールに従って呼び出す だけのトリガーが欲しい

主要概念と用語

  • ジョブ(Job): 「いつ(スケジュール)」「何を(宛先)」実行するかを定義する中心リソース
  • スケジュール(schedule): 実行タイミングを unix-cron 形式(分・時・日・月・曜日の 5 フィールド)で指定する。タイムゾーンを併せて指定できる
  • ターゲット(宛先)の 3 種別:
    • HTTP ターゲット: 任意の URL へ HTTP リクエストを送る。Cloud Run / Cloud Functions / 外部 API などを叩ける
    • Pub/Sub ターゲット: 指定トピックへメッセージを発行する。後続を非同期に動かす起点になる
    • App Engine ターゲット: 同一プロジェクトの App Engine アプリの URL を呼び出す
  • タイムゾーン: スケジュールの基準となる時間帯。日本のジョブなら Asia/Tokyo を指定して夏時間の混乱を避ける
  • 再試行(retry)設定: 失敗時の最大試行回数・バックオフ・最大到達時間などを指定する
  • 実行の確認: ジョブが成功とみなされる条件は、HTTP なら 2xx 応答の受信。失敗すると再試行ポリシーに従う

仕様・制限・クォータ

  • スケジュールは unix-cron 形式で指定し、最短で 1 分間隔の実行に対応する(秒単位の精度ではない)
  • 実行は おおむね指定時刻の前後にトリガーされる性質で、ミリ秒精度の厳密さは保証されない。厳密なリアルタイム性が要る用途には向かない
  • 1 ジョブは 1 つの宛先を持つ。複数処理へ分岐したい場合は Pub/Sub ターゲットにして購読側でファンアウトする
  • 再試行ポリシー(最大試行回数・最小/最大バックオフ・最大実行時間など)を設定でき、宛先障害時に自動でリトライする
  • プロジェクト/リージョンあたりの ジョブ数に割り当て(クォータ) があり、必要に応じて引き上げ申請できる
  • ジョブはリージョンに属する リージョナルなリソースとして作成する(App Engine ターゲットを使う場合は App Engine のロケーションに準じる)
  • HTTP ターゲットには本文・ヘッダー・メソッドを指定でき、ペイロードサイズには上限がある

内部の仕組み

ジョブを作成すると、Cloud Scheduler はスケジュール定義をマネージド基盤に保持し、指定時刻になるとターゲットへ自動でディスパッチします。HTTP ターゲットなら指定 URL へリクエストを送り、応答コードで成否を判定します。Pub/Sub ターゲットなら指定トピックへメッセージを発行し、以降は Pub/Sub の配信機構に委ねます。

  • 宛先が成功(HTTP の 2xx など)を返すとその実行は完了とみなされる
  • 失敗した場合は 再試行ポリシーに従い、指数的バックオフを挟んで再実行する
  • スケジューラ自体は冗長化されたマネージドサービスのため、ユーザーが cron サーバーの可用性を気にする必要がない
  • 実行履歴・成否は Cloud Logging に記録され、後から追跡できる
役割分担を押さえる

Cloud Scheduler は「いつ起動するか」を担う トリガーであり、実際の処理ロジックは宛先側(Cloud Run / Cloud Functions / Pub/Sub の購読者など)に置きます。スケジューラに重い処理を持たせず、起動と処理を分けて設計します。

設計パターン / ベストプラクティス

  • Cloud Scheduler から Cloud Run / Cloud Functions を起動: 定期バッチやレポート生成を HTTP ターゲットで叩く。処理本体はサーバーレスに置き、起動だけスケジューラに任せる
  • Cloud Scheduler から Pub/Sub へ発行: スケジュールを起点に Pub/Sub メッセージを流し、購読側で非同期・ファンアウト処理する。スケジューラと処理を疎結合に保てる
  • 長時間処理は非同期化: HTTP ターゲットの応答待ちでタイムアウトしないよう、起動だけ受けてバックグラウンドで処理する設計にする
  • 冪等な宛先設計: 再試行で同じ実行が複数回届きうるため、宛先は二重実行されても安全な冪等処理にする
  • タイムゾーンを明示: 業務時間に合わせて Asia/Tokyo などを指定し、夏時間や UTC との混同による実行ずれを防ぐ
  • Workflows との組み合わせ: 複数ステップのオーケストレーションが必要なら、スケジューラで Workflows を起動して処理フローを管理する

運用・監視

  • Cloud Logging にジョブの実行ログ(成功・失敗・応答コード)が記録される。失敗が続く場合はここを起点に調査する
  • Cloud Monitoring で実行回数や失敗率を監視し、想定どおり起動しているかを確認する
  • ジョブが起動しない → スケジュール式(cron の 5 フィールド)と タイムゾーン、ジョブが一時停止状態でないかを確認する
  • 宛先でエラーになる → 宛先の 権限(呼び出し用サービスアカウントのロール)と URL、認証設定を確認する
  • 手動でジョブを即時実行(強制実行)して、スケジュールを待たずに宛先疎通を切り分けられる
  • 不要になったジョブは 一時停止(pause)または削除 し、誤起動と無駄な課金を防ぐ

コスト

課金はおもに ジョブ数に基づく体系で、一定数までの無料枠が用意されています。スケジューラ自体は軽量ですが、起動先の Cloud Run / Cloud Functions / Pub/Sub 側の実行費用も合わせて考えます。

費用要素課金の考え方コスト最適化のポイント
スケジューラのジョブジョブ数を基準に課金、一定数まで無料枠あり重複や不要なジョブを整理して数を抑える
宛先の実行(Cloud Run 等)リクエスト数・実行時間で別途課金処理を軽量化し冪等にして再実行を減らす
Pub/Sub ターゲット発行メッセージのデータ量で課金ペイロードを小さく保つ
再試行の超過分失敗で再実行が増えると宛先側の費用が増える宛先を安定化し過剰なリトライを避ける

セキュリティ

  • ジョブには サービスアカウントを割り当て、宛先呼び出しに必要な 最小権限の IAM ロールだけを付与する
  • HTTP ターゲットで Cloud Run / Cloud Functions を認証付きで呼ぶ場合、ジョブのサービスアカウントが OIDC トークンを付与してリクエストする(宛先側で発行元を検証)
  • 外部 API を呼ぶ場合は OAuth トークンや認証ヘッダーを付与し、認証情報をジョブ定義にハードコードしない
  • Pub/Sub ターゲットには、ジョブのサービスアカウントに トピックへの発行権限のみを与える
  • 宛先エンドポイントは認証なしの公開状態にせず、スケジューラからの正当な呼び出しだけを受け付けるようにする
アンチパターン

宛先の URL を 認証なしの公開エンドポイントで受けるのは NG。誰でも外部から叩けてしまいます。Cloud Run / Cloud Functions は認証を有効化し、ジョブのサービスアカウントに OIDC トークンを付与して呼び出してください。ジョブには宛先の呼び出しに必要な最小限のロールだけを与えます。

Well-Architected の観点

  • 運用上の優秀性(Operational Excellence): cron をマネージドに置き換え、サーバー常駐や冗長化の運用負担をなくす。スケジュール変更は宣言的に管理でき、実行ログで可観測性を確保できる
  • 信頼性(Reliability): スケジューラ自体が冗長化されており、単一の cron サーバーのような単一障害点を排除する。再試行ポリシーで一時的な宛先障害を吸収する
  • コスト最適化(Cost Optimization): 専用 VM を常時起動せずに定期実行を賄える。ジョブ数を整理し、無料枠と組み合わせて無駄を抑える

試験で問われるポイント

頻出
  • 定期実行(cron)といえば Cloud Scheduler。AWS の EventBridge Scheduler に相当する役割で覚える
  • 宛先は HTTP / Pub/Sub / App Engine の 3 種別。サーバーレス処理を定期起動する典型は「Scheduler から HTTP で Cloud Run / Cloud Functions」または「Scheduler から Pub/Sub」
  • スケジュールは unix-cron 形式で、最短 1 分間隔。秒単位やミリ秒精度の厳密実行ではない
  • 失敗時は 再試行ポリシーで自動リトライ。宛先は 冪等に設計する
  • 認証付き呼び出しは OIDC トークン(Google のサービス向け)または OAuth トークン(外部 API 向け)を使う
  • 役割分担: イベント駆動は Eventarc、定期実行は Cloud Scheduler、というすみ分けを問われやすい

関連サービス・比較

観点Cloud Scheduler(GCP)EventBridge Scheduler(AWS)
位置づけマネージドな cron スケジューラマネージドなスケジューラ
スケジュール指定unix-cron 形式(最短1分間隔)cron / rate / 一回限りの指定
主な宛先HTTP / Pub/Sub / App EngineLambda / SQS / Step Functions など多数
再試行再試行ポリシーで自動リトライ再試行とデッドレターに対応
認証OIDC / OAuth トークンを付与IAM ロールで宛先を呼び出し
スコープリージョナルリージョナル
Eventarc とのすみ分け

イベントが起きたら処理するのが Eventarc、時刻が来たら処理するのが Cloud Scheduler です。AWS では EventBridge がイベントバスとスケジューラの両方を担いますが、Google Cloud ではイベント配信を Eventarc、定期実行を Cloud Scheduler が分担します。

ハンズオン / CLI例

# HTTP ターゲット: 毎日 09:00(JST) に Cloud Run を OIDC 認証付きで起動
gcloud scheduler jobs create http daily-batch \
  --location=asia-northeast1 \
  --schedule="0 9 * * *" \
  --time-zone="Asia/Tokyo" \
  --uri="https://my-service-xxxx.a.run.app/run" \
  --http-method=POST \
  --oidc-service-account-email=scheduler-sa@PROJECT_ID.iam.gserviceaccount.com

# Pub/Sub ターゲット: 5 分おきにトピックへメッセージを発行
gcloud scheduler jobs create pubsub heartbeat \
  --location=asia-northeast1 \
  --schedule="*/5 * * * *" \
  --time-zone="Asia/Tokyo" \
  --topic=jobs \
  --message-body='{"event":"tick"}'

# ジョブの一覧・詳細確認
gcloud scheduler jobs list --location=asia-northeast1
gcloud scheduler jobs describe daily-batch --location=asia-northeast1

# スケジュールを待たずに即時実行して宛先疎通を確認
gcloud scheduler jobs run daily-batch --location=asia-northeast1

# 一時停止 / 再開
gcloud scheduler jobs pause daily-batch --location=asia-northeast1
gcloud scheduler jobs resume daily-batch --location=asia-northeast1

Google Cloud Service

Cloud Schedulerを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アプリ統合

比較で見る軸

クラウド: Google Cloud / カテゴリ: アプリ統合 / 難易度: basic

導入後に効く点

HTTP/Pub/Sub/App Engine を宛先に呼び出し、再試行も任せられる。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
アプリ統合
難易度
basic
関連資格
設計柱
operational

判断チェックリスト

  • 自社の用途が「アプリ統合 / operational」に近いか確認する。
  • 強みである「cron 式でジョブを定期実行するフルマネージドなスケジューラ。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アプリ統合operational