EventGridTrigger/SpringBatch

Azure Functions上でSpring Batchを利用しているプログラムをEventGridTriggerによって動かしてみた(Azure設定編)

今回も引き続き、EventGridTriggerについて記載する。前回はサンプルプログラムの内容とAzure上へのデプロイを記載していたが、Azure Portal上でのAzure Eventの設定とサンプルプログラムの実行結果の内容について記載する。

前提条件

下記記事のサンプルプログラムを作成しAzure上にデプロイ済であること。

Azure Functions上でSpring Batchを利用しているプログラムをEventGridTriggerによって動かしてみた(ソースコード編)これまでこのブログでは、TimerTriggerを利用してBlob上のCSVファイルをDBに書き込む処理を作成していたが、EventGr...

EventGridの設定

EventGridの設定は、Azure Portal上で作成できる。その手順は、以下の通り。

1) Azure Portalにログインし、EventGridシステムトピックを押下する。
EventGridの設定_1

なお、EventGridシステムトピックで、Blobにファイルが作成されたタイミング等のイベント設定が行える。詳細は以下のサイトを参照のこと。
https://docs.microsoft.com/ja-jp/azure/event-grid/system-topics

2) EventGridシステムトピックを作成するため、「作成」ボタンを押下する。
EventGridの設定_2

3) EventGridシステムトピック作成画面の初期表示は、以下の通り。
EventGridの設定_3

4) Blobにファイルが作成されたタイミング等のイベント設定を行うため、Topic Typesに「Storage Accounts (Blob & GPv2)」を選択する。その他、イベント設定するBlobとシステムトピック名を指定し、「確認および作成」ボタンを押下する。
EventGridの設定_4

5) 作成予定のEvent Gridシステムトピックの内容が表示されるため、確認し「作成」ボタンを押下する。
EventGridの設定_5

6) 作成が完了すると以下の画面が表示されるため、「リソースに移動」ボタンを押下する。
EventGridの設定_6

7) 以下のように、作成したEvent Grid システムトピックの概要画面が表示される。次に、イベントサブスクリプションを作成するため、「+イベント サブスクリプション」ボタンを押下する。イベントサブスクリプションでは、Blobにファイルが作成されたタイミング等に動作するファンクションの設定を行うことができる。
EventGridの設定_7

8) イベントサブスクリプション作成画面の初期表示は、以下の通り。
EventGridの設定_8

9) Blobが作成されたタイミングで先ほど作成したファンクションが動作するよう、イベントサブスクリプションに以下のような設定を行い、「作成」ボタンを押下する。
EventGridの設定_9

10) イベントサブスクリプションの作成が完了し、以下のように、作成したイベントサブスクリプションが、Event Grid システムトピックの概要画面の下方に表示されることが確認できる。
EventGridの設定_10_1

なお、イベントグリッドによる動作が行われると、以下のように、Event Gridシステムトピックの概要欄にメトリックが表示される。
EventGridの設定_10_2



サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) 配置するCSVファイルの内容は、以下の通り。
サンプルプログラムの実行結果_1

2) 上記CSVファイルを、以下のように、EventGridTriggerを設定したBlob上に配置する。
サンプルプログラムの実行結果_2

3) EventGridTriggerによってファイルがDBに取り込まれた後は、以下のように、Blob上のファイル名の末尾に「_yyyymmddhhmmss」が付与されで、DBにデータが書き込まれることが確認できる。
サンプルプログラムの実行結果_3_1

サンプルプログラムの実行結果_3_2

要点まとめ

  • EventGridTriggerを利用すると、BlobにCSVファイルが作成されたタイミングで、そのCSVファイルをDBに書き込むことができる。
  • Blob上のEventGridTriggerの設定は、Azure Portalを利用して、EventGridシステムトピック上で実施する。