イベントルールを使用してイベントをフィルタリングし、Simple Message Queue (旧 MNS) (SMQ) にルーティングできます。このトピックでは、カスタムイベントを SMQ にルーティングするための前提条件と手順について説明します。また、結果の確認方法についても説明します。
前提条件
EventBridge
EventBridge がアクティブ化されており、必要な権限が Resource Access Management (RAM) ユーザーに付与されています。詳細については、「EventBridge のアクティブ化と RAM ユーザーへの権限の付与」をご参照ください。
SMQ
キューが作成されています。詳細については、「キューの作成」をご参照ください。
手順 1: カスタムイベントソースの作成
EventBridge コンソール にログオンします。左側のナビゲーションペインで、[イベントバス] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。[イベントバス] ページで、管理するカスタムイベントバスの名前をクリックします。
左側のナビゲーションペインで、[イベントソース] をクリックし、次に [イベントソースの追加] をクリックします。
[カスタムイベントソースの追加] パネルで、[名前] パラメーターと [説明] パラメーターを構成し、[イベントプロバイダー] ドロップダウンリストから [カスタムアプリケーション] を選択し、[OK] をクリックします。
手順 2: イベントルールの作成
イベントルールに構成するイベントターゲットは、イベントルールと同じリージョンに存在する必要があります。
EventBridge コンソール にログオンします。
左側のナビゲーションペインで、[イベントバス] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。
[イベントバス] ページで、管理するイベントバスの名前をクリックします。
左側のナビゲーションペインで、[イベントルール] をクリックします。
左側のナビゲーションペインで、[イベントルール] をクリックします。表示されるページで、[ルールの作成] をクリックします。
[ルールの作成] ウィザードで、次の手順を実行します。
[基本情報の構成] 手順で、[名前] フィールドにルール名、[説明] フィールドにルールの説明を入力します。次に、[次の手順] をクリックします。
[イベントパターンの構成] 手順で、[イベントソースの種類] パラメーターを [カスタムイベントソース] に設定し、手順 1 で構成したカスタムイベントソースを [イベントソース] ドロップダウンリストから選択します。次に、[パターンコンテンツ] コードエディターで、イベントパターンを指定し、[次の手順] をクリックします。
詳細については、「イベントパターン」をご参照ください。
[ターゲットの構成] 手順で、イベントターゲットを構成し、[作成] をクリックします。
説明1 つのイベントルールに対して最大 5 つのイベントターゲットを構成できます。
[サービスタイプ]: [SMQ] を選択します。
[キュー]: 作成した SMQ キューを選択します。
[メッセージ本文]: [テンプレート] を選択します。
次のサンプルコードは、変数とテンプレートの例を示しています。
サンプル変数:
{ "source":"$.source" // ソース }サンプルテンプレート:
The event comes from ${source} is abnormal. // ${source} からのイベントは異常です。詳細については、「イベント変換」をご参照ください。
手順 3: イベントのパブリッシュ
EventBridge コンソール にログオンします。左側のナビゲーションペインで、[イベントバス] をクリックします。
- 上部のナビゲーションバーで、リージョンを選択します。
- [イベントバス] ページで、イベントをパブリッシュするイベントバスを見つけ、イベントのパブリッシュ を 操作 列でクリックします。説明 EventBridge コンソールでは、カスタムイベントバスにのみイベントをパブリッシュできます。
- [カスタムイベントバスへのイベントのパブリッシュ] パネルで、カスタムイベントソース ドロップダウンリストからカスタムイベントソースを選択し、イベント本体 コードエディターにイベントコンテンツを入力し、[OK] をクリックします。イベントパラメーターの詳細については、「概要」をご参照ください。
結果の確認
SMQ コンソールでイベントが受信されているかどうかを確認できます。
SMQ コンソール にログオンします。
左側のナビゲーションペインで、[キューモデル] > キュー を選択します。
上部のナビゲーションバーで、リージョンを選択します。
[キュー] ページで、イベントをルーティングしたキューを見つけ、[アクション] 列で を選択します。
メッセージを受信[クイックエクスペリエンス] ページの メッセージを受信 セクションで、 をクリックします。
重要Java 用 SMQ SDK を使用して配信されたイベントを受信すると、メッセージの本文が Base64 でエンコードされていないため、受信したメッセージは文字化けして表示されます。そのため、getMessageBodyAsRawBytes メソッドまたは getMessageBodyAsRawString メソッドを使用してイベントの本文を取得する必要があります。
次のサンプルコードは、受信したイベントの例を示しています。
{ "id":"22h0iaji-8cf5-2iea-j4a6-i99a5j1a****", // ID "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****", // Alibaba Cloud アカウント ID "aliyunpublishtime":"2020-10-14T17:00:03.628Asia/Shanghai", // パブリッシュ時刻 "aliyuneventbusname":"MyEventBus", // EventBus 名 "aliyunpublishaddr":"10.0.XX.XX", // パブリッシュアドレス "data":{ // データ "name":"Eventbridge", // 名前 "number":100 // 番号 } }