クラウドサービス

Cloud Tasks

重い処理をキューに溜めて非同期に分散実行でき、配信・再試行・流量制御を任せられる Cloud Tasks。GCP のマネージドなタスクキュー。AWS の SQS に近い。

基礎信頼性
最終更新: 2026-07-29公式ドキュメント
3つの要点
TL;DR
  1. HTTPタスクをキューへ保存し流量を制御して配信する。
  2. 1キューは最大毎秒500件、タスクは1MiBまで。
  3. 少なくとも1回届くためワーカーを冪等に実装する。

解決する課題

ユーザーのリクエストを待たせずに重い処理を後回しにしたい、外部 API への呼び出しを安定したペースで送りたい、失敗しても自動で再試行したい、といった要件をワーカーの実装なしで満たせます。

  • 重い処理(メール送信・画像変換・集計)を リクエスト経路から切り離し て応答を速くしたい
  • 呼び出し先(自前のサービスや外部 API)へ送る 流量を一定に保ち、過負荷を防ぎたい
  • 一時的なエラーで失敗したタスクを 自動で再試行 したい(指数バックオフ)
  • 「30 分後に通知する」のように 指定時刻まで遅延 させて 1 回だけ実行したい
  • 個々のタスクの 生成元と実行先を疎結合 にし、独立してスケールさせたい

主要概念と用語

  • キュー(Queue): タスクを溜める入れ物。ディスパッチレートや同時実行数などの流量制御はキュー単位で設定する。AWS SQS のキューに相当
  • タスク(Task): 実行したい 1 件の作業。ターゲット(送信先 URL)・HTTP メソッド・ペイロード・スケジュール時刻などを含む
  • ディスパッチ(Dispatch): Cloud Tasks がタスクを取り出し、ターゲットへ HTTP リクエストとして送ること。プッシュ型(Cloud Tasks 側がワーカーを呼ぶ)が基本
  • HTTP ターゲット: http:// または https:// のエンドポイントへ配信する方式。本番では HTTPS を使い、OIDC または OAuth トークンを付与できる
  • App Engine ターゲット: 同一プロジェクトの App Engine サービスへ配信する専用方式
  • ディスパッチレート(maxDispatchesPerSecond): 1 秒あたりに送るタスク数の上限。流量の天井
  • 最大同時実行数(maxConcurrentDispatches): 同時に処理中にできるタスク数の上限
  • 再試行設定(Retry config): 失敗時の最大試行回数・最小/最大バックオフ・最大経過時間などを定義
  • scheduleTime: タスクを実行してよい最短時刻。未来時刻を指定すると 遅延実行 になる
  • タスク名による重複排除(dedupe): 同名タスクを作ろうとすると拒否され、短時間の重複生成を防げる

仕様・制限・クォータ

  • 配信はプッシュ型で、Cloud Tasks 側がターゲット URL を呼び出す(SQS の Pull とは逆向き)。ワーカーは 2xx を返せば成功、それ以外は失敗として再試行対象になる
  • 少なくとも 1 回(at-least-once) の実行が基本。まれに重複実行されうるため、処理は 冪等 に作る
  • キューは リージョンあたり 1,000 件、1 キューの配信は 毎秒 500 件。タスクは 1 MiB、一括作成要求は 10 MiB・100 件まで
  • scheduleTime は最大 30 日先、未完了タスクの保持は 31 日。それより長い予約は別の永続ストアと Scheduler を組み合わせる
  • タスク名による重複排除期間は最大 24 時間。業務上の一意性を保証する仕組みではないため、ワーカーでも業務キーを検査する
  • 流量制御(ディスパッチレート・同時実行数)と再試行は キュー単位 の設定。タスクごとに上書きはできない
  • HTTP ターゲットの URL は HTTP / HTTPS の両方を受け付けるが、機密性と完全性を守るため本番では HTTPS を必須にする。独自エンドポイントには OIDC、*.googleapis.com の Google API には OAuth を使う

内部の仕組み

横にスクロール

生成元からリージョナルキュー、流量制御と再試行を経てHTTPワーカーへタスクを配信する経路を示す図
永続化、流量制御、バックオフはCloud Tasksが担う。タスク名、認証、業務キーによる冪等性は利用者が担う

