イベントルールを使用してイベントをフィルターし、Message Service (MNS) のキューにルーティングします。この例では、カスタムイベントを使用して、Simple Message Queue (formerly MNS) へのイベントルーティング方法を説明します。
前提条件
-
EventBridge
-
Message Service (MNS)
ステップ 1:カスタムイベントソースの追加
- EventBridge コンソールにログインします。左側のナビゲーションウィンドウで [Event Buses] をクリックします。
- 上部のナビゲーションバーでリージョンを選択します。[Event Buses] ページで、対象のカスタムイベントバスをクリックします。
- 左側のナビゲーションウィンドウで [Event Sources] をクリックし、次に [Add Event Source] をクリックします。
-
カスタムイベントソースの追加 パネルで、Name と Description を入力します。イベントプロバイダー には イベントプロバイダー を選択し、OK をクリックします。
ステップ 2:イベントルールの作成
イベントターゲットとイベントルールは、同じリージョンに配置する必要があります。
EventBridge コンソールにログインします。
左側のナビゲーションウィンドウで [Event Buses] をクリックします。
上部のナビゲーションバーでリージョンを選択します。
[Event Buses] ページで、管理対象のイベントバス名をクリックします。
左側のナビゲーションウィンドウで [Event Rules] をクリックします。
-
イベントルール ページで ルールの作成 をクリックします。
-
ルールの作成 ページで、以下の手順を実行します。
-
基本情報の設定 ステップで、ルールの 名前 と 説明 を入力し、次へ をクリックします。
-
イベントパターンの設定 ステップで、イベントソースタイプ を カスタムイベントソース に設定します。イベントソース で、ステップ 1 で追加したカスタムイベントソースを選択します。[Event Pattern] コードエディタにイベントパターンを入力し、次へ をクリックします。
詳細については、「イベントパターン」をご参照ください。
-
イベントターゲットの設定 ステップで、イベントターゲットを設定し、作成 をクリックします。
説明1 つのイベントルールに最大 5 つのターゲットを追加できます。
-
サービスタイプ:Simple Message Queue (formerly MNS) を選択します。
-
キュー:作成済みのキューを選択します。
-
メッセージ内容:テンプレート を選択します。
以下に変数とテンプレートの例を示します。
変数の例:
{ "source":"$.source" }テンプレートの例:
The event from ${source} is abnormal.詳細については、「イベント変換」をご参照ください。
-
-
ステップ 3:イベントの公開
EventBridge コンソールにログインします。
左側のナビゲーションウィンドウで [Event Buses] をクリックします。
上部のナビゲーションバーでリージョンを選択します。
[Event Buses] ページで、対象のイベントバスを見つけ、操作 列の イベントのパブリッシュ をクリックします。
説明EventBridge コンソールでは、カスタムイベントバスへのイベント公開のみがサポートされています。
[Publish Event To Custom Event Bus] パネルで、以下の設定を行います。
設定項目 説明 カスタムイベントソース ドロップダウンリストから既存のカスタムイベントソースを選択します。 イベント本体 イベントの本文を入力します。 OK をクリックします。
結果の検証
Message Service (MNS) コンソールでイベントが受信されたことを確認します。
Simple Message Queue (旧称:MNS) コンソールにログインします。
左側のナビゲーションウィンドウで を選択します。
上部のナビゲーションバーでリージョンを選択します。
-
キュー ページで、対象のキューを見つけ、操作 列の を選択します。
-
[Send and Receive Messages] ページで、メッセージを受信 セクションに移動し、メッセージを受信 をクリックします。
重要Message Service (MNS) の Java SDK を使用してイベントを受信する場合、メッセージ本文は Base64 エンコードされず、文字化けすることがあります。イベント本文を正しく取得するには、getMessageBodyAsRawBytes() または getMessageBodyAsRawString() メソッドを使用してください。
以下は受信メッセージのサンプルです。
{ "id":"22h0iaji-8cf5-2iea-j4a6-i99a5j1a****", "source":"acs.oss", "specversion":"1.0", "type":"oss:ObjectCreated:PostObject", "datacontenttype":"application/json;charset=utf-8", "dataschema":"http://example.com/item.json", "subject":"acs:oss:cn-hangzhou:<yourAccountId>:xls-papk/game_apk/123.jpg", "aliyunaccountid":"165228866041****", "aliyunpublishtime":"2020-10-14T17:00:03.628Asia/Shanghai", "aliyuneventbusname":"MyEventBus", "aliyunpublishaddr":"10.0.XX.XX", "data":{ "name":"Eventbridge", "number":100 } }