Amazon EventBridge
Amazon EventBridge
目次

Amazon EventBridge完全ガイド:イベント駆動アーキテクチャを「ルール」「再生」「外部API連携」で育てる、GCP Eventarc・Azure Event Grid比較つき

はじめに:この1本で“イベント”の設計判断が迷いにくくなります

システムが大きくなるほど、サービス同士のつながり方は「直接呼び出し(同期)」だけでは苦しくなります。片方が遅い・落ちる・メンテナンス中、そんな状況が増えるほど、全体の連鎖障害が起きやすくなるからです。そこで登場するのがイベント駆動(Event-Driven)という考え方で、「何が起きたか(イベント)」を中心に、必要な相手だけが後から反応する仕組みに寄せていきます。Amazon EventBridgeは、その“イベントの交通整理役”として、イベントバス・ルール・ターゲットというシンプルな部品で、ルーティングとフィルタリングを担うサービスです。

この記事は、EventBridgeを「通知の配線」ではなく、運用や変更に強いアーキテクチャへ育てるための設計ガイドです。特に、イベントの再生(Archive/Replay)や、外部HTTP APIへ直接届けるAPI送信先(API Destinations)、そしてソース→フィルタ→エンリッチ→ターゲットを一本の“パイプ”で整えるEventBridge Pipesまで含めて、実務で迷いやすい点を丁寧に言語化します。

また、同カテゴリとして比較されやすいGCPのEventarc、AzureのEvent Gridも並べます。EventarcはイベントをCloudEvents形式で届けることが明記されており、Event Gridはフルマネージドなpub/sub型の配信サービスとして位置づけられ、デッドレターやリトライの設計も公式ドキュメントで整理されています。


この記事が役に立つ方:こんな“困りごと”があるなら相性が良いです

まず、バックエンド開発者のみなさま。マイクロサービスが増え、「注文確定の後に請求、在庫、メール、ポイント…」のように連携が増えてくると、同期APIでの直列呼び出しは遅く、壊れやすくなりがちです。EventBridgeでイベントを中心に組み替えると、送信側は「起きたことを投げる」だけに寄せられ、受信側は「必要なものだけ拾う」構造になり、変更が入っても影響範囲が限定されやすくなります。

次に、SRE/運用担当の方。障害が起きたとき「イベントが流れたか」「どこで詰まったか」「あとから検証できるか」は復旧速度を左右します。EventBridgeにはイベントを保存して後から再生する仕組みがあり、復旧・検証・巻き戻しの設計に“運用の逃げ道”を作れます。

そして、マルチクラウドや将来移行を考えるアーキテクトの方。GCPのEventarc(CloudEvents配信)やAzure Event Grid(デッドレター、リトライ設計)と並べて理解しておくと、イベント駆動の共通語彙(イベント形式、フィルタ、配信保証、失敗時の扱い)が揃い、クラウドが変わっても判断がぶれにくくなります。


1. Amazon EventBridgeとは:イベントバスで“ルール駆動の配信”をするサービス

EventBridgeの基本はとても整理されています。イベント(出来事)がイベントバスに届き、ルールがそのイベントをパターンで照合し、マッチしたものだけをターゲットへ送る、という流れです。EventBridgeの概念説明では、ソース・ルール・ターゲットの関係が中心に据えられており、イベントバスごとにルール数の上限があること、必要なら追加のイベントバスを作ることで拡張できることも説明されています。

ここで大切なのは、EventBridgeが“メッセージキュー”ではなく、“イベントのルーティング”に強い設計だという点です。キューは基本的に「誰か1人が処理する」形を取りやすい一方、EventBridgeは「条件に合う相手に分岐させる」ことが得意です。つまり、送信側が受信者を知らなくてもよい構造を作りやすく、サービス追加や仕様変更に強くなります。

さらにEventBridgeは、ターゲットとして複数のAWSリソースやエンドポイントを選べます。ターゲットの説明では、ルールに一致したイベントをターゲットへ送るために必要な権限があること、そしてルールあたり最大5ターゲットまで指定できることが明記されています。


2. まず押さえる3要素:イベントバス・ルール・ターゲット

EventBridge設計で迷ったら、最初はこの3つに戻ると考えが整理できます。

2-1. イベントバス:境界線を作る器

イベントバスは、イベントが集まる場所であり、同時に「権限や責任の境界」を作る器です。プロジェクトや環境(prod/stg/dev)、用途(業務イベント、監査系、外部連携)ごとにバスを分けると、ルールの爆発や権限の混線が起きにくくなります。バスごとのルール上限(標準で最大300ルール、引き上げ可能)があることも踏まえると、最初から“増える未来”に備えた分割は現実的です。

