TL

Cloud Service

Eventarc

Google Cloud のイベントを CloudEvents 形式で受け取り、Cloud Run などへルーティングするマネージドなイベント配信基盤。AWS の Amazon EventBridge に相当。

中級運用上の優秀性信頼性セキュリティ
最終更新: 2026-06-03公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.Google Cloud のイベントを宛先へ自動で届ける配信ハブ。
  • 2.監査ログ等を CloudEvents に整え Cloud Run などへルーティング。
  • 3.配信は最低1回で重複しうるため宛先は冪等に設計する。

解決する課題

サービス間を直接呼び合う密結合をやめ、「イベントが起きたら処理する」形で連携できます。

  • 「S が起きたら T を実行」を 疎結合に組みたい
  • Cloud Storage へのアップロードや BigQuery のジョブ完了など、多数のソースのイベントを宛先へ振り分けたい
  • 各サービスごとにバラバラなイベント形式を CloudEvents という統一フォーマットで受け取りたい
  • イベント受信側を Cloud Run でサーバーレスに保ち、インフラ管理を避けたい

主要概念と用語

  • トリガー(Trigger): 「どのイベントを」「どの宛先へ」送るかを定義する中心リソース。イベントフィルタと送信先をひも付ける
  • イベントプロバイダ / イベントタイプ: イベントの発生元と種類。google.cloud.storage.object.v1.finalized(オブジェクト作成)のように type で識別する
  • 3 つのソース種別:
    • Cloud Audit Logs 経由: 90 以上の Google Cloud サービスの操作を監査ログ経由で捕捉(serviceNamemethodName でフィルタ)
    • Pub/Sub 経由: 既存の Pub/Sub トピックに届いたメッセージをトリガーに
    • 直接イベント: Cloud Storage など一部プロバイダからの直接配信
  • イベント宛先(送信先): Cloud Run サービス / Cloud Run functions / GKE のサービス / Workflows
  • CloudEvents: CNCF 標準のイベント記述フォーマット。HTTP POST の本文+ヘッダーとして宛先に届く
  • Eventarc Advanced(バス/パイプライン/登録): 中央集権の バス にイベントを集め、パイプラインで変換・宛先振り分けを行う上位機能

仕様・制限・クォータ

  • 配信は at-least-once(最低 1 回)。同一イベントが複数回届きうるため、宛先は 冪等(idempotent) に設計する
  • 内部的に Pub/Sub を配送基盤として利用し、リトライや指数バックオフが効く
  • Cloud Audit Logs 経由のトリガーは、対象サービスで データアクセス監査ログ(特に管理読み取り/データ読み取り/データ書き込み)の有効化が必要なものがある
  • トリガーは原則 単一リージョン、または global(一部プロバイダ)に作成する。宛先と同一リージョン推奨
  • プロジェクト/リージョンあたりのトリガー数などに 割り当て(クォータ) があり、引き上げ申請が可能
  • イベント本文の最大サイズは Pub/Sub のメッセージ上限(10 MB)に準じる

内部の仕組み

イベントプロバイダで事象が発生すると、Eventarc はそれを CloudEvents 形式に変換し、配送基盤である Pub/Sub を介して宛先へ HTTP POST で届けます。Cloud Audit Logs ソースの場合は、サービスの操作が監査ログに記録 → Eventarc がログをフィルタ条件と突き合わせ → 一致したものだけをトリガーの宛先へ転送する、という流れです。

  • 宛先が Cloud Run の場合、イベントは push 配信で HTTP リクエストとして到達する。Ce-Type などの Ce- プレフィックスのヘッダーにメタデータが入る
  • 配送に失敗した場合は Pub/Sub のリトライ機構で再送され、デッドレタートピックへ退避することもできる
Pub/Sub との違い

Pub/Sub=汎用の高スループットなメッセージング基盤Eventarc=Google Cloud のイベントを CloudEvents 標準で受け取り、フィルタして宛先へ届ける上位レイヤー。Eventarc は内部で Pub/Sub を使いますが、監査ログ連携・標準フォーマット化・トリガー管理を担う点が異なります。

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

  • イベント駆動のマイクロサービス連携: Cloud Storage 取り込み → Eventarc → Cloud Run で後続処理、のように疎結合化する
  • 冪等な宛先設計: at-least-once のため、イベント ID(id 属性)で重複排除し、二重処理を防ぐ
  • フィルタは具体的に: methodName やリソース属性で絞り込み、不要なイベントの受信・課金・誤起動を避ける
  • デッドレターと再試行ポリシーを設定し、宛先障害時にイベントを失わない
  • 複雑なルーティングや変換が必要なら Eventarc Advanced のバス+パイプラインでメッセージ変換・条件分岐を集中管理する

