EventBridge Pipesとは?Event Busとの違い・使い分け、それぞれのメリト・デメリット
EventBridge Pipesとは?Event Busとの違い・使い分け、それぞれのメリット・デメリット
この記事では、AWS EventBridge Pipes の基本から、Event Bus との違い、使い分け方、メリット・デメリットまでを整理して紹介します。運用の実務で迷いがちな「どちらを使うべきか」「併用するならどう設計するか」まで踏み込みます。
EventBridge Pipesの具体的な設定方法が知りたい場合は、「【実践編】EventBridge Pipesを設定してみよう」の記事をご参照ください。
🎯 この記事でわかること
- EventBridge Pipes の特徴
- Event Bus との違いと役割
- メリット・デメリット
- どちらを選ぶべきかの判断基準
- Pipes × Event Bus の組み合わせ例
🧩 EventBridge Pipesとは?
EventBridge Pipes は、イベントソースとターゲットを結ぶ「パイプライン」を構築するサービスです。
「入力 → フィルタ → 変換 → 出力」をノーコードでつなげるイメージ。
特徴は以下の4つ:
- ソースのポーリング(SQS / DynamoDB Streams / Kinesis 等)
- イベントのフィルタリング
- Input Transformer による JSON 変換
- ターゲットへのイベント送信
Lambda でやっていた軽微な整形やポーリング処理を肩代わりできます。
また、必要なら「Enrichment(Lambda / Step Functions)」で補助的な処理を挟むことも可能です。
🚉 Event Bus とは?
Event Bus は イベントの配信ハブ です。
- アプリや SaaS(Auth0, Shopify 等)からイベントを受信
- ルールにより複数ターゲットへファンアウト
- Archive & Replay
- スキーマレジストリによるイベント管理
多対多のイベント配信に向いています。
EventBridge のルールによりフィルタリングや Input Transformer も可能ですが、Pipes ほど「前処理」に最適化されているわけではありません。複雑な整形や外部呼び出しは Lambda 等のターゲット側で行うのが基本です。
🔍 Pipes と Event Bus の違いまとめ
| 項目 | Event Bus | EventBridge Pipes |
|---|---|---|
| 役割 | イベント配信ハブ | イベント前処理&単一ルート連携 |
| 用途 | マイクロサービス連携 / SaaS連携 | SQS → Step Functions 等 |
| ソース | アプリ / SaaS / 他Bus | SQS / Kinesis / DynamoDB Streams |
| ターゲット | 複数(ファンアウト) | 基本1つ |
| ポーリング | ❌ | ⭕ |
| Input Transformer | ルール単位で可能 | 「前処理」に最適化 |
| Archive/Replay | あり | なし |
👍 EventBridge Pipes のメリット
1. Lambda を書かずに済む
- コードメンテ不要
- ランタイムアップデート不要
- 障害ポイントが減る
2. ポーリングを完全自動化
SQS や Streams を Lambda でポーリングする設計が不要に。
3. 軽微な JSON 変換が得意
Input Transformer でマッピングや整形が簡単。
4. 運用がシンプル
設定は GUI/CLI のみ。Lambda のデプロイやランタイム更新から解放されます。
4. コスト削減
Lambda の実行コストを削減できるケースが多い。
👎 EventBridge Pipes のデメリット
1. 複雑なロジックが書けない
条件分岐・計算・外部APIなどは対応不可。
2. デバッグがやや難しい
GUI 設定のため、ログ printf デバッグのような柔軟さは少ない。
3. 将来の仕様変更に弱い
最初は簡単でも、変換が複雑化すると Pipes では限界が来る。
4. 監視ポイントが分散しやすい
Pipes、ソース、ターゲットそれぞれのメトリクスを横断して追う必要があります。
CloudWatch Logs や DLQ を併用し、失敗イベントの追跡設計を先に決めておくと安心です。
🏗 Event Bus のメリット
- 複数ターゲットへファンアウト可能
- SaaS 連携が強力
- スキーマレジストリでイベント定義管理
- Archive & Replay に対応
⚠ Event Bus のデメリット
- ポーリングはできない
- 軽微な整形以外は Lambda 必須
- ソースが限られる(SQS や Streams は不可)
🧭 代表的なユースケース
| 目的 | 選ぶべき | 補足 |
|---|---|---|
| SQS → Step Functions の中継 | Pipes | 変換やフィルタが必要なら最適 |
| SaaS イベントを複数サービスへ配信 | Event Bus | ルールでファンアウト |
| Streams のイベントを整形して配信 | Pipes → Event Bus | 併用で構成がスッキリ |
| 監査ログを一定期間保管&再実行 | Event Bus | Archive/Replay を活用 |
| 単一ターゲットへの軽い前処理 | Pipes | Lambda を減らせる |
🎯 使い分けガイド
✔ Pipes を使うべきケース
- SQS / Streams の連携が中心
- 単純なフィルタ・整形で十分
- Lambda の削減・コスト最適化が目的
- 単一ターゲットへ渡すだけ
✔ Event Bus を使うべきケース
- 複数サービスへイベント配信したい
- SaaS からイベントを受け取りたい
- イベント基盤を構築したい
- Archive & Replay を使いたい
🧪 Pipes × Event Bus の併用例
DynamoDB Streams → Pipes(整形) → Event Bus → 複数サービスへ配信
ストリーム処理は Pipes、配信は Bus に任せるベストプラクティス構成です。
✅ 迷ったときの判断基準(ざっくり版)
- 「単一ルート&前処理」が主目的なら Pipes
- 「複数配信&イベント基盤」を作りたいなら Event Bus
- 両方必要なら Pipes で整形してから Bus に渡すのが無難
📝 まとめ
- Pipes と Event Bus は役割が違う
- Pipes=単一ルートの前処理パイプライン
- Event Bus=イベント配信ハブ
- 適材適所で組み合わせると強力
Discussion