2-2. ルール:フィルタリングとルーティングの中心

ルールは「どんなイベントを」「どこへ送るか」を決める心臓部です。イベントパターンで一致判定し、必要なら入力変換(Input transformer)でイベントの形を整えてからターゲットに渡します。EventBridgeのイベントパターンは、メタデータやdetail内の値に対して条件を指定する形で、Pipesでも同じ考え方のフィルタリングが使えると説明されています。

2023年にはワイルドカードを使ったフィルタ柔軟化についても公式ブログで解説されており、ルール管理の複雑さを下げる方向で進化している点も押さえておくと、運用の見通しがよくなります。

2-3. ターゲット:届け先はAWS内外に広がる

EventBridgeのターゲットはAWSリソースだけでなく、外部HTTPエンドポイント(API送信先)も扱えます。ターゲットの説明では、API destinationsはHTTPSエンドポイントをルールのターゲットとして呼び出せる、と明記されています。

ここは実務でとても大きくて、「外部SaaSに通知したい」「社内のWebhookに届けたい」などを、余計な中継サービスを増やさず実現できる可能性が出てきます(もちろん認証や再試行などの要件整理は必要です)。


3. イベントパターン設計:まずは“細かくしすぎない”がコツです

イベント駆動で最初に起きやすい失敗は、「ルールを細かくしすぎて運用が破綻する」ことです。イベントパターンは便利なぶん、条件を盛り込みすぎると「どれがどこに飛ぶか」が把握しづらくなります。最初の設計は、次の順番で育てるのが安全です。

  1. まず“イベント種別”で分ける
    例:detail-type = OrderCreatedOrderCancelled のように、何が起きたかで分ける。
  2. 次に“発生源”で分ける
    例:source = com.mycompany.orders のように、発行元の境界を作る。
  3. それでも足りないときだけ“detail内の条件”へ進む
    例:detail.regiondetail.plan のように業務条件で枝分かれ。

この育て方にすると、ルールを追う人が変わっても理解しやすく、イベントが増えても事故が起きにくいです。イベントパターンはEventBridgeのバスだけでなくPipesでも同様に使える、という整理もあるので、パターンを共通の設計資産にできます。

サンプル:イベント(例)

以下は“注文作成”のイベント例です。実際のプロダクトでは、ここにスキーマバージョンやテナント識別子などを入れておくと後から効きます。

  • source: 発行元の論理名
  • detail-type: 何が起きたか
  • detail: 業務データ(必要最小限)

サンプル:イベントパターン(例)

  • sourcecom.mycompany.orders
  • detail-typeOrderCreated
  • detail.currencyJPY

この程度から始め、必要になったらワイルドカード等で柔軟化するのが、運用として落ち着きやすいです。


4. スキーマ管理:Schema Registryで“イベントをAPIのように”扱う

イベント駆動が成熟してくると、次に問題になるのが「イベントの形が揺れて事故る」ことです。送信側が少し項目名を変えただけで、受信側が壊れてしまう。これを防ぐには、イベントのスキーマを資産として管理する必要があります。EventBridgeにはスキーマレジストリがあり、スキーマを論理的なグループに集約して整理できる、と説明されています。

スキーマ管理を入れると、イベントは“なんとなくのJSON”から“契約(Contract)”に変わります。契約があると、受信側は安心して実装でき、送信側も互換性を意識した変更がしやすくなります。結果として、イベント駆動の「速く変えられる」が、本当に成立するようになります。


5. Archive/Replay:イベントを“再生できるログ”にして復旧と検証を楽にする

EventBridgeのとても強い特徴のひとつが、イベントのアーカイブと再生です。公式ドキュメントでは、イベントをアーカイブして後で再生(元のイベントバスへ再送)でき、エラー回復や新機能検証に使える、と説明されています。保持期間も設定でき、デフォルトでは無期限保存であること、アーカイブは単一のソースイベントバスに紐づくことなど、運用上の前提も明記されています。

実務での使いどころは、次の3つが特に効果的です。

  1. 障害復旧:下流が落ちていた時間帯のイベントを再生して追いつく
  2. 仕様変更の検証:新しいコンシューマーを作ったとき、過去イベントでリグレッション確認する
  3. 監査的な振り返り:重要イベントが「確かに流れた」ことを後から再確認する

さらに、リプレイには時間枠を定義でき、リプレイイベントにreplay-nameが付くこと、また当時はアーカイブ元と同じイベントバスに対してのみ再生できる旨がブログで説明されています。こうした“挙動の細部”は、運用設計で効いてきます。


