マイクロサービスアーキテクチャで、「注文サービス」が `order.created` と `order.cancelled` の2種類のイベントを発行します。`order.created` はLambdaで在庫更新処理を行い、`order.cancelled` はSQSキューに送信して非同期の払い戻し処理を行う必要があります。発行元コードを変更せずに、追加実装を最小限にしてこのルーティングを実現する最適な方法はどれですか?
Amazon EventBridgeはイベント駆動アーキテクチャの中核サービスで、`detail-type` や `source` フィールドによるイベントパターンマッチングで複数ターゲット(Lambda・SQS・SNS・Step Functionsなど)へのルーティングをコードなしで実現します。カスタムイベントバスにルールを2つ定義するだけで、発行元への変更は不要です。 選択肢Bの(SNS)のサブスクリプションフィルタでも実現可能ですが、両サービスへの配信となるためSQSに不要なメッセージが届き、Lambda側の破棄ロジックが必要になります。 選択肢Cの(API Gateway)はリクエストルーティング機能ですが、イベントベースのルーティングには適していません。 選択肢Dの(Amazon EventBridge)はターゲットにLambdaを設定できますが、Lambda内での条件判定が必要で手動ルーティングになります。