IoT ハブをリンクおよび管理する方法

Azure IoT Hub デバイス プロビジョニング サービス (DPS) を使用すると、1 つ以上の IoT ハブにデバイスをプロビジョニングすることができます。 DPS で IoT ハブにデバイスをプロビジョニングするには、その IoT ハブを DPS インスタンスにリンクする必要があります。 リンクすると、割り当てポリシーで IoT ハブを使用できます。 割り当てポリシーは、DPS でデバイスを IoT ハブに割り当てる方法を決定します。 この記事では、IoT ハブをリンクして DPS インスタンスで管理する方法について説明します。

リンクされた IoT ハブと割り当てポリシー

DPS では、このサービスにリンクされた IoT Hub にのみデバイスをプロビジョニングできます。 IoT ハブを DPS インスタンスにリンクすると、IoT ハブのデバイス レジストリに対する読み取りおよび書き込みアクセス許可が、サービスに付与されます。 これらのアクセス許可を使うと、DPS によってデバイス ID が登録され、デバイス ツインに初期構成が設定されます。 リンクされた IoT Hub は、任意の Azure リージョン内に置くことができます。 お使いの DPS インスタンスに他のサブスクリプションのハブをリンクすることもできます。

IoT ハブは、DPS にリンクされると、割り当てに参加できるようになります。 割り当てに参加するかどうかとその方法は、プロビジョニングするデバイスの登録の設定と、リンクされた IoT ハブ自体の設定によって異なります。

次の設定は、DPS でのリンクされた IoT ハブの使用方法を制御します。

  • 接続文字列: リンクされた IoT ハブに接続するために DPS で使用される IoT Hub 接続文字列を設定します。 接続文字列は、IoT ハブの共有アクセス ポリシーのいずれかに基づきます。 DPS には、IoT ハブに対する RegistryWrite および ServiceConnect のアクセス許可が必要です。 これらのアクセス許可を持つ共有アクセス ポリシー用の接続文字列を指定する必要があります。 IoT Hub の共有アクセス ポリシーの詳細については、IoT Hub のアクセス制御とアクセス許可に関するページを参照してください。

  • 割り当ての重み: DPS で、一連の IoT ハブ間でデバイスの割り当てをハッシュするときに、IoT ハブが選択される可能性を決定します。 値は、1 から 1000 の範囲で設定できます。 既定値は 1 (または null) です。 値が大きいほど、IoT ハブが選択される確率が高くなります。

  • 割り当てポリシーの適用: IoT ハブが割り当てポリシーに参加するかどうかを設定します。 既定値は、[はい] (true) です。 [いいえ] (false) に設定すると、デバイスは IoT ハブに割り当てられません。 登録で IoT ハブを選択することもできますが、その IoT ハブは割り当てに参加しません。 この設定を使用して、IoT ハブを一時的または永続的に割り当てに参加させないようにすることができます。たとえば、許可された数のデバイスに近づいている場合などがあります。

DPS 割り当てポリシーと、リンクされた IoT ハブがそれらに参加する方法については、割り当てポリシーの管理に関するページを参照してください。

リンクされた IoT ハブを追加する

IoT ハブを DPS インスタンスにリンクすると、その IoT ハブは割り当てに参加できるようになります。 サブスクリプション内または外にある IoT ハブを追加できます。 IoT ハブをリンクしても、それを既存の登録での割り当てに使用できる場合と使用できない場合があります。

  • 割り当てポリシーを適用する IoT ハブを明示的に設定しない登録の場合、新しくリンクされた IoT ハブは即座に割り当てに参加します。

  • 割り当てポリシーを適用する IoT ハブを明示的に設定する登録の場合、新しい IoT ハブを割り当てに参加させるためには、手動またはプログラムで登録の設定に追加する必要があります。

制限事項

Azure portal では、DPS インスタンスの左側のメニューから、または登録の作成時または更新時に登録から IoT ハブをリンクできます。 どちらの場合も、IoT ハブのスコープは、(登録だけでなく) DPS インスタンスに設定されます。