6. API Destinations:外部HTTP APIへ「EventBridgeから直接届ける」

外部連携は、イベント駆動の現場で必ず出てきます。従来は「一旦どこかの実行基盤で受けて、HTTP送信する」構成になりがちでしたが、EventBridgeのAPI送信先(API Destinations)は、HTTPSエンドポイントをルールまたはパイプのターゲットとして呼び出せる、と明確に説明されています。

日本語ドキュメントでは、接続(Connection)で認証方式や認証情報、ネットワーク接続を定義し、パブリック/プライベートの両方をサポートすること、またCONNECT/TRACE以外のHTTPメソッドが使えることなど、設計に必要な情報が整理されています。

この機能が効くのは、たとえば次のような場面です。

  • SaaS(チケット、CRM、チャットなど)にWebhookで通知したい
  • 社内の業務APIへ「重要イベントだけ」流したい
  • 監査基盤やセキュリティ基盤へリアルタイム連携したい

ただし、外部API連携は「相手が落ちる」前提で設計する必要があります。EventBridge単体で完結させるのか、どこかにバッファや再処理の仕組みを持たせるのかは、運用要件で決めましょう。ここは“便利だから直接送る”だけで終わらせず、失敗時の扱い(再試行、デッドレター、手動介入)を先に合意しておくのが大切です。


7. EventBridge Pipes:ソース→フィルタ→エンリッチ→ターゲットを1本で整える

イベント連携が増えてくると、よく起きるのが「接着剤コードだらけ問題」です。あちこちに小さな中継処理が増え、フィルタや前処理が分散し、どこで何をしているか分からなくなる。Pipesはそれを整理するための考え方で、公式ドキュメントでは、パイプを作るときにソースを選び、任意のフィルタ、任意のエンリッチメントを定義し、ターゲットを選ぶ、という流れが示されています。

エンリッチメントは「届いたイベントが軽すぎる」問題に効きます。例えばチケット作成イベントに詳細が入っていない場合、エンリッチで関数を呼んでget-ticket APIから詳細を取ってイベントを補完し、その上でターゲットへ送れる、という具体例が公式に書かれています。

この“前処理の標準化”は、イベント駆動を長く運用するほど価値が出ます。イベントを受け取る側が増えても、フィルタと整形が中央に寄るので、コンシューマーが薄くなり、保守が楽になります。


8. スケールと上限:先に“伸びるポイント”を把握しておくと安心です

イベント駆動は、うまくいくとイベント数が一気に増えます。だからこそ、上限(クォータ)の把握は早いほど安心です。EventBridgeにはイベントバスごとのルール数上限があり、引き上げも可能であることが説明されています。
また、EventBridgeのクォータにはリージョン別のスロットリング上限(例:invocationsのTPS制限)が一覧で示されており、リージョンによって値が違う点が明記されています。

運用としては、次の2つを“成長の指標”にしておくと、後からの見直しがしやすいです。

  • ルールが増えすぎていないか(イベントバスの分割やパターン整理が必要か)
  • リージョンのスロットリングに近づいていないか(アーキテクチャ分散や設計変更が必要か)

9. 料金の考え方:イベント数が“そのままコスト”になるので、設計で読みやすくできます

EventBridgeは利用量ベースの料金で、イベント発行、アーカイブ処理、ストレージ、リプレイなどの項目が例示されています。料金ページには、月200万イベント(平均6KB)の例で、発行$2、アーカイブ処理$1.14、ストレージ$0.26、リプレイ$2で合計$5.40という計算例が明示されています。

この“例が公式にある”のは実務的にありがたくて、次のようなコスト設計がしやすくなります。

  • まずイベント数(件数)を見積もる
  • 次にイベントサイズ(KB)を見積もる
  • アーカイブの保持期間(どれだけ残すか)を決める
  • リプレイは“発生頻度”で別枠にする(毎日なのか、障害時のみなのか)

つまり、料金を怖がるより「イベントの粒度をどう設計するか(不要に細かすぎないか)」「アーカイブをどの範囲で使うか」を決めることが、コスト管理の第一歩になります。


10. GCP Eventarc・Azure Event Gridとの比較:同じ“イベント配信”でも流儀が少し違います

10-1. GCP Eventarc:CloudEventsで統一し、トリガーで関心を宣言する

Eventarcは、トリガー(trigger)が「どのイベントに興味があるか」を宣言するもので、フィルタを指定してルーティングできる、と公式ドキュメントで説明されています。
特に重要なのは、EventarcがイベントをCloudEvents形式(binary content mode)で届ける、と明記されている点です。

