こんにちは、サイオステクノロジーの萩原です。
AzureのEvent Gridを使ってBlob Storageにファイルが配置される度にService Busへメッセージを送信する方法を紹介したいと思います。
Azure Event Grid
Azure Event Gridとは、特定のAzureのサービスのイベントを検知し、 Webhookで別のサービスに通知を行うアプリケーションです。
Event Gridに対応しているサービスについては公式ページをご確認ください。
Azure Event Grid とは – Azure Event Grid | Microsoft Docs
今回はEvent Gridを使ってBlob StorageとService Busとの連携を行います。
構成
今回作成するシステムはこのようになっています。
Blob Strage内のファイルの更新をトリガーにEvent Gridを実行してService Busにメッセージを送信します。
手順
設定手順を紹介します。
1. ストレージアカウントの準備
AzureのWebコンソール画面にてストレージアカウントを作成します。
投稿日(2020/9/8)現在、Storage (汎用 v1)のみEvent Gridがサポートされていないので、アカウントの種類項目を設定する際は気を付けてください。
他の設定項目についてはお好みに合わせて選択して下さい。
作成完了後、ストレージアカウントの概要画面からコンテナに移動して新しいコンテナを作成します。
2. Service Busの準備
続いてEvent Gridからメッセージを受け取るService Busを用意し、
Service Busの画面からメッセージの受信先となるキューを作成します。
3. Event Gridの作成
先ほど用意したストレージアカウントの画面から左メニューのイベントに遷移し、イベントサブスクリプションを選択してEvent Grid作成画面に移ります。
Blob Strageのトリガーとして設定可能なイベントは下記の6種類あります。
イベント名 | 説明 |
---|---|
Blob Created | ファイルが作成または置換されたときにトリガー発動 |
Blob Deleted | ファイルが削除されたときにトリガー発動 |
Blob Renamed | ファイルの名前が変更されたときにトリガー発動 |
Directory Created | ディレクトリが作成されたときにトリガー発動 |
Directory Renamed | ディレクトリの名前が変更されたときにトリガー発動 |
Directory Deleted | ディレクトリが削除されたときにトリガー発動 |
今回はファイルが追加されたタイミングでメッセージを送信するので、イベントの種類のフィルター項目はBlob Createdを選択します。
また、エンドポイントの詳細項目は先ほど用意したService Busキューを指定します。
4. Event Gridの実行
Event Gridを作成したら、Blob Strageにファイルを置いてトリガーが発動するか確認します。
Blob Strageにファイルを置き、Service Busキューの画面に遷移します。
左メニューService Bus Explorerのピークを選択するとメッセージを確認することができます。
下記のようなメッセージを確認できたらOKです。
{
"topic":"/subscriptions/{subscription-id}/resourceGroups/hagiwara-
blog/providers/Microsoft.Storage/storageAccounts/hagiwarablog",
"subject":"/blobServices/default/containers/container1/blobs/hoge.txt",
"eventType":"Microsoft.Storage.BlobCreated","id":"831e1650-001e-001b-66ab-eeb76e069631",
"data":{
"api":"PutBlob",
"clientRequestId":"6d79dbfb-0e37-4fc4-981f-442c9ca65760",
"requestId":"831e1650-001e-001b-66ab-eeb76e000000",
"eTag":"\"0x8D4BCC2E4835CD0\"",
"contentType":"text/plain","contentLength":11,
"blobType":"BlockBlob","url":"https://my-storage-account.blob.core.windows.net/hagiwarablog/hoge.txt",
"sequencer":"00000000000004420000000000028963",
"storageDiagnostics":{
"batchId":"b68529f3-68cd-4744-baa4-3c0498ec19f0"
}
},
"dataVersion":"",
"metadataVersion":"1",
"eventTime":"2020-09-04T04:01:52.1621241Z"
}
メッセージに記載されているプロパティの詳細は公式ドキュメントをご参照ください。
Event Grid ソースとしての Azure Blob Storage – Azure Event Grid | Microsoft Docs
まとめ
Event Gridを使うことで、Blob StorageとService Busとの連携が簡単に実装することができました。
Event Gridでこんなことができるんだと知って頂ければ幸いです。
ご覧いただきありがとうございました。