前回、仮想エッジデバイスからAzure IoT Hubへデータを送信し、そのデータをAzure Functionsで確認するまでを試しましたが、今回はAzure Functionsではなく、Azure Stream Analyticsを経由してAzure SQL データベースにデータを入れて確認するところまでを試します。
はじめに
デバイスからのデータの流れはこのようになります。
以下の記事の「4.Azure IoT Hubへの接続・データ送信」までを終わらせた状態から設定していきます。
Azure SQL データベースの作成
Azure ポータルの検索窓に”SQLデータベース”と入力し、サービスの”SQLデータベース”をクリックします。
”+作成”をクリックします。
コンピューティングとストレージはデフォルトから以下のようにBasicに変更しました。
SQL Databaseサーバーは新規で作成しました。
認証方法は”SQL認証を使用する”にしてます。
他の設定はすべてデフォルトで作成します。
月額の料金はこのようになりました。
デプロイが完了するまでしばらく待ちます。
テーブルの作成
前章で作成したSQLデータベースリソースから”クエリエディター”をクリックします。
SQL認証でログインします。
FWでアクセスがブロックされてエラーになるので、”サーバーXXの許可リストIP”をクリックして、自IPからアクセスできるようにします。
クエリエディターで以下のSQLを実行してIoTデバイスからのデータを格納するテーブルを作成します。
create table test_iot( machine varchar(100),ambient varchar(100),timeCreated datetime,EventProcessedUtcTime datetime,PartitionId bigint,EventEnqueuedUtcTime datetime);
※EventProcessedUtcTime以降のカラムはIoT Hubが付与してくれます。
”サーバーファイヤウォールの設定”をクリックします。
Azure IP Rangesからファイルをダウンロードし、Stream Analyticsを作成したリージョンを検索し、”addressPrefixes”に記載のIPをすべて追加します。
Azure Stream Analyticsの作成・設定
Azure ポータルの検索窓に”Stream”と入力し、サービスの”Stream Analytics ジョブ”をクリックします。
”+作成”をクリックして、ストリーミングユニットを1に変更して自分の環境に合わせて作成します。
デプロイが完了したらリソースに移動します。
左のメニューの”入力”をクリックします。
”+ストリーム入力の追加”を選択し、”IoT Hub”をクリックします。
エンドポイントのみ”操作監視”に変更して他はデフォルト値で”保存”ボタンをクリックし、接続確認ができればOKです。
左のメニューの”出力”をクリックします。
”+追加”を選択し、”SQL Database”をクリックします。
必要な項目を入力して保存をクリックします。
”クエリ”をクリックします。
クエリに”入力”と”出力”のエイリアス名を登録します。
Stream Analyticsの”開始”をクリックして右下に表示される開始をクリックします。
データ送信の確認
仮想エッジデバイスのVMを起動(または再起動)します。
SQLデータベースの”クエリエディター”をクリックします。
作成したテーブルの右側の”・・・”クリックして、”Select Top 1000 Rows”をクリックしてテーブルに格納されたデータを確認します。
終わりに
Stream AnalyticsではデータがSQLデータベースに出力されているにもかかわらず、SQLデータベースのデータが更新されないという状況に悩みました。エラーが出力されなかったので気付かなかったのですが、SQLデータベースにStream Analyticsが接続できないことが原因でした。
土山 和也(日本ビジネスシステムズ株式会社)
ユーザーサポート、開発、運用、構築業務を経験し、現在はアーキテクトとして提案・プロジェクト支援に従事。専門はデータベースでDBA歴十数年。Azure/AWSを担当。
担当記事一覧