EventGridの使用を始めるときにつまずいたところ

AzureのサービスであるEvent Gridで自分が求めているような記事が無くて、

使い始めるまでにちょっと時間がかかってしまったので、

自分で書くことにしました。

 

1. Event Gridの使いどころ

メッセージを配信する Azure サービスの選択

こちらに公式の比較がありますが、Event GridはAzure Functionsと相性が良いサービスです。

クライアントから来るメッセージの順序性を保ったまま処理したいだとか、

ある程度来たメッセージをまとめて処理したいだとかそういう処理には向いていません。

来たメッセージの処理の処理順とかはどうでもいいけど、

メッセージが来た場合に処理する確実性を上げたいという場合に使うと良いです。

またクラウドで起きるイベントを取得する、ということも狙っているサービスだと思います。

というのも、Event GridはJSONでデータをやり取りするのですが、

そのフォーマットが他のクラウドと連携できるように策定が進んでいたり、

Azure内のイベントを取得できるようになっているからです。

クラウド間連携できるフォーマットをCloud Event Schemaと呼んでいて、

Azure内だけで通用するフォーマットをEvent Grid Schemaと呼んでいると理解しています。

2. Event Gridの使用法

Event Gridと名の付くものには、

Event Grid Topicと

Event Grid Subscriptionの2種類が存在します。

2-1. Event Grid Topicを作成して使う場合

Event Grid Topicを作成する場合は、Event Grid Topicにデータを発行して、

それをサブスクライブするという使い方をします。

Event Grid Publisher Sample

このへんのソースコードを見るとわかりやすいのですが、

ポータルからトピックエンドポイントと、キーを引っ張ってきて、

スキーマに従ってJSONを作成すると、イベントが発行できます。

Service Bus Queue等と使い方が一緒なので分かりやすいですね。

2-2. Event Grid Subscriptionを作成する

こちらがメインの使い方だと思いますが、

クラウドで発生するイベントをサブスクライブするときに用いるのが、

Event Grid Subscriptionです。

こちらで、2-1.で作成した Event Grid Topicのイベントをサブスクライブしたり、

他のサービスのイベント(BLOBにファイルが作られた、など)をサブスクライブできたりします。

最低限

・どのようなイベントをサブスクライブするか

・どこにイベントを発行するか

を決める必要があります。

また、Event Grid Subscriptionは対応している各サービスからも設定ができます。

例えば、Azure Storage BLOB(v2)を選択すると、イベントという項目が現れます。

こちらからもEvent Grid Subscriptionが作成でき、

また、ここをクリックすると、

このサービスに紐づいているEvent Grid Subscriptionに何があるか確認できます。

2-3. Azure FunctionsのEvent Grid Trigger

Azure Functionsとの連携には、

①Event Grid SubscriptionのページからWebhookで設定する

②Azure FunctionsのページからEvent Grid Triggerを設定する

の2通りの方法があります。

両方とも選べる場合は、公式も薦めている②の方法を使うべきなので、

ここでは②の方法について書きます。

これは簡単で、Event Grid TriggerのFunctionsを作成すると、

Event Grid Subscriptionの追加、と出るのでこちらをクリックするだけです。

こうすることで、Event Grid Subscriptionと同じページが出て、

サブスクライバーが勝手にFunctionsになっている、ということになります。

また②の方法を取ると、

①の方法では必須となるEvent Gridがサブスクライバーを認証するための実装を省略できるので、

コードが綺麗になります。

ただし、Event Grid Triggerの実装が失敗しているコードの場合、認証エラーになります。

このあたりの話はまとめていつか書けたらなぁと思っています。

3. まとめ

Event Gridで自分にとって分かりにくかったところをまとめました。

世の中で記事書いている皆様はこんなレベルではつまずいていない空気を感じるので、

今回記事にしてみました。

私のようなレベルでつまずいてしまうような誰かの助けになれば幸いです。

The following two tabs change content below.

ずさずさ

機械工学を学んでねずみの研究をしていましたが、 紆余曲折あってメーカに就職。 機械学習をやろうと思いきや、 サーババックエンド側の担当になりました。 好きなのは認知科学です。 これからの時代、ネット上に個人の興味をアピールすべきと思っていたところ、木村君に拾われました。

最新記事 by ずさずさ (全て見る)

コメント