「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Microsoft Azure IoT]]
-戻る
--[[Microsoft Azure IoT]]
---Azure IoT Hub
---[[Azure IoT Edge]]
---[[Azure IoT Central]]
---[[Azure IoT Hub DPS>Azure IoT Hub Device Provisioning Service]]
---[[Azure Digital Twins]]

--[[Azureのメッセージング・サービス]]
---[[Azure Event Hubs]]
---[[Azure HDInsight上の Kafka>Azureのメッセージング・サービス#td389d0c]]
---Azure IoT Hub
---[[Azure IoT Central]]
---[[Azure Event Grid]]
---[[Azure Service Bus]]

* 目次 [#qe26b80e]
#contents

*概要 [#f045e7f4]
エッジデバイスとバックエンドの双方向の通信を仲介するサービス。
-IoTデバイスの登録・認証・管理を行い、監視/管理する
-[[フロントエンド>#l3d3b1f3]]と[[バックエンド>#k3a2bc2b]]の双方向の通信を仲介する

-Azureでホストされているマネージド サービス
**双方向通信の仲介 [#rada73cf]

***デバイス認証 [#bdf2c1eb]
デバイス認証によるセキュリティ強化
-[[公開鍵・暗号化>暗号化アルゴリズム#tfda0d72]]
-自己署名[[証明書]]
-CA署名[[証明書]]

***メッセージ ハブ [#c41c59d3]
-双方向通信の中央メッセージ ハブとして機能
--管理するデバイス
--IoT アプリケーション
--管理するIoTデバイス([[Device Endpoint>#zc944d5d]]
--IoTアプリケーション([[Service Endpoint>#sada5bf3]]

-IoT ソリューション構築
-[[Azure Event Hubs]]と異なり、~
[[Kafka>Azure Event Hubs#mb379986]] Endpointなどは使えないらしい。
--[[Azure Event Hubs]]との比較は[[コチラ>Azureのメッセージング・サービス#fdd5f5b4]]

--信頼性が高く、セキュリティで保護された通信を提供
***メッセージング パターン [#l744c571]
複数のメッセージング パターンをサポート
-ファイルのアップロード
-IoTデバイス制御の要求/応答メソッド

---IoT デバイス接続~
ほぼすべてのデバイス、何百万ものデバイス
**ソリューション構築 [#v2678c65]
-デバイス管理等の機能が追加されている。

---ソリューション バックエンド~
-信頼性が高く、セキュリティで保護された通信を提供

--複数のメッセージング パターンをサポート
---ファイルのアップロード
---デバイスを制御の要求/応答メソッド
***接続 [#d26fc7ba]
-ほぼすべてのIoTデバイス
-何百万ものIoTデバイス
-[[大規模なデバイス・プロビジョニング(DPS)>#u70a4b0d]]

--監視~
***監視 [#cb267f85]
イベントを追跡により、ソリューションの正常性維持に役立つ。
---デバイスの作成
---デバイスの障害
---デバイスの接続

-IoTデバイスの作成
-IoTデバイスの障害
-IoTデバイスの接続

***アプリケーション開発 [#a74dc7e5]
Azure IoT Hub SDKを使用して開発。

-Azure IoT Hub Device SDK~
デバイス側のアプリケーションの構築を容易にする。

-Azure IoT Hub Service SDK~
クラウド・サービス側のアプリケーションの構築を容易にする。

-Azure IoT Hub 管理 SDK~
サブスクリプション内の IoT Hub管理アプリケーションの構築を容易にする。

-Azure Provisioning SDK~
DPSを使用してデバイスをIoT Hub にプロビジョニング

*詳細 [#nd01d4e2]

**スケール調整 [#x5b7e1f7]
**機能 [#z26c9c7a]

***スケール調整 [#x5b7e1f7]
毎秒数百万のイベントに対応するようにスケーリングします。
-数百万のデバイスの同時接続
-数百万のIoTデバイスの同時接続
-および IoT ワークロードをサポート

**通信のセキュリティ保護 [#s2986cfe]
-セキュリティ保護された通信チャネルを使用
-デバイスごとの認証(安全に接続・管理)
-デバイスのアクセス制御、接続制御
-IoT Hub Device Provisioning Serviceで、~
デバイスを自動的にプロビジョニング
***クォータと制限 [#k4bd9964]
DoS攻撃からの保護するため、サブスクリプションごとの IoT ハブの数を制限

-複数の認証の種類
--SAS トークン ベースの認証。
--X.509 証明書認証。
--X.509 CA 認証。
https://docs.microsoft.com/ja-jp/azure/azure-subscription-service-limits

**メッセージ ルーティング機能 [#lc303512]
-コードのないルーティング ルール
-ハブがデバイスのテレメトリを送信する場所を制御
***IoTデバイスの構成と制御 [#m422f2bf]
-IoTデバイス毎、またはIoTデバイス共通特性に基づいて、IoTデバイスの状態を設定。
-IoTデバイスのデバイス メタデータと状態情報を保存、同期、照会。
-IoTデバイスで報告された状態の変化に自動的に対応。

-ライフサイクル
--計画
--プロビジョニング
--構成
--監視・制御
--廃棄

***[[ルーティング>#cccf379e]] [#h17a67a8]

**ルーティング [#cccf379e]

***メッセージ・ルーティング [#lc303512]
-コードのないルール・ベースのルーティング
-HubがIoTデバイスのテレメトリ(稼働データ)を送信する場所を制御
-複数のエンドポイントにメッセージをルーティング
--[[ストレージ・コンテナ>Azureのストレージ]]
--[[Azure Event Hubs]]
--[[Azure Service Bus]]

**Azure サービス統合 [#d10d16f0]
-Azure Event Grid~
高信頼性 / スケーラブル / 安全な方法で重要なイベントに迅速に対応
***イベント・ルーティング [#qa459943]
[[Azure Event Grid]]でのルーティング

-Azure Stream Analytics~
デバイスからのデータ ストリーミングに対してリアルタイムの分析計算を実行
-利用統計情報、デバイスの作成、削除、接続、切断のIoT Hub イベントに対応
--Microsoft.Devices.DeviceCreated~
デバイスが IoT Hub に登録されると発行される。
--Microsoft.Devices.DeviceDeleted~
デバイスが IoT Hub から削除されると発行される。
--Microsoft.Devices.DeviceConnected~
デバイスが IoT Hub に接続されると発行される。
--Microsoft.Devices.DeviceDisconnected~
デバイスが IoT Hub から切断されると発行される。
--Microsoft.Devices.DeviceTelemetry~
デバイス テレメトリのメッセージが IoT Hub に送信されると発行される。

-Azure Machine Learning~
機械学習と AI モデルをソリューション
-[[メッセージ・ルーティング>#lc303512]]より[[多様なエンドポイントの種類>Azure Event Grid#g5f8737e]]をサポート

-Azure Logic Apps~
ビジネス プロセスを自動化
**セキュリティ [#s2986cfe]
[[参照アーキテクチャ>Microsoft Azure IoT#v12b5062]]に準拠
-セキュリティ保護された通信チャネルを使用
-IoTデバイスを自動的にプロビジョニング
-IoTデバイス毎の認証(安全に接続・管理)
-IoTデバイスのアクセス制御、接続制御

**デバイスの構成と制御 [#m422f2bf]
-デバイス毎、またはデバイス共通特性に基づいて、デバイスの状態を設定。
-デバイスのデバイス メタデータと状態情報を保存、同期、照会します。
-デバイスで報告された状態の変化に自動的に対応します。
***認証・認可 [#ub31fff5]
-以下の情報を使用して、アクセス制御を行う。

**クォータと制限 [#k4bd9964]
DoS攻撃からの保護するため、サブスクリプションごとの IoT ハブの数を制限
--デバイスからIoT Hubにアクセスする場合~

https://docs.microsoft.com/ja-jp/azure/azure-subscription-service-limits
---共有アクセスポリシーでアクセス制御

**デバイスの接続 [#h7f2b238]
---デバイス毎のセキュリティ資格情報でアクセス制御~
・対称キー~
・自己署名証明書~
・CA署名証明書

--ヒトやサービスからIoT Hubにアクセスする場合~
共有アクセスポリシーでアクセス制御

-共有アクセスポリシーとデバイス毎のセキュリティ資格情報の違い

--共有アクセスポリシー
---ヒトやサービスが使用する。
---ポリシー名とアクセス許可を登録する。

--デバイス毎のセキュリティ資格情報
---デバイスが使用する。
---デバイスIDのみ登録(アクセス許可は登録しない)。

-共有アクセスポリシーと対称キーは[[SASトークン>トークン#w01b1c2d]]に変換する。
--SDKを使わずに、接続するには[[SASトークン>トークン#w01b1c2d]]を渡す必要がある。
--[[SASトークン>トークン#w01b1c2d]]は、以下をSHA256で署名して生成する。
---共有アクセスポリシーの場合~
・共有アクセスポリシー名~
・共有アクセスキー~
・リソースURI~
・有効期限
---対称キーからの場合~
・対称キー~
・リソースURI~
・有効期限

***プロビジョニング [#u70a4b0d]
-[[Azure IoT Hub DPS>Azure IoT Hub Device Provisioning Service]]
-[[Device Update for IoT Hub>Microsoft Azure IoT#o6983d39]]

**IoTデバイスの接続 [#h7f2b238]
IoT Hub と対話するアプリケーションを作成できる。

***プラットフォーム [#s6f75c05]
-Linux
-Windows
-RTOS
-OS
--Linux
--Windows
--RTOS

-ソリューション、開発スイート
--[[Azure Sphere]]
--Azure RTOS

***プログラミング言語 [#t7ee1ed5]
-C
-C#
-Java
-Python
-Node.js

***[[通信プロトコル>IoT関連の通信プロトコル]] [#g676757f]
-HTTPS

-AMQP
-AMQP over WebSocket

-MQTT
-WebSocket 経由の MQTT

-WebSocket
--AMQP over WebSocket
--MQTT over WebSocket

-カスタム プロトコル
--[[Azure IoT Edge]]でプロトコル変換するフィールド ゲートウェイを作成。
--[[Microsoft Azure IoT Protocol Gateway>https://github.com/Azure/azure-iot-protocol-gateway/blob/master/README.md]]のコードをカスタマイズ

**[[フロントエンド>#l3d3b1f3]]・[[バックエンド>#k3a2bc2b]] [#gb473504]
Hubに接続される[[フロントエンド>#l3d3b1f3]]・[[バックエンド>#k3a2bc2b]]

***[[フロントエンド>Microsoft Azure IoT#c319c129]] [#l3d3b1f3]

***[[バックエンド>Microsoft Azure IoT#r0fe5a00]] [#k3a2bc2b]

**Endpoint [#w80ab252]
Azure IoT Hubの「Hub」とは、以下の

-[[Device Endpoint>#zc944d5d]]
-[[Service Endpoint>#sada5bf3]]

を繋ぐ「Hub」と言う所から来ているらしい。

***Device Endpoint(Device ⇔ Hub) [#zc944d5d]
デバイス側([[フロントエンド>#l3d3b1f3]]

-D2C Endpoint~
D2C メッセージの送信([[Azure Event Hubs]]互換
--時系列テレメトリとアラート
--ファイルのアップロード
--デバイス ツインの報告されるプロパティ

-C2D Endpoint~
C2D メッセージの受信(キューから受信)

-ファイル通知の受信~
ファイルのアップロード結果の通知を受信

-ダイレクト メソッド~
要求 / 応答型パターンに従うダイレクト(疑似Push)メソッド(の要求側)

-カスタム エンドポイント~
[[特定のバックエンドにルーティングされる>#lc303512]]。

※ 実装する際は、言語毎に用意された[[Azure IoT Hub Device SDK>#a74dc7e5]]を使用する。

***Service Endpoint(Hub ⇔ Service) [#sada5bf3]
クラウド・サービス側([[バックエンド>#k3a2bc2b]])

-D2C Endpoint~
D2C メッセージの受信
--時系列テレメトリとアラート
--ファイルのアップロード
--デバイス ツインの報告されるプロパティ

-C2D Endpoint~
C2D メッセージの送信(キューに送信)

-ファイル通知の送信~
ファイルのアップロード結果の通知を送信

-ダイレクト メソッド~
要求 / 応答型パターンに従うダイレクト(疑似Push)メソッド(の応答側)

-カスタム エンドポイント~
[[特定のバックエンドにルーティングされる>#lc303512]]。

※ 実装する際は、言語毎に用意された[[Azure IoT Hub Service SDK>#a74dc7e5]]を使用する。

***Management Endpoint [#w8559b78]
-デバイス ID の管理
--HTTPS REST エンドポイント
--デバイス ID の管理 (作成、取得、更新、削除) 

-デバイス ツインの管理
--HTTPS REST エンドポイント
--デバイス ツインのクエリと更新 (タグとプロパティの更新) を実行

-ジョブの管理
--HTTPS REST エンドポイント
--ジョブのクエリと管理を実行

※ 実装する際は、言語毎に用意された[[Azure IoT Hub 管理 SDK>#a74dc7e5]]を使用する。

**メッセージング パターンとプロトコルまとめ [#n962e215]

***マトリックス [#gf5dab3f]
|名称|用途|方向|頻度|プロトコル|h
|D2Cメッセージ|Cloudへの送信|上り|高|すべてのプロトコル|
|C2Dメッセージ|Deviceへの送信|下り|低|すべてのプロトコル|
|Desired プロパティ|Twinプロパティの要求|下り|中|MQTT または AMQP|
|Reported プロパティ|Twinプロパティの報告|上り|中|MQTT または AMQP|
|ダイレクトメソッド|双方向通信|下上|高|方向によって異なる。|
|ファイルアップロード|大容量の送信|上り|低|HTTPが必要|

***ポイント [#i93cf920]
-基本的に全て単方向通信だが、

-ダイレクト メソッドのみ、~
要求 / 応答型パターンに従う双方向通信~
(下りのHTTPから始まり、上りは全プロトコルに対応)

-WebSocketを使用できる。

--下りは基本的にWebSocketで実装されている。

--例外的に、HTTPのC2Dは疑似Pushで非効率。

--HTTP プロキシ 環境下ではWebSocketで接続可能。~
(WebSocket、MQTT / AMQP over WebSocket )

-ファイルアップロードは以下から構成される。
--ストレージへのアップロード(HTTP)
--アップロードの完了通知(全プロトコル)

**[[チュートリアル>Azure IoT Hubチュートリアル]] [#y2759ab9]

*参考 [#a2ff8f19]
-IoT Hubとは?Azureサービス群での位置づけや特徴から実際の使い方~
までを紹介します|Microsoft Azureコラム|東京エレクトロンデバイス~
https://esg.teldevice.co.jp/iot/azure/column/column14.html

**Qiita [#l6f7a6cd]
-Azure IoT Hubを使ってみた~
https://qiita.com/linyixian/items/e319c5f63f9e57459ac0
**matsujirushi’s blog [#t6fe5dd1]
-Azure IoT HubのSASトークンについて~
https://matsujirushi.hatenablog.jp/entry/2017/12/23/233924
-IoT Hubへ接続するときの認証やキーなど~
https://matsujirushi.hatenablog.jp/entry/2019/12/31/113519

-ようやく始める Azure IoT Hub~
https://qiita.com/hydrangeas/items/dc725e6cc6a38717e932
--Azure IoTのチュートリアルをやってみた~
https://qiita.com/sirotosiko/items/ca588e6acad293a118b1
--Azure IoTのチュートリアルをやってみた2~
https://qiita.com/sirotosiko/items/abe0b91f31e18ec3f49e
**Qiita [#ded2bb06]
-Azure IoT HubとEvent HubsとBlob Storageと~
Device Provisioning Serviceを上手に使ってコストを最適化するお話し~
https://qiita.com/mstakaha1113/items/b16357a9e7efe7cda5b6

**Microsoft Azure [#xc9393a5]
-Azure IoT Hubへのサービス側のアクセスにAzure ADが使えるようになりました~
https://qiita.com/mstakaha1113/items/9ac1b4f13550d7915810

**YouTube [#h87872b5]
-[[チュートリアル>Azure IoT Hubチュートリアル#ub607655]]

**microsoft.com [#tbdb616e]

***Microsoft Azure [#xc9393a5]
-IoT Hub~
https://azure.microsoft.com/ja-jp/services/iot-hub/

-価格 - IoT Hub~
https://azure.microsoft.com/ja-jp/pricing/details/iot-hub/

**Microsoft Docs [#b3a9a444]
***Microsoft Docs [#b3a9a444]
-Azure IoT Hub のドキュメント - チュートリアル、API リファレンス~
https://docs.microsoft.com/ja-jp/azure/iot-hub/

--概要 > Azure IoT Hub とは~
https://docs.microsoft.com/ja-jp/azure/iot-hub/about-iot-hub
--クイック スタート
--チュートリアル
--概念
--概要 > IoT の概念と Azure IoT Hub~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-concepts-and-iot-hub
--[[クイック スタート>Azure IoT Hubチュートリアル#x1817894]]~
--[[チュートリアル>Azure IoT Hubチュートリアル#g4976320]]~
--[[操作方法ガイド>Azure IoT Hubチュートリアル#zfeb2f7c]]~
--~
...

**[[Azure IoT Edge]] [#rd149fe5]
-概念

--開発
---IoT Hub エンドポイント~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-endpoints
---device-to-cloud 通信に関するガイダンス~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-d2c-guidance
---cloud-to-device 通信に関するガイダンス~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-c2d-guidance
---IoT Hub のデバイス ツインの理解と使用~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-device-twins
---IoT Hub のモジュール ツインの理解と使用~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-module-twins
---IoT Hub からのダイレクト メソッドの呼び出しについて~
https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-direct-methods
---IoT Hub を使用したファイルのアップロード~
https://learn.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-file-upload
---Azure IoT Hub と Event Grid~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-event-grid

--管理
---Azure IoT Hub のスケーリング~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-scaling

--アクセス制御
---開発者ガイド > IoT Hub のアクセス制御とセキュリティ~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-security

--Azure IoT Hub SDK~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-sdks

--メッセージング
---Azure IoT Hub メッセージについて~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-messaging
---Azure IoT Hub メッセージの形式について~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-messages-construct
---Azure IoT Hub の非テレメトリ イベント スキーマ~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-non-telemetry-event-schema
---Azure IoT Hub の cloud-to-device メッセージの理解~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-messages-c2d
---Azure IoT Hub 組み込みエンドポイントについて~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-messages-read-builtin

--メッセージ ルーティング
---Azure IoT Hub メッセージ ルーティングについて~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-messages-d2c
---Azure IoT Hub のカスタム エンドポイントについて~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-messages-read-custom
---Azure IoT Hub メッセージ ルーティングでのクエリ~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-devguide-routing-query-syntax
---IoT Hub における Event Grid とルーティングの比較~
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-event-grid-routing-comparison

-[[操作方法ガイド>Azure IoT Hubチュートリアル#bac9b6b6]]

***Learn | Microsoft Docs [#u7c2c1a6]
-AI エッジ エンジニア~
https://docs.microsoft.com/ja-jp/learn/paths/ai-edge-engineer/
-Azure IoT Hub の概要~
https://docs.microsoft.com/ja-jp/learn/modules/introduction-to-iot-hub/

----
Tags: [[:クラウド]], [[:Azure]], [[:IoT]]
Tags: [[:クラウド]], [[:IoT]], [[:Azure]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS