2017年8月17日木曜日

LogicApps で Azure Event Grid からのイベントを受け取る

ついに発表された Azure Event Grid。現在 ServiceBus で行っているようなサブスクリプション・トピック型によるメッセージングのやり取りだけではなく、Azure 上で発生するイベントを検知・連携できるようになるという、非常に興味溢れるサービスです。まずは LogicApps 上で利用してみるまでをまとめてみました。

LogicApps はもともと EventGrid との連携を考えられて準備されており、EventGrid コネクタがすでに提供されています。

image

コネクタで提供されているのは、一つのトリガのみです。EventGrid から何かしらのイベントを受け取った際、というトリガです。

設定する項目としては以下の通りとなります。

  • サブスクリプション:自分のサブスクリプションを選択します。
  • リソース種類:取得したいイベントの種類。EventGrid Topic のほかには EventHub、Azure リソースグループ、Azure サブスクリプションが選択できます。
  • リソース名:取得したい対象。EventGrid Topic の場合は自動で、EventHub の場合は既存の EventHub 名前空間、Azure リソースグループの場合は既存のリソースグループ、Azure サブスクリプションの場合は既存のサブスクリプションから選択します。

例えば、リソースグループを指定した場合、指定したリソースグループで「書き込み」「削除」に該当する処理が発生すると、イベントとして通知してもらえるようになります。これは例えば、LogicApps を作成・更新したとか、VM の設定を変更した、といったケースです。

サブスクリプションを指定した場合は、選択したサブスクリプション上で発生した「書き込み」「削除」に該当する処理を、同じように通知してもらえるようになります。Ch9 のデモでも行われていましたがアカウントの追加などがわかりやすいところでしょう。

LogicApps で EventGrid コネクタを設置して保存すると、そのタイミングで EventGrid に対して必要な設定が自動で行われます。ポータル上で EventGrid を開いて先に何かしらの作業を行う必要が一切なく、何も気にせずに利用が可能なのは大変すばらしいと思います。

なお、EventGrid コネクタを利用してリソースグループやサブスクリプションのイベントを察知したい場合、事前に権限設定が必要です。適したロールが見当たらないので、おそらく現状では「所有者」相当のものを権限として設定されていなければならなさそうに思います。

image

もし権限が不足していた場合、LogicFlow のトリガー履歴に「失敗」な履歴が増えます。EventGrid トリガの場合、保存後すぐに動作しようとするためです。

image

履歴を確認すると、このように AuthorizationFailed として、必要権限が不足しているため認証エラーとなっていることが確認できます。このようなエラーとなった場合は、アカウントもしくはアプリケーションに対して権限を付与してください。

image

実際にリソースグループに対する変更を検知できるか、試しに EventGrid で対象として設定したリソースグループに、もう一つ LogicApps を新規に作成してみました(TestApps2)

image

するとこのように、Subject には作成した LogicApps が、イベント種類として Microsoft.Resources.ResourceWriteSuccess として検知され LogicApps に通知が届きました。

このように EventGrid を使う・試してみるのには LogicApps が非常に楽です。EventGrid の設定自体何も行っておらず LogicApps 上であれこれしているだけですので、ぜひぜひ気軽に利用してみてください。

EventGrid を利用すると、今まで ServiceBus や EventHub に分散していたイベントを統合して扱えるようにするのも簡単ですし、発生したイベントを処理するのも、LogicApps から Function Apps に切り替えるとか、Webhook にして外部システムに連携させるといった切り替えも非常に簡単に行えますので、「ハイブリッドなインテグレーション」がますます簡単に利用できるようになると思います。

0 件のコメント:

コメントを投稿