運用・監視・トラブルシュート

  • Cloud Monitoring / Cloud Logging でトリガーの配信状況・エラーを監視する
  • トリガーが発火しない → イベントフィルタ(type / serviceName / methodName)と、必要な 監査ログが有効かを確認
  • イベントが宛先に届かない → 宛先サービスの 権限(トリガー用サービスアカウントの呼び出し権限)と リージョン整合を確認
  • 監査ログ経由は数十秒〜の遅延が生じうる点を考慮する(ニアリアルタイム)
  • 重複到達が疑われる場合は宛先の冪等性とイベント id の扱いを点検する

コスト

Eventarc 自体は配信したイベント数に応じた料金体系で、配送基盤として使う Pub/Sub の利用分も加味して考えます。

費用要素課金の考え方コスト最適化のポイント
Eventarc の配信イベント標準(Standard)はイベント配信に対し月次の無料枠後に従量課金フィルタで不要イベントを送らない
配送基盤の Pub/Subメッセージ取り込み・配信のデータ量で課金ペイロードを小さく保つ
宛先の実行(例: Cloud Run)リクエスト数・実行時間で別途課金処理を軽量化し冪等にして再実行を減らす
Eventarc Advancedバス経由のイベント量に応じた課金本当に集中管理が必要な範囲に限定する

セキュリティ

  • トリガーには サービスアカウントを割り当て、最小権限の IAM ロール(例: roles/eventarc.eventReceiver)のみ付与する
  • 宛先が Cloud Run の場合、トリガー用サービスアカウントに roles/run.invoker を与え、認証付きで呼び出す
  • Cloud Audit Logs 経由を使うには、対象サービスでデータアクセス監査ログを有効化する(権限と監査の両立に注意)
  • イベントは Google Cloud 内で 転送時に暗号化され、必要に応じて CMEK(顧客管理鍵) で保護できる
アンチパターン

トリガーや宛先に過大な権限(例: プロジェクトの編集者ロール)を付けるのは NG。Eventarc 専用のサービスアカウントを用意し、eventarc.eventReceiver と宛先の run.invoker など必要最小限のロールだけを付与してください。広い権限はイベント経路を侵害された際の被害を拡大させます。

関連サービス・比較(AWS との対応)

観点Eventarc(GCP)Amazon EventBridge(AWS)
位置づけGoogle Cloud のイベント配信ハブAWS のイベントバス
イベント形式CloudEvents(CNCF 標準)独自 JSON(detail-type / source など)
主要ソースCloud Audit Logs / Pub/Sub / 直接(Storage 等)AWS サービス / SaaS パートナー / カスタム
主な宛先Cloud Run / GKE / WorkflowsLambda / SQS / Step Functions / API 等
フィルタtype / serviceName / methodName で一致イベントパターン(内容ベース)
配送基盤内部で Pub/Sub を利用EventBridge 独自基盤
定期実行(cron)Cloud Scheduler が担当EventBridge Scheduler が内包
cron は別サービス

EventBridge が Scheduler で定期実行(cron)も担うのに対し、Google Cloud では定期実行は Cloud Schedulerが担当します。Eventarc は「イベント発生 → 配信」に専念する役割分担です。

ハンズオン / CLI例

# 宛先となる Cloud Run サービスを先にデプロイしておく前提

# Cloud Storage バケットへのオブジェクト作成イベントを
# Cloud Run サービス(my-service)へ送るトリガーを作成
gcloud eventarc triggers create storage-trigger \
  --location=asia-northeast1 \
  --destination-run-service=my-service \
  --destination-run-region=asia-northeast1 \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=my-input-bucket" \
  --service-account=eventarc-sa@PROJECT_ID.iam.gserviceaccount.com

# Cloud Audit Logs 経由: BigQuery のジョブ実行をトリガーにする例
gcloud eventarc triggers create bq-job-trigger \
  --location=asia-northeast1 \
  --destination-run-service=my-service \
  --destination-run-region=asia-northeast1 \
  --event-filters="type=google.cloud.audit.log.v1.written" \
  --event-filters="serviceName=bigquery.googleapis.com" \
  --event-filters="methodName=jobservice.jobcompleted" \
  --service-account=eventarc-sa@PROJECT_ID.iam.gserviceaccount.com

# 作成済みトリガーの一覧と詳細確認
gcloud eventarc triggers list --location=asia-northeast1
gcloud eventarc triggers describe storage-trigger --location=asia-northeast1

Google Cloud Service

Eventarcを実務で読む

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

解決すること

アプリ統合

比較で見る軸

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

導入後に効く点

監査ログ等を CloudEvents に整え Cloud Run などへルーティング。

先に潰すリスク

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

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

判断チェックリスト

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

次に確認する観点

アプリ統合operationalreliabilitysecurity

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。