はじめに
Azure IoT Hub で収集したデバイスのデータは、たとえば別のアプリケーションでストリーミング処理したい・分析基盤に流したい、などの目的で他サービスに連携されることが多いかと思います。その際の選択肢として、公式のドキュメントでは以下が列挙されています。
- Event Hubs互換の組み込みエンドポイント
- Storage containers
- Service Bus キュー
- Service Bus トピック
- Event Hubs
- Cosmos DB (プレビュー)
本記事では、これらの中から最も需要があると思われるAzure Event Hubsでデータを集約してデータを別のアプリに送信する方法を解説します。
Azure IoT Hub とは
https://docs.microsoft.com/ja-jp/azure/iot-hub/
Azure IoT Hub は、デバイスとクラウド間の双方向通信を提供するマネージドサービスです。IoT Hub の主要な機能には、デバイス登録・認証や、データ送受信があります。IoT Hub は、大量のデバイスからリアルタイムでデータを収集する際に優れたパフォーマンスを発揮します。
Azure Event Hubs とは
https://docs.microsoft.com/ja-jp/azure/event-hubs/
Azure Event Hubs は、リアルタイムのデータストリームを処理するためのフルマネージドサービスです。大量のイベントデータを高速で収集し、ストリーミング分析やストレージに送信することができます。Event Hubs は、Apache Kafka プロトコルをサポートしており、Kafka を用いたデータ送信が可能です。
IoT Hub でデバイスからデータを収集する手順
まず、IoT Hub を作成し、 デバイスを登録し、適切な認証情報を設定します。デバイスからのデータ送信には、MQTT や AMQP、HTTP などのプロトコルが利用できます。IoT Hub のデバイスエンドポイントを設定し、データを受信できるようにします。
-
Azure IoT Hubを作成する
-
Azure ポータル(https://portal.azure.com/) にサインインします。
-
左側のメニューで、"リソースの作成 "をクリックします。
-
"IoT Hub"を検索し、その結果をクリックします。
-
設定を確認し、「作成」をクリックして新しいIoT Hubをデプロイします。
-
-
デバイスを登録する
-
IoT デバイスの登録: 上記で作成したIoT Hub のメニューで、「IoT デバイス」をクリックします。次に、「+ 新規」ボタンをクリックして新しい IoT デバイスを登録します。
-
デバイスの詳細を入力: 新しいデバイス登録画面で、以下の情報を入力します。
-
デバイス登録の完了: 入力内容を確認し、「保存」ボタンをクリックします。デバイスが IoT Hub に登録されます。
-
-
デバイスからIoT Hub にメッセージ送信する
-
今回はIoTデバイスの実機を用意できないため、Visual Studio Code の拡張機能 「Azure IoT Tools」を使用してIoT Hubにメッセージを送信します。Azure IoT ToolsでIoT Hubにメッセージを送信する方法については、公式ドキュメントや他のQiita記事に詳しいので以下を参照してください。
- https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-vscode-iot-toolkit-cloud-device-messaging
- https://qiita.com/RyogaTakao/items/5115c8d414c111f0753a
Azure IoT Tools からIoT Hubにメッセージを送信すると、IoT Hubのコンソールからメッセージが受信されていることが確認できます。
-
IoT Hub と Event Hubs の統合
次に、IoT Hub から Event Hubs へデータをルーティングする設定を行います。これにより、IoT Hub で収集したデータが Event Hubs に自動的に送られます。データ変換が必要な場合は、Azure Stream Analytics などのサービスを使用してデータを加工できます。
-
Event Hubs インスタンスの作成: Azure ポータルで新しい Event Hubs 名前空間と Event Hub を作成します。この Event Hub は、IoT Hub からデータを受信するためのエンドポイントとして機能します。
-
IoT Hub でルーティング設定: IoT Hub の「メッセージルーティング」メニューから、カスタムエンドポイントとルートを作成します。
これで、IoT Hub と Event Hubs が統合され、IoT Hub から受信したデータが自動的に Event Hubs に送信されます。
動作確認
ルートの設定が完了したら、実際にIoT Hubにデータを送信し、Event Hubsで受信できているか確認してみます。
先程と同様にVS Code から送信します。
1秒間隔で100メッセージほど送ってみます。
IoT Hubでデバイスからメッセージが送られていることが確認できます。
Event Hubsはどうでしょうか。
こちらもメッセージが送られてきていることが確認できました。
参考文献
Azure IoT Hub 公式ドキュメント: https://docs.microsoft.com/ja-jp/azure/iot-hub/
Azure Event Hubs 公式ドキュメント: https://docs.microsoft.com/ja-jp/azure/event-hubs/
Kafka プロトコルに関するリソース: https://kafka.apache.org/documentation/