Azure portal で IoT ハブを DPS インスタンスにリンクするには、次の手順を行います。

  1. DPS インスタンスの左側のメニューで、[リンクされた IoT ハブ] を選択します。

  2. ページの最上部で [追加] を選択します。

  3. [IoT ハブへのリンクを追加する] ページで、IoT ハブを含むサブスクリプションを選択し、[IoT ハブ] の一覧から IoT ハブの名前を選択します。

  4. IoT ハブを選択した後、IoT ハブに接続するために DPS で使用されるアクセス ポリシーを選択します。 [アクセス ポリシー] の一覧には、RegistryWrite および ServiceConnect のアクセス許可が定義されており、選択した IoT ハブに対して定義されているすべての共有アクセス ポリシーが表示されます。 既定値は、iothubowner ポリシーです。 使用するポリシーを選択します。

  5. [保存] を選択します。

登録を作成または更新する場合、登録の [新しい IoT ハブをリンクする] ボタンを使用できます。 上記と同じページと選択肢が表示されます。 リンクされたハブを保存すると、DPS インスタンスで使用できるようになり、登録から選択することもできます。

Note

Azure portal では、リンクされた IoT ハブを追加するときに、"割り当ての重み" と "割り当てポリシーの適用" の設定を指定することはできません。 代わりに、IoT ハブがリンクされた後、これらの設定を更新できます。 詳細については、「リンクされた IoT ハブを更新する」を参照してください。

IoT ハブを DPS インスタンスにリンクするには、az iot dps linked-hub create Azure CLI コマンドを使用します。

たとえば、次のコマンドは、iothubowner 共有アクセス ポリシーの接続文字列を使用して、MyExampleHub という名前の IoT ハブをリンクします。 このコマンドでは、"割り当ての重み" と "割り当てポリシーの適用" の設定は既定値のままですが、必要に応じて、これらの設定の値を指定できます。

az iot dps linked-hub create --dps-name MyExampleDps --resource-group MyResourceGroup --connection-string "HostName=MyExampleHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XNBhoasdfhqRlgGnasdfhivtshcwh4bJwe7c0RIGuWsirW0=" --location westus

DPS では、DPS リソースの作成または更新 REST API、Resource Manager テンプレートDPS Management SDK を使用した IoT ハブのリンクもサポートされています。

リンクされた IoT ハブを更新する

リンクされた IoT ハブの設定を更新して、割り当ての重み、割り当てポリシーを適用できるかどうか、DPS で接続に使用される接続文字列を変更できます。 IoT ハブの設定を更新すると、IoT ハブが登録で指定されているか、または既定で使用されているかに関係なく、変更はすぐに有効になります。

Azure portal を使用して、リンクされた IoT ハブを更新する

Azure portal では、"割り当ての重み" と "割り当てポリシーの適用" の設定を更新できます。

Azure portal を使用して、リンクされた IoT ハブの設定を更新するには、次の手順を行います。

  1. DPS インスタンスの左側のメニューで、[リンクされた IoT ハブ] を選択し、一覧から IoT ハブを選択します。

  2. [リンクされた IoT ハブの詳細] ページで、次の操作を行います。

    Screenshot that shows the linked IoT hub details page.

    • [割り当ての重み] スライダーまたはテキスト ボックスを使用して、1 から 1000 の範囲で重みを選択します。 既定値は 1 です。

    • [割り当てポリシーの適用] スイッチを設定して、リンクされた IoT ハブを割り当てに含める必要があるかどうかを指定します。

  3. 設定を保存します。

Note

Azure portal から、IoT ハブに接続するために DPS で使用される接続文字列を更新することはできます。 代わりに、Azure CLI を使用して接続文字列を更新するか、リンクされた IoT ハブを DPS インスタンスから削除して再リンクすることができます。 詳細については、「リンクされた IoT ハブのキーを更新する」を参照してください。