このCloudEvents統一は、受け手(Cloud Runなど)がイベント処理を共通化しやすく、移植性の面でもメリットがあります。実際、EventarcがCloud Runへイベントを届ける流れや、Cloud Storageイベントをルーティングする例がドキュメントとして整備されています。
また、プロジェクト間ルーティングはPub/Subをクロスプロジェクト輸送層として使う、という説明もあり、マルチプロジェクト設計のときの前提が読み取れます。

10-2. Azure Event Grid:pub/subの配信サービスとして、デッドレターとリトライが強い

Azure Event Gridは「高スケーラブルでフルマネージドなpublish-subscribeサービス」として紹介され、イベント駆動アーキテクチャや統合に使える、と公式ドキュメントに整理されています。
実務でありがたいのは、失敗時の扱いがかなり明確にドキュメント化されている点です。Event Gridでは、デッドレター位置の設定やリトライ設定のカスタマイズ方法が説明され、配信と再試行の挙動については、最後の試行からデッドレターへの移送に5分遅延があること、デッドレター先が4時間利用できない場合はイベントがドロップされることなど、運用に必要な具体が書かれています。

つまりAzure側は、「失敗が起きたとき、どうなるか」を設計に組み込みやすいです。一方で、その“挙動の前提”を知らずに使うと、思わぬドロップに驚く可能性があるので、運用要件と合わせて早めに確認しておくのが安全です。

10-3. 比較の結論:選定は“イベント形式”“失敗時の作法”“統合先”で決まります

  • AWS EventBridge:イベントバスとルールで配信を組み、アーカイブ/リプレイやAPI送信先、Pipesで実務の面倒を減らしやすい
  • GCP Eventarc:CloudEventsで形式統一し、トリガーで関心を宣言するモデルが分かりやすい
  • Azure Event Grid:pub/sub配信としての運用挙動(リトライ、デッドレター)が具体的で、統合用途でも設計しやすい

どれが優れている、というより「自社が主戦場にする統合先」と「失敗時に何を保証したいか」で、最適解が変わります。


11. 設計チェックリスト:最初に決めておくと、イベント駆動が長持ちします

最後に、EventBridgeを導入するときに“最初の2週間”で決めておくと後が楽になる項目です。ここを合意しておくと、イベントが増えたときも破綻しにくいです。

  1. イベント命名規約
  • sourceはチーム/ドメイン単位、detail-typeは業務イベント名、schema_versionを入れるか、などを統一する。
  1. イベントの粒度
  • 「細かく分けすぎない」方針を最初に共有する(粒度が細かいほどルールと運用が増えます)。
  1. バスの分割方針
  • prod/stg/dev、外部連携、監査系などの境界を、バスで表現するかどうか。ルール上限(バスごとの上限)も前提にする。
  1. 失敗時の扱い
  • 再試行は誰が担うか(EventBridge側か、下流側か)
  • 再処理はアーカイブ/リプレイで行うか
  • 外部API連携はどこまでをEventBridgeで担うか(API Destinations利用方針)
  1. 運用の“検証手順”
  • 新ルール追加時は過去イベントで検証するか(アーカイブ活用)
  • 障害訓練でリプレイを試すか
  • 監査で何を提示するか(ログ、設定の履歴)

まとめ:EventBridgeは「配線」ではなく「変更に強いシステムの骨格」です

Amazon EventBridgeは、イベントバス・ルール・ターゲットという単純な部品で、イベント駆動アーキテクチャのルーティングを担うサービスです。イベントパターンで必要なものだけを届け、スキーマで契約を整え、アーカイブ/リプレイで復旧と検証を楽にし、API Destinationsで外部HTTP連携まで広げられます。さらにPipesで、フィルタやエンリッチを含む中継処理を整理し、接着剤コードを減らす方向へ持っていけます。

GCP EventarcはCloudEvents形式で配信されることが明記され、トリガーで関心を宣言するモデルが分かりやすく、Azure Event Gridはpub/sub配信としてデッドレターやリトライの挙動が具体的に整理されているため、失敗時の運用設計がしやすいです。

イベント駆動は、導入直後よりも“半年後”に差が出ます。最初のうちから、命名・粒度・境界・失敗時の作法を揃えておくと、イベントが増えても自然に運用できる形に育っていきます。焦らず、小さなドメインから、でも設計ルールは丁寧に。そう進めると、EventBridgeはとても頼れる「骨格」になってくれます。


参考リンク(公式ドキュメント中心)

投稿者 greeden

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)