2017年9月7日木曜日

LogicFlow で EventGrid Publish を試してみる

EventGrid へイベントを送信するコネクタが追加されましたので、LogicFlow 上からイベントを発行するというのを試してみました。EcentGrid リリース時にも思いましたが、実際に試してみると、非常に簡単にイベントをとりまとめることが可能になる、と感じます。

EventGrid からイベントを受け取る際には、特に何もしなくとも利用可能でしたが、イベントを発行する場合には下準備が必要になります。

EventGrid Topics の設定

image

Azure ポータルから「Event Grid Topic」を選択し、新しくイベントの発行先(パブリッシャー)を設定します。現在利用できるのは、米国西部2と米国中西部だけとなっていますが、時間をかけて各リージョンに展開されるものと思われます。

image

Event Grid Topics を作成すると、詳細画面が表示されます。ここでは画面下部に LogicApps の情報がすでに表示されていますが、新規に作成したばかりの状態ではここには何も表示されません。ここは、LogicFlow などでイベントを送る設定を行った場合に、イベント発生元として一覧表示されます。LogicApps からしか試していませんので、表示されるタイミングは不明ですが、恐らくは一度でも呼び出せば登録されるのではないかな、と思います。

なお、ここで表示されている情報の中で「エンドポイントURL」と「アクセスキー」は、LogicFlow から接続する際に必要となりますので、コピーしておきます。

送信側 LogicFlow の設定

LogicFlow 側で Event Grid Publish を利用する際に、入力が必要な情報は以下の通りです。

image

接続名は適当に、EndPoint には作成した Event Grid Topic のエンドポイントURLを、Shared Access Signature には同じく Event Grid Topic のキー(1でも2でもよい)を設定し、作成をクリックします。

image

デザイナー上で設定できるのは、このような感じです。Event Grid 公式ドキュメントでも説明がありますが、以下のような感じで値を設定します。

  • subject:(string)発行元が定義したイベントの対象のパス。
  • eventType:(string)このイベント ソース用に登録されたイベントの種類のいずれか。
  • eventTime:(string)プロバイダーの UTC 時刻に基づくイベントの生成時刻。
  • id:(string)イベントの一意識別子。
  • data:(オブジェクト)リソース プロバイダーに固有のイベント データ。

先のスクリーンショットにない eventTIme は詳細オプションに含まれています。また、直接 JSON で値を設定することも可能です。

image

Data / Body の横にあるアイコンをクリックすると、入力モードが切り替わります。

イベント送信側はこれで設定完了です。

受信側 LogicFlow の設定

image

対してイベント受信側ですが、Event Grid トリガの設定で、Resource Type を Microsoft.EventGrid.topics として設定し、Resource Name を作成した Event Grid Topic となるよう設定することで、イベントの受信設定は完了です。

詳細オプションの中には、受け取るイベントのフィルタ条件もありますので、実際に利用する場合にはこのあたりを利用して、必要なイベントだけになるよう調整が発生します。

image

このように、Event Grid Publish を利用して送信したイベントを受け取れています。

このように非常に簡単に Event Grid を利用したイベント連携が行えました。今回は LogicApps だけで試しましたので、どういった形で使えるかがイメージつきにくいかもしれませんが、以下のように考えています。

  • LogicFlow で検知できるサービスイベントを Event Grid へ連携して統一して扱う
  • Event Grid へ送信する部分を HTTP Request コネクタで外部に開放し、LogicFlow に用意されていないサービスのイベントも統合する

Event Grid 自体、LogicApps 外から利用することも前提にしているサービスですが、各種サービスで直接呼び出してもらうようにはなかなか実施しにくい場面というのはどうしてもあります(手の届かない外部サービスとか)。

そのような場合に、間に LogicApps を挟むことで、LogicApps 側でイベントを検知・送信するように構築するというのが、非常に楽に行えます。各種サービスで HTTP 呼出が行えるのであれば、それだけで Event Grid にイベントとして統合させることが可能、ということです。さらに言えば、そこをプログラムを書いて開発する必要が全くない、ということにもつながります。

このように非常に簡単にサービス間であってもイベント統合が可能ですので、ぜひぜひ使ってみてもらいたいものです。

0 件のコメント:

コメントを投稿