Azure CLI を使用して、リンクされた IoT ハブを更新する

Azure CLI を使用して、"割り当ての重み"、"割り当てポリシーの適用"、"接続文字列" の設定を更新できます。

"割り当ての重み" または "割り当てポリシーの適用" の設定を更新するには、az iot dps linked-hub update コマンドを使用します。 たとえば、次のコマンドは、リンクされた IoT ハブの割り当ての重みと割り当てポリシーの適用を設定します。

az iot dps linked-hub update --dps-name MyExampleDps --resource-group MyResourceGroup --linked-hub MyExampleHub --allocation-weight 2 --apply-allocation-policy true

リンクされた IoT ハブの接続文字列を更新するには、az iot dps update コマンドを使用します。 使用する IoT ハブ共有アクセス ポリシーの接続文字列で --set パラメーターを使用できます。 詳細については、「リンクされた IoT ハブのキーを更新する」を参照してください。

DPS では、DPS リソースの作成または更新 REST API、Resource Manager テンプレートDPS Management SDK を使用した IoT ハブの更新もサポートされています。

リンクされた IoT ハブを削除する

リンクされた IoT ハブを DPS インスタンスから削除すると、その後の登録で設定できなくなります。 ただし、既存の登録の割り当てから削除される場合と削除されない場合があります。

  • 割り当てポリシーを適用する IoT ハブを明示的に設定しない登録の場合、リンクされた IoT ハブを削除すると、割り当てに使用できなくなります。

  • 割り当てポリシーを適用する IoT ハブを明示的に設定する登録の場合、IoT ハブを割り当ての参加から削除するには、手動またはプログラムでその IoT ハブを登録の設定から削除する必要があります。 これを行わないと、デバイスが登録を通じてプロビジョニングしようとしたときにエラーが発生します。

Azure portal を使用して、リンクされた IoT ハブを削除する

Azure portal で、リンクされた IoT ハブを DPS インスタンスから削除するには、次の手順を行います。

  1. DPS インスタンスの左側のメニューで、[リンクされた IoT ハブ] を選択します。

  2. IoT ハブの一覧で、削除する IoT ハブの横にあるチェック ボックスをオンにするか、削除する IoT ハブを選択します。 次に、ページの上部にある [削除]を選択し、プロンプトが表示されたら、選択内容を確認します。

Azure CLI を使用して、リンクされた IoT ハブを削除する

リンクされた IoT ハブを DPS インスタンスから削除するには、az iot dps linked-hub delete コマンドを使用します。 たとえば、次のコマンドは、MyExampleHub という名前の IoT ハブを削除します。

az iot dps linked-hub delete --dps-name MyExampleDps --resource-group MyResourceGroup --linked-hub MyExampleHub

DPS では、DPS リソースの作成または更新 REST API、Resource Manager テンプレートDPS Management SDK を使用した、DPS インスタンスからの IoT ハブの削除もサポートされています。

リンクされた IoT ハブのキーを更新する

DPS にリンクされている IoT ハブの対称キーをローテーションまたは更新することが必要な場合があります。 この場合、リンクされた IoT ハブの DPS の接続文字列の設定も更新する必要があります。 IoT ハブのキーを更新してから、そのキーに基づいて新しい接続文字列で DPS インスタンスが更新されるまでの間、IoT ハブへのプロビジョニングが失敗することに注意してください。 このため、Azuer CLI を使用してキーを更新することをお勧めします。この方法では、リンクされたハブの接続文字列を直接更新できるためです。 Azure portal を使用すると、接続文字列を更新するために、IoT ハブを DPS インスタンスから削除して再リンクする必要があります。

Azure portal を使用してキーを更新する

Azure portal を使用する場合、リンクされた IoT ハブの接続文字列の設定を更新することはできません。 代わりに、リンクされた IoT ハブを DPS インスタンスから削除して再度追加する必要があります。