タスクを作成すると、Cloud Tasks はそれを キューに永続化 し、キューの流量設定に従って取り出してターゲットへ HTTP リクエストを送ります。ワーカーが 2xx を返すと成功として削除、それ以外(4xx の一部・5xx・タイムアウト)は 失敗として再試行キューに戻します。

  • ディスパッチは maxDispatchesPerSecond と maxConcurrentDispatches の両方を満たす範囲で行われ、ワーカーへ押し寄せる量を平滑化する
  • 失敗時は 指数バックオフ で待ってから再試行し、最大試行回数または最大経過時間に達すると打ち切られる
  • scheduleTime を未来にしたタスクは、その時刻になるまでディスパッチされない(遅延実行・予約実行)
  • キューを 一時停止(pause) するとディスパッチが止まり、再開すると溜まったタスクから流れ出す
重複実行に備える

Cloud Tasks は「少なくとも 1 回」実行が基本なので、再試行やまれな重複で 同じタスクが 2 回実行されうる。ワーカーは 冪等(同じ入力で 2 回呼ばれても結果が変わらない)に作るのが鉄則です。タスク名による重複排除も併用すると、短時間の二重生成を抑えられます。

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

  • Web リクエストの裏で非同期化: API はタスクを作成して即応答し、実処理は Cloud Run / Cloud Functions のワーカーに任せる
  • 外部 API のレート制御: 送信先の制限に合わせてキューの ディスパッチレート を下げ、429 を避ける(タスクキュー全体が緩衝材になる)
  • 遅延・予約実行: scheduleTime で「N 分後」「指定時刻」に 1 回だけ実行。定期実行(cron)は Cloud Scheduler の役割で、用途が異なる
  • 過負荷時の絞り込み: 障害時は 同時実行数を絞るキューを一時停止 して、復旧後にまとめて流す
  • 冪等キー: タスクのペイロードに一意キーを持たせ、ワーカー側で処理済みを判定して重複実行を吸収する
  • ファンアウトが欲しいときは Pub/Sub: 1 イベントを多数の購読者へ同報したい場合は Cloud Tasks ではなく Pub/Sub が適任

運用・監視

  • Cloud Monitoring でキューの状態を監視する:
    • 試行回数や成功/失敗レスポンス数 → ワーカーのエラー率を把握
    • キューの タスク滞留(深さ) → ディスパッチが追いついていないサイン
  • 滞留が増える → 同時実行数・ディスパッチレートの上限やワーカー側のレイテンシ/エラーを疑う
  • 失敗が続く → ターゲット URL・認証(トークン)・ペイロード形式・ワーカーの 5xx を確認
  • 緊急時は キューの一時停止/パージ(全削除) で流れを止めたり溜まったタスクを破棄できる
  • 再試行の打ち切り(最大試行回数・最大経過時間到達)はログで追えるようにし、取りこぼしを検知する

コスト

月の最初の 100 万回の課金対象操作は無料で、以後は 50 億回まで 100 万回あたり 0.40 USDです。API 呼び出しと配信試行は課金対象で、ペイロードは 32 KB 単位に切り上げられるため、失敗の連鎖と大きな本文を避けます。

コスト要素課金の考え方節約のポイント
タスク操作月100万回まで無料、以後100万回ごとに0.40 USD無駄なタスク生成を減らし本文を小さくする
再試行再試行も操作として加算されうるワーカーの冪等性と原因対処で再試行を抑える
ターゲット側の実行Cloud Run など呼び出し先の料金が別途発生処理を短く保ち呼び出し先のコストを抑える
保持・滞留溜め込み自体より操作数が中心滞留を放置せず流量設定を見直す

セキュリティ

  • IAM でキュー単位の権限を制御する(タスクの作成権限・キュー管理権限などを分離)。最小権限を徹底
  • HTTP ターゲットへの配信には サービスアカウントを使った OIDC / OAuth トークンを付与し、ワーカー側で発行元を検証する
  • ワーカーのエンドポイントは 認証必須にし、誰でも叩ける公開 URL にしない
  • URL 仕様上は HTTP も指定できるため、運用ポリシーで TLS(HTTPS)を必須化する。ペイロードに秘密情報を平文で入れない
  • VPC Service Controls で境界を作り、データ持ち出しを防ぐ
