クラウドアダプタを利用してAzure Event Hubsへデータを送信する

本ページでは、クラウドアダプタを利用してAzure Event Hubsへデータを送信し、Azure Storageへ保存する一連の流れを説明します。

Azureの設定

Event Hubsの作成

ますは、Microsoft Azure Portal からEvent Hubsを開きEvent Hubsを設定します。
「Event Hubs 名前空間 の作成」からEvent Hubsを作成します。



以下のように入力し、Event Hubsを設定します。
ここで設定した名前がデータの送信先になります。

項目入力値
名前CloudAdapter
価格レベルBasic を選択
リソースグループiij (新規作成)
場所東日本



「サブスクリプション」は適切な値を選択します。



Event Hubsの作成には数十秒掛かります。
「更新」を選択し、作成が完了するまで待ちます。
作成が完了したら「CloudAdapter」を選択します。



次にデータの送信先となる「イベント ハブ」を作成します。
「Event Hubs>イベント ハブ」と選択します。



ここでは「device」として「イベント ハブ」を作成します。

以上でEvent Hubsの作成は完了です。

ストレージアカウントの設定

続いて、Azure StorageとAzure Event Hubsを連携させ、Event Hubsに送信したデータをファイルとして保存します。
ますは、「ストレージアカウント の作成」からストレージアカウントを作成します。



ここでは、下記のように入力しストレージアカウントを作成します。
赤枠の箇所を入力・選択し「確認および作成」を選択して確認画面へ進みます。
入力に誤りがないかを確認し「作成」を選択してストレージアカウントを作成します。

項目入力値
リソースグループiij
ストレージアカウント名cloudadapterstorage
場所(アジア太平洋) 東日本



ストレージアカウントの作成には数十秒かかります。
「最新の状態に更新」を選択し、作成が完了するまで待ちます。

「デプロイが完了しました」と表示されれば作成は完了です。
「リソースに移動」を選択し、コンテナーを作成します。

ストレージアカウントのリソースを開き、検索ウィンドウに「コンテナー」と入力します。
「コンテナー>+ コンテナー」を選択し、コンテナーを新規に登録します。



コンテナーの名前を「cloudadapter」として作成します。

以上でストレージアカウントの設定は完了です。

データの処理設定

次にEvent Hubsへ戻り、作成したストレージアカウントへデータを保存するようにデータの処理を設定します。
「Event Hubs>CloudAdapter>Event Hubs>device>データの処理>エクスプローラで開く」から設定を追加します。



クエリ設定の画面に進みます。
下記のようにクエリを編集し「クエリの展開」を選択してジョブの設定をします。
「storage」という出力先はこの時点ではありませんが、後ほど作成します。

SELECT
    *
INTO
    [storage]
FROM
    [device]



下記のように入力し、データ保存用のジョブを作成します。
「サブスクリプション」は適切に選択します。

項目入力値
ジョブ名DeviceDataJob
リソースグループiij
場所東日本



作成が完了するとジョブのリソース画面に進みます。
次に「出力>追加>Blob Storage/Data Lake Storage Gen2」を選択します。



下記のように入力し、作成したストレージアカウントに受信したデータを保存するよう設定します。
「出力エイリアス」を、先ほど出力先に指定した「storage」と入力します。

項目入力値
出力エイリアスstorage
ストレージアカウントcloudapterstorage
コンテナーcloudadapter



続いて、作成したジョブを開始します。
「概要>開始」と選択してジョブの開始設定に進みます。



「ジョブ出力の開始時刻」を「現在」と選択してジョブを開始します。



ジョブの開始には数分掛かります。
以下のような通知が行われるまで待ちます。

以上でAzure上への設定は完了です。


認証情報の確認

最後に、Event Hubsへデータを送信するための認証情報を確認します。
「CloudAdapter>共有アクセスポリシー>RootManageSharedAccessKey」からEvent Hubsの共有アクセスポリシーを表示します。



「主キー」か「セカンダリ キー」のいずれかを控えておきます。
後ほどコントロールパネル上で設定する際に使用します。



IoTサービスコントロールパネルの設定

次に、コントロールパネルからクラウドアダプタの設定をします。
画面の詳細については クラウドアダプタ画面 をご覧ください。

認証情報の設定

まずは認証情報を設定します。
「クラウドアダプタ>認証情報一覧>認証情報作成」から認証情報を作成します。



ここでは先ほど確認した認証情報を使用します。

項目入力値
認証種別Azure Event Hubs を選択
認証情報名azure event hubs
Policy Name RootManageSharedAccessKey
Shared Access Key(控えた文字列)



転送先の設定

次に、転送先設定を作成します。
「転送先一覧>転送先作成」からHTTPの転送先設定を作成します。



下記のように入力し、転送先設定を作成します。
「転送先URL」には「Event Hubsの作成」時に設定した「名前」と、「イベント ハブ」を入力します。
また「認証情報」は、先ほど作成した「azure event hubs」を選択します。
「デバイス選択」は使用するデバイスを適切に選択します。

項目入力値
転送先サービスAzure Event Hubs を選択
転送先名Azure Event Hubs
転送先URLhttps://CloudAdapter.servicebus.windows.net/device/messages
認証情報

【Azure Event Hubs】azure event hubs を選択

デバイス選択使用するデバイスを選択

以上でコントロールパネル上の設定は完了です。

デバイスからのデータ送信と受信確認

それでは実際にデバイスからデータを送信します。
ここでは、ラズベリーパイからコマンドを使用してデータを送信します。
下記コマンドを実行し、データを送信します。

pi@raspberrypi:~ $ curl -i -X POST -H 'Content-Type: application/json' http://gw.iot.iij.jp/v1 -d '{}'
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 12 Dec 2019 04:39:23 GMT
Transfer-Encoding: chunked
Connection: keep-alive 

コマンドを実行するとストレージアカウントの「Storage Explore」からファイルが保存されているのが確認できます。


以上で説明は終了です。
この他にも「Service Bus topic/queue」への送信や「Azure Function」の実行 等、様々なAzureのサービスと連携することができます。
是非お試し下さい。