Event Gridを使ってBlob Storageにファイルが配置される度にService Busへメッセージを送信

こんにちは、サイオステクノロジーの萩原です。
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の画面からメッセージの受信先となるキューを作成します。

Service Bus画面

3. Event Gridの作成

先ほど用意したストレージアカウントの画面から左メニューのイベントに遷移し、イベントサブスクリプションを選択してEvent Grid作成画面に移ります。

Event Grid画面

Blob Strageのトリガーとして設定可能なイベントは下記の6種類あります。

イベント名 説明
Blob Created ファイルが作成または置換されたときにトリガー発動
Blob Deleted ファイルが削除されたときにトリガー発動
Blob Renamed ファイルの名前が変更されたときにトリガー発動
Directory Created ディレクトリが作成されたときにトリガー発動
Directory Renamed ディレクトリの名前が変更されたときにトリガー発動
Directory Deleted ディレクトリが削除されたときにトリガー発動

今回はファイルが追加されたタイミングでメッセージを送信するので、イベントの種類のフィルター項目はBlob Createdを選択します。
また、エンドポイントの詳細項目は先ほど用意したService Busキューを指定します。

Event Grid設定画面

4. Event Gridの実行

Event Gridを作成したら、Blob Strageにファイルを置いてトリガーが発動するか確認します。

コンテナ画面

Blob Strageにファイルを置き、Service Busキューの画面に遷移します。
左メニューService Bus Explorerのピークを選択するとメッセージを確認することができます。

Event Gridメッセージ確認画面

下記のようなメッセージを確認できたら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でこんなことができるんだと知って頂ければ幸いです。
ご覧いただきありがとうございました。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です