Azure portal で、リンクされた IoT ハブの対称キーを更新するには、次の手順を行います。

  1. Azure portal の DPS インスタンスの左側のメニューで、キーを更新する IoT ハブを選択します。

  2. [リンクされた IoT ハブの詳細] ページにある "割り当ての重み" と "割り当てポリシーの適用" の値をメモします。これらの値は、後で IoT ハブを DPS インスタンスに再リンクするときに必要になります。 次に、[リソースの管理] を選択して IoT ハブに移動します。

  3. IoT ハブの左側のメニューにある [セキュリティ設定] の下で、[共有アクセス ポリシー] を選択します。

  4. [共有アクセス ポリシー][共有アクセス ポリシーの管理] の下で、リンクされた IoT ハブに接続するために DPS インスタンスで使用されるポリシーを選択します。

  5. ページの上部で、[主キーの再生成][セカンダリ キーの再生成]、または [キーのスワップ] を選択し、プロンプトが表示されたら選択内容を確認します。

  6. DPS インスタンスに戻ります。

  7. IoT ハブを削除する」の手順に従って、IoT ハブを DPS インスタンスから削除します。

  8. IoT ハブをリンクする」の手順に従って、ポリシーの新しい接続文字列を使用して IoT ハブを DPS インスタンスに再リンクします。

  9. 割り当ての重みと割り当てポリシーの適用の設定を元に戻す必要がある場合、手順 2 で保存した値を使用して、「リンクされた IoT ハブを更新する」の手順に従います。

Azure CLI を使用してキーを更新する

Azure CLS を使用して、リンクされた IoT ハブの対称キーを更新するには、次の手順を行います。

  1. az iot hub policy renew-key コマンドを使用して、IoT ハブの共有アクセス ポリシーの対称キーをスワップまたは再生成します。 たとえば、次のコマンドは、IoT ハブの iothubowner 共有アクセス ポリシーの主キーを更新します。

    az iot hub policy renew-key --hub-name MyExampleHub --name owner --rk primary
    
  2. az iot hub connection-string show コマンドを使用して、共有アクセス ポリシーの新しい接続文字列を取得します。 たとえば、次のコマンドは、前のコマンドで主キーが再生成された iothubowner 共有アクセス ポリシーのプライマリ接続文字列を取得します。

    az iot hub connection-string show --hub-name MyExampleHub --policy-name owner --key-type primary
    
  3. az iot dps linked-hub list コマンドを使用して、DPS インスタンスのリンクされた IoT ハブのコレクション内での IoT ハブの位置を見つけます。 たとえば、次のコマンドは、前のコマンドで主キーが再生成された owner 共有アクセス ポリシーのプライマリ接続文字列を取得します。

    az iot dps linked-hub list --dos-name MyExampleDps
    

    出力には、DPS インスタンスによって保守されているリンクされた IoT ハブのテーブル内での、接続文字列を更新するリンクされた IoT ハブの位置が表示されます。 この場合、リスト内で最初の IoT ハブ (MyExampleHub) です。

    [
    {
        "allocationWeight": null,
        "applyAllocationPolicy": null,
        "connectionString": "HostName=MyExampleHub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=****",
        "location": "centralus",
        "name": "MyExampleHub.azure-devices.net"
    },
    {
        "allocationWeight": null,
        "applyAllocationPolicy": null,
        "connectionString": "HostName=MyExampleHub-2.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=****",
        "location": "centralus",
        "name": "NyExampleHub-2.azure-devices.net"
    }
    ]
    
  4. az iot dps update コマンドを使用して、リンクされた IoT ハブの接続文字列を更新します。 --set パラメーターと、properties.iotHubs[] テーブル内のリンクされた IoT ハブの位置を使用して、対象の IoT ハブを指定します。 たとえば、次のコマンドは、前のコマンドで最初に返された MyExampleHub の接続文字列を更新します。

    az iot dps update --name MyExampleDps --set properties.iotHubs[0].connectionString="HostName=MyExampleHub-2.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=NewTokenValue"
    

次のステップ