アンチパターン

ワーカーの URL を 認証なしの公開エンドポイント にすると、第三者が偽タスクを直接 POST できてしまいます。OIDC トークン認証を有効にし、受信側で発行元サービスアカウントを必ず検証してください。

Well-Architected の観点

  • 信頼性(Reliability): 自動再試行・指数バックオフ・キューによる緩衝で、一時障害やスパイクに強い非同期処理を組める。ワーカーを冪等にすることで「少なくとも 1 回」実行の重複も安全に吸収できる
  • 流量制御(ディスパッチレート・同時実行数)で ダウンストリームを過負荷から守る ことができ、システム全体の安定性に寄与する
  • 失敗タスクの再試行を任せられるため、呼び出し側に複雑なリトライ実装を持ち込まずに済む

試験で問われるポイント

頻出
  • Cloud Tasks は個々の HTTP タスクの非同期実行・再試行・流量制御。AWS の SQS に近い役割
  • Pub/Sub との違い: Pub/Sub は 1 対多の ファンアウト(同報) やストリーミング向き、Cloud Tasks は 個別タスクの実行制御・遅延実行 向き
  • Cloud Scheduler との違い: Scheduler は cron による定期実行、Cloud Tasks は 1 回かぎりのタスク(任意の遅延つき)
  • 配信は プッシュ型で、ワーカーが 2xx を返せば成功。それ以外は 再試行
  • 実行は 少なくとも 1 回。ワーカーは 冪等 に作るのが原則
  • 流量は ディスパッチレートと同時実行数の両方で制御し、外部 API のレート制限に合わせられる

関連サービス・比較

観点Cloud TasksPub/SubCloud Scheduler
主な用途個別タスクの非同期実行と再試行メッセージ同報とストリーミングcron による定期実行
配信方式プッシュ(HTTP ターゲットを呼ぶ)Pull / Push の両方指定先を時刻起動
流量制御レートと同時実行数をキュー単位で制御サブスクライバー側のペーススケジュールのみ
遅延・予約scheduleTime で1回だけ遅延実行原則すぐ配信繰り返しスケジュール
再試行キュー設定で指数バックオフackDeadline と再配信ジョブ単位の再試行
AWS 相当SQS(に近い)SNS と SQS の両面EventBridge Scheduler
使い分けの目安

1 件ずつ確実に実行・再試行したい なら Cloud Tasks、1 イベントを多数へ同報 したいなら Pub/Sub、毎日や毎時に定期起動 したいなら Cloud Scheduler。Scheduler から Cloud Tasks や Pub/Sub を起点にする組み合わせもよく使われます。

ハンズオン / CLI例

# キューを作成(ディスパッチレートと同時実行数で流量を制御)
gcloud tasks queues create jobs-queue \
  --location=asia-northeast1 \
  --max-dispatches-per-second=5 \
  --max-concurrent-dispatches=10 \
  --max-attempts=5

# HTTP ターゲットへタスクを作成(OIDC 認証付き)
gcloud tasks create-http-task \
  --location=asia-northeast1 \
  --queue=jobs-queue \
  --url=https://worker-xxxx.a.run.app/process \
  --method=POST \
  --body-content='{"id":"job-1"}' \
  --oidc-service-account-email=tasks-invoker@PROJECT_ID.iam.gserviceaccount.com

# 指定した絶対時刻(UTC, RFC3339)に1回だけ実行する遅延タスク
gcloud tasks create-http-task \
  --location=asia-northeast1 \
  --queue=jobs-queue \
  --url=https://worker-xxxx.a.run.app/notify \
  --schedule-time="2026-06-14T12:00:00Z"

# 過負荷時はキューを一時停止し、復旧後に再開
gcloud tasks queues pause jobs-queue --location=asia-northeast1
gcloud tasks queues resume jobs-queue --location=asia-northeast1

# キューの状態と設定を確認
gcloud tasks queues describe jobs-queue --location=asia-northeast1

Google Cloud Service

Cloud Tasksを実務で読む

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

解決すること

アプリ統合

比較で見る軸

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

導入後に効く点

1キューは最大毎秒500件、タスクは1MiBまで。

先に潰すリスク

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

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

判断チェックリスト

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

次に確認する観点

アプリ統合reliability