Cloud Service
Amazon EventBridge Pipes
ソースとターゲットを1対1で直結し、間にフィルタ・変換・エンリッチを差し込む point-to-point 連携。SQS や Kinesis などのイベントを、Lambda を自前で書かずにターゲットへ橋渡しする Amazon EventBridge Pipes。
- 1.ソースとターゲットを1対1でつなぐ専用パイプ。グルーコードを減らせる。
- 2.フィルタ・変換・エンリッチの4段階を組み込みで挟める。
- 3.SQS・Kinesis・DynamoDB Streams などをポーリングなしで橋渡しする。
解決する課題
- 「SQS から取り出して加工してから別サービスへ渡す」ような連携を、Lambda のグルーコードを書かずに組みたい
- ストリームやキューを自前でポーリングするコードの運用負担を減らしたい
- 不要なイベントを早い段階でフィルタし、下流の処理量とコストを抑えたい
- 取り出したイベントに**別データを付け足して(エンリッチ)**からターゲットへ届けたい
主要概念と用語
- パイプ: ソースとターゲットを1対1でつなぐ単位。1本のパイプに1つのソースと1つのターゲットを定義する
- ソース: イベントの取り込み元。SQS・Kinesis Data Streams・DynamoDB Streams・Amazon MQ・Managed Streaming for Kafka(MSK)・セルフマネージドな Kafka など
- フィルタ: 取り込んだイベントのうち、パターンに一致したものだけを通す段階。EventBridge のイベントパターンと同じ書式
- エンリッチ: ターゲットへ渡す前にイベントへ情報を付け足す段階。Lambda・Step Functions・API Gateway・API Destinations を呼べる
- ターゲット: 最終的な届け先。Lambda・Step Functions・SNS・SQS・EventBridge バス・API Destinations など多数
- ターゲット入力トランスフォーマー: ターゲットへ渡すペイロードの形を整える変換テンプレート
- バッチ: ストリーム/キュー系ソースを複数件まとめて取り込み・処理する単位
仕様・制限・クォータ
- 1本のパイプは 1ソース対1ターゲットの point-to-point 構成で、ファンアウト(1対多)はしない
- 処理は フィルタ→エンリッチ→ターゲットの固定パイプラインで、フィルタとエンリッチは任意、ターゲットは必須
- ソースには**ポーリング型(SQS・Kinesis・DynamoDB Streams・Kafka・MQ)**を選べ、Pipes 側がポーリングを肩代わりする
- ストリーム系ソースではバッチサイズやバッチウィンドウ、並列度などを調整できる
- フィルタを通過しなかったイベントは下流へ渡らず、エンリッチやターゲットの呼び出し対象にもならない
- 失敗時のリトライと、処理しきれないレコードを退避する **DLQ(デッドレターキュー)**を設定できる
EventBridge バスは内容で多数のターゲットへ振り分ける同報寄りの仕組みですが、Pipes は1対1の直結に特化し、間にフィルタ・エンリッチ・変換を挟める点が異なります。両者は組み合わせられ、Pipes のターゲットに EventBridge バスを指定する構成もよく使われます。
内部の仕組み
パイプを作成すると、Pipes はソースの種類に応じて取り込みを行います。SQS や Kinesis、DynamoDB Streams、Kafka のようなポーリング型ソースでは、Pipes 側がポーリングを肩代わりするため、利用者がポーラーを書いて運用する必要がありません。取り込んだイベントはまずフィルタで評価され、パターンに一致したものだけが次へ進みます。続くエンリッチ段階では、必要に応じて Lambda や Step Functions、API を呼び出し、その応答でイベントを加工・補完します。最後にターゲット入力トランスフォーマーで形を整えてからターゲットを呼び出します。各段階は実行ロールを引き受けて他サービスの API を呼ぶため、権限は IAM ロールで与えます。失敗したレコードは設定に従ってリトライされ、それでも処理できないものは DLQ へ送られます。
設計パターン / ベストプラクティス
- グルーコードの置き換え: 「キューから取り出して整形して別サービスへ渡す」だけの Lambda を、フィルタとトランスフォーマーで置き換えて運用対象を減らす
- 早期フィルタでコスト削減: 不要なイベントはフィルタ段階で落とし、エンリッチやターゲットの呼び出し回数そのものを減らす
- エンリッチで参照データを付与: ターゲットが必要とする付加情報を、エンリッチ段階の Lambda や API でまとめて取得して渡す
- ストリームの橋渡し: DynamoDB Streams や Kinesis のイベントを Step Functions や EventBridge バスへつなぎ、変更データを後続処理へ流す
- 段階ごとの責務分離: フィルタ・変換は Pipes に任せ、ビジネスロジックはターゲット側に寄せて見通しを良くする
エンリッチで同期的に外部 API や Lambda を呼ぶと、その遅延がパイプ全体のスループットに直結します。重い処理はエンリッチに詰め込まず、ターゲット側で非同期に処理する設計を検討してください。
運用・監視
- パイプの稼働状況や失敗は CloudWatch メトリクスで監視する(実行数・失敗数・処理遅延など)
- イベントがターゲットへ届かない場合は、まずフィルタのパターンで落とされていないかを確認する
- ターゲットは呼ばれるのに失敗する場合は、実行ロールの権限とターゲット側の入力フォーマットを確認する
- 処理しきれなかったレコードは DLQ に残るので、ここを定期的に確認して取りこぼしを検知する
- ストリーム系ソースでスループットが不足する場合は、バッチサイズや並列度を調整する
コスト
- 主にパイプが処理したイベント数に応じた課金で、フィルタで落としたイベントは課金対象にならない設計
- 自前のポーラーや単純なグルー Lambda を持たずに済むため、その運用・実行コストを削減できる
- エンリッチで呼び出す Lambda や API、ターゲットの実行費用はそれぞれのサービス側で別途発生する
- 具体的な単価や課金単位は変動しうるため、最新の料金ページで確認する
セキュリティ
- パイプがソース取得・エンリッチ・ターゲット呼び出しに使う権限は実行ロール(IAM ロール)で与え、各段階に必要なアクションだけに最小権限で絞る
- ソースやターゲットが別アカウントにある構成も組めるため、クロスアカウントの権限設計を明確にする
- イベントに機微なデータが含まれる場合は、ログ出力やエンリッチ先での扱いに注意し、必要に応じて暗号化や Secrets Manager 経由の取得を検討する
- KMS による暗号化を組み合わせ、保管・伝送中のデータ保護を行える
関連サービス・比較
| 観点 | EventBridge Pipes | EventBridge バス |
|---|---|---|
| 接続形態 | 1対1の直結 | 内容で多数へ振り分け |
| 途中処理 | フィルタ・エンリッチ・変換 | パターン照合のみ |
| ソース取得 | ポーリングを肩代わり | 到着イベントを受信 |
| 主な用途 | グルーコードの置き換え | イベント駆動の同報連携 |
ハンズオン / CLI例
# SQSキューをソースに、フィルタを通したイベントをStep Functionsへ渡すパイプ
aws pipes create-pipe --name order-pipe \
--role-arn "arn:aws:iam::123456789012:role/PipeExecutionRole" \
--source "arn:aws:sqs:ap-northeast-1:123456789012:orders" \
--source-parameters '{
"FilterCriteria": {
"Filters": [
{"Pattern": "{\"body\":{\"status\":[\"PAID\"]}}"}
]
}
}' \
--target "arn:aws:states:ap-northeast-1:123456789012:stateMachine:FulfillOrder" \
--target-parameters '{
"StepFunctionStateMachineParameters": {"InvocationType": "FIRE_AND_FORGET"}
}'
# 作成したパイプの状態を確認
aws pipes describe-pipe --name order-pipe
AWS Service
Amazon EventBridge Pipesを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
アプリ統合
比較で見る軸
クラウド: AWS / カテゴリ: アプリ統合 / 難易度: intermediate
導入後に効く点
フィルタ・変換・エンリッチの4段階を組み込みで挟める。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- アプリ統合
- 難易度
- intermediate
- 関連資格
- SAA-C03 / DVA-C02 / DEA-C01
- 設計柱
- operational / reliability / cost
判断チェックリスト
- 自社の用途が「アプリ統合 / operational」に近いか確認する。
- 強みである「ソースとターゲットを1対1でつなぐ専用パイプ。グルーコードを減らせる。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。