適用対象: IoT Edge 1.5
重要
IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。
この記事では、IoT Edge を使用する場合の制限について説明します。
制限
ゲートウェイ階層内の子の数
ゲートウェイ階層内の各 IoT Edge 親デバイスには、既定で最大 100 個の子デバイスを接続できます。
ただし、入れ子になったトポロジ内の各 IoT Edge デバイスが、接続されている各クライアント (デバイスまたはモジュール) に代わって親 EdgeHub (または IoT Hub) への個別の論理接続と、自身のための 1 つの接続を開く必要がある点を認識することが重要です。 そのため、各レイヤーの接続は集約されず、追加されます。
たとえば、1 つのレイヤー L4 に 2 つの IoT Edge 子デバイスがあり、それぞれに 100 個のクライアントがある場合、上のレイヤー L5 の親 IoT Edge デバイスは、L4 から合計 202 の着信接続を持つことになります。
この制限を変更するには、親デバイスの edgeHub モジュールで Maxconnectedclients 環境変数を設定します。 ただし、IoT Edge で、IoT Hub ツインのサイズ制限のためにクライアントの数が数百を超えた場合、ツインの報告プロパティでその状態を報告する場合に問題が発生する可能性があります。 一般に、この環境変数を変更して制限を増やす場合は注意してください。
詳細については、「ゲートウェイ階層の作成」を参照してください。
必要なプロパティのサイズ
IoT Hubには、次の制限が適用されます。
- タグの値に対する 8 KB のサイズ制限。
-
properties/desired
とproperties/reported
の両方の値に対する 32 KB のサイズ制限。
詳細については、「モジュール ツインのサイズ」を参照してください。
入れ子になった階層レイヤーの数
IoT Edge デバイスでは、その下に子としてリンクする IoT Edge デバイスのレイヤーは 5 層までとなっています。
詳細については、「親と子のリレーションシップ」を参照してください。
デプロイ内のモジュールの数
IoT Hub の自動デプロイには、次の制限があります。
- デプロイあたり 50 モジュール
- この制限は、32 kb のモジュール IoT Hubサイズの制限に置き換えられます。 詳細については、「カスタム モジュールを使用する場合はツイン サイズの制限に注意する」を参照してください。
- 100 デプロイ (有料の SKU ハブあたりの多層デプロイを含む)。
- 無料の SKU ハブあたり 10 デプロイ。
制限
証明書
IoT Edge 証明書には、次の制限があります。
- 共通名 (CN) は、IoT Edge デバイス上の構成ファイルで使用される hostname と同じであってはいけません。
- クライアントが IoT Edge に接続するために使用する名前を、Edge CA 証明書で使用されている共通名と同じにすることはできません。
詳細については、「デバイスセキュリティの証明書」を参照してください。
TPM の構成証明
デバイス プロビジョニング サービスで TPM 構成証明を使用する場合は、TPM 2.0 を使用する必要があります。
詳細については、「TPM 構成証明 デバイスの要件」を参照してください。
ルーティング構文
IoT Edge と IoT Hub のルーティング構文はほぼ同じです。 サポートされているクエリ構文:
サポートされていないクエリ構文:
再起動ポリシー
モジュールの on-unhealthy
の値として on-failure
と restartPolicy
を使用することは避けてください。これらは未実装であるため、再起動が開始されません。 実装されている再起動ポリシーは never
と always
のみです。
異常な IoT Edge モジュールを自動的に再起動するために推奨される方法は、こちらの回避策に書かれています。 失敗した正常性チェックを処理するには、モジュールの Healthcheck
の createOptions
プロパティを構成します。
トラブルシューティング ログ
Azure portal からモジュール ログにアクセスすると、モジュールの更新中に遅延が発生する可能性があります。
Azure portal の [IoT Edge] で、お使いのデバイスの [トラブルシューティング] タブを表示すると、"ログを取得できません。 要求は状態コード 504 で失敗しました。" というメッセージが表示されることがあります。要求がタイムアウトして、すべてのモジュールについて、[ランタイムの状態] が "エラー" と表示される可能性があります。
ログを表示するこの機能は、やがて再開されます。 アクセスが遅延する理由は、edgeAgent がおそらくモジュールの起動でビジー状態になっているので同時にログを取得できないためです。 ログは Moby/Docker からプルされるため、このプロセスには時間がかかります。そして edgeAgent がビジー状態の場合には、要求がタイムアウトする可能性があります。
ファイル アップロード
IoT Hubは、モジュール ID ではなく、デバイス ID のファイル アップロード API のみをサポートします。 IoT Edgeはモジュールのみを使用しているため、ファイルのアップロードは IoT Edge でネイティブにサポートされていません。
IoT Hub を使用してファイルをアップロードする方法の詳細については、「IoT Hub を使用したファイルのアップロード」を参照してください。
Edge エージェントの環境変数
config.toml
のような edgeAgent
の環境変数を hostname
で変更しても、コンテナーが既に存在する場合は、edgeAgent
に適用されません。 これらの変更を適用するには、edgeAgent
コマンドを使って sudo docker rm -f edgeAgent
コンテナーを削除します。 IoT Edge デーモンによってコンテナーが再作成され、約 1 分で edgeAgent が開始されます。
NTLM 認証
NTLM 相互認証はサポートされていません。 NTLM 認証で構成されたプロキシは機能しません。
IoT Edge では、プロキシ認証のサポートが制限されています。 ユーザー名とパスワードの認証用に構成されたプロキシのみがサポートされます。
次のステップ
詳細については、IoT Hub の制限に関するページを参照してください。