Google Cloud

Cloud Scheduler + Cloud Functions/Run で定期バッチ自動化チュートリアル

2026-05-24
NicheeLab編集部

Cloud Scheduler は GCP のマネージド cron で、Cloud Functions / Cloud Run / Pub/Sub / HTTP を定期トリガーできます。 本記事では認証 + リトライ + 並列実行 + Workflows 連携まで実装パターンを網羅します。

パターン 1: Scheduler → Cloud Functions

# Function (Python)
import functions_framework

@functions_framework.http
def daily_report(request):
    # 処理: BigQuery 集計 → Email 送信
    from google.cloud import bigquery
    client = bigquery.Client()
    rows = client.query("SELECT COUNT(*) FROM analytics.events WHERE DATE(timestamp)=CURRENT_DATE()").result()
    # SendGrid でメール送信...
    return "OK"

# デプロイ
gcloud functions deploy daily-report \
  --gen2 --runtime=python311 --region=asia-northeast1 \
  --trigger-http --no-allow-unauthenticated \
  [email protected]

# Scheduler 設定 (OIDC 認証)
gcloud scheduler jobs create http daily-report-job \
  --schedule="0 9 * * *" \
  --time-zone="Asia/Tokyo" \
  --uri="https://asia-northeast1-PROJECT.cloudfunctions.net/daily-report" \
  --http-method=POST \
  --oidc-service-account-email=scheduler-sa@PROJECT.iam.gserviceaccount.com \
  --oidc-token-audience="https://asia-northeast1-PROJECT.cloudfunctions.net/daily-report"

パターン 2: Scheduler → Pub/Sub → 複数 Subscriber

# Pub/Sub Topic
gcloud pubsub topics create daily-trigger

# Scheduler → Pub/Sub
gcloud scheduler jobs create pubsub daily-trigger-job \
  --schedule="0 9 * * *" \
  --time-zone="Asia/Tokyo" \
  --topic=daily-trigger \
  --message-body="run"

# Subscriber 複数 (Fan-out)
gcloud pubsub subscriptions create report-sub --topic=daily-trigger \
  --push-endpoint=https://my-report-service.run.app
gcloud pubsub subscriptions create cleanup-sub --topic=daily-trigger \
  --push-endpoint=https://my-cleanup-service.run.app

パターン 3: Scheduler → Cloud Run Job (並列バッチ)

# Cloud Run Job (Python)
import os, sys
def main():
    task_index = int(os.environ.get("CLOUD_RUN_TASK_INDEX", 0))
    task_count = int(os.environ.get("CLOUD_RUN_TASK_COUNT", 1))
    # task_index に応じて担当範囲を処理
    print(f"Processing task {task_index}/{task_count}")

if __name__ == "__main__":
    main()

# Job 作成 (並列度 10)
gcloud run jobs create daily-batch-job \
  --image=asia-northeast1-docker.pkg.dev/PROJECT/repo/batch:v1 \
  --region=asia-northeast1 \
  --tasks=10 \
  --max-retries=3 \
  --task-timeout=3600

# Scheduler から Job 実行
gcloud scheduler jobs create http run-daily-batch \
  --schedule="0 2 * * *" \
  --time-zone="Asia/Tokyo" \
  --uri="https://asia-northeast1-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT/jobs/daily-batch-job:run" \
  --http-method=POST \
  --oauth-service-account-email=scheduler-sa@PROJECT.iam.gserviceaccount.com

パターン 4: Scheduler → Workflows (多段)

# Workflow YAML
main:
  steps:
    - extract:
        call: googleapis.cloudfunctions.v2.functions.call
        args: { name: projects/.../functions/extract }
        result: extract_result
    - transform:
        call: googleapis.cloudfunctions.v2.functions.call
        args: { name: projects/.../functions/transform }
        result: transform_result
    - load:
        call: googleapis.cloudfunctions.v2.functions.call
        args: { name: projects/.../functions/load }

# Workflow デプロイ
gcloud workflows deploy etl-workflow --source=etl.yaml --location=asia-northeast1

# Scheduler → Workflow
gcloud scheduler jobs create http etl-trigger \
  --schedule="0 3 * * *" \
  --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT/locations/asia-northeast1/workflows/etl-workflow/executions" \
  --http-method=POST \
  --oauth-service-account-email=scheduler-sa@PROJECT.iam.gserviceaccount.com

cron 形式チートシート

cron意味
0 9 * * *毎日 9 時
0 0 * * 0毎週日曜 0 時
0 0 1 * *毎月 1 日 0 時
*/15 * * * *15 分ごと
0 9-17 * * 1-5平日 9-17 時毎時

リトライ・エラーハンドリング

  • Scheduler 自動リトライ: 最大 5 回、Exponential Backoff (5s 〜 1h)
  • Cloud Functions: 7 日間メッセージ保持
  • Dead Letter Topic: 失敗メッセージを別 Topic に転送
  • Cloud Monitoring アラート: 連続失敗で PagerDuty 通知
  • Idempotent 設計: 同一処理を複数回実行しても安全に

典型的なユースケース

  • 日次 DB バックアップ (Firestore Export / Cloud SQL Backup)
  • 定期レポート生成 + Slack/Email 配信
  • Cache クリア
  • SaaS データ同期 (Salesforce → BQ)
  • 不要リソース停止 (夜間 VM 停止)
  • 定期 ML 学習 (週次 Continuous Training)

Cloud Scheduler の cron 形式は?

Unix 標準 cron 形式 (例: <code>0 9 * * *</code> = 毎日 9 時)。タイムゾーン指定可能 (デフォルト UTC、Asia/Tokyo 推奨)。

Cloud Scheduler の料金は?

ジョブ 3 個まで無料、4 個目から $0.10/ジョブ/月。実行回数は無制限。安価で大量定期実行可。

Cloud Functions 2nd gen と Cloud Run どちらを使う?

シンプル関数 → Functions、複雑処理 → Cloud Run。バッチ用途は Cloud Run Job も選択肢。

実行時間制限は?

Cloud Functions 2nd gen HTTP: 60 分、Event: 60 分。Cloud Run Job: 7 日。長時間バッチは Cloud Run Job または GCE Batch。

失敗時のリトライは?

Scheduler は自動リトライ (最大 5 回、Exponential Backoff)、Cloud Functions は 7 日保持。失敗時は Pub/Sub Dead Letter Topic に転送可能。

認証はどうする?

Scheduler が呼び出す URL に OIDC token (Service Account ベース) 付与。Cloud Run / Functions 側は IAM (roles/run.invoker) で制限。

Workflows との使い分けは?

Scheduler = 単発トリガー、Workflows = 多段オーケストレーション。Scheduler → Workflows のパターンが現実的。

Cloud Run Job vs Cloud Functions Batch?

Cloud Run Job = Container ベース + Parallelism (タスク並列)、Cloud Functions は単一呼び出し。大量並列処理は Cloud Run Job。

関連記事・バッチ / 自動化

GCP Professional Cloud Developer (PCD) 完全ガイド|Cloud Run・GKE・CI/CD・APM

Google Cloud Professional Cloud Developer の試験範囲、Cloud Run / GKE / Cloud Build / Cloud Trace、AWS DVA / Azure AZ-204 比較、学習ロードマップを徹底解説。

Cloud Run 完全ガイド|サーバレス Container プラットフォームの全機能・料金・GKE 比較

Google Cloud Cloud Run の全機能ガイド。Service / Job、Autoscaling、コールドスタート対策、料金体系、GKE / Cloud Functions / App Engine との比較、認証・CI/CD 構成を解説。

GitHub Actions + GCP CI/CD 完全ガイド|Workload Identity・Cloud Run/GKE デプロイ (2026)

GitHub Actions で GCP CI/CD を構築する完全ガイド。Workload Identity Federation、setup-gcloud、Cloud Run / GKE デプロイ、Cloud Build 連携、Reusable Workflow、Self-hosted Runner、Secrets 管理を 2026 年最新版で網羅。

Google Cloud (GCP) 認定資格ロードマップ 2026 完全版|全 15 試験を体系化

Google Cloud 認定資格 全 15 試験 (Foundational 2 + Associate 3 + Professional 10) の 2026 年版ロードマップ。14/15 試験が日本語対応、Generative AI Leader (2025-05 新)・PMLE 2026-06 新版、AWS/Azure/GCP シェア比較、役割別ルートを日本語で整理。

※ Google Cloud は Google LLC の商標です。最新は Cloud Scheduler 公式 をご確認ください。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

GCP 試験対策ページを見る
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Google Cloud

Google Cloud (GCP) 認定資格ロードマップ 2026 完全版|全 15 試験を体系化

Google Cloud 認定資格 全 15 試験 (Foundational 2 + Associate 3 + Pr...

Google Cloud

Cloud Digital Leader (CDL) 完全ガイド|出題範囲・学習リソース・合格戦略

Google Cloud Cloud Digital Leader (CDL) の完全ガイド。6 ドメイン 92 bul...

Google Cloud

Generative AI Leader (GAIL) 完全ガイド|Google Cloud 生成 AI 認定

Google Cloud Generative AI Leader (GAIL、2025-05-14 リリース) の完全...

Google Cloud

Vertex AI 入門|Google Cloud 統合 ML プラットフォームの全機能

Google Cloud Vertex AI の入門解説。Vertex AI Studio / Agent Builde...

Google Cloud

GCP Associate Cloud Engineer (ACE) 完全ガイド|試験範囲・受験料・学習ロードマップ

Google Cloud Associate Cloud Engineer (ACE) の試験範囲・受験料 125 US...

Google Cloudの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.