割り当てポリシーを使用して IoT ハブ間でデバイスをプロビジョニングする方法
Azure IoT Hub Device Provisioning Service (DPS) では、1 つ以上の IoT ハブにデバイスを割り当てる方法を決定する組み込みの割り当てポリシーがいくつかサポートされています。 DPS にはカスタム割り当てポリシーのサポートも含まれており、IoT シナリオで組み込みポリシーによって提供されない機能が必要な場合に、独自の割り当てポリシーを作成して使用できます。
この記事は、DPS 割り当てポリシーの使用方法と管理方法を理解するのに役立ちます。
割り当てポリシーを理解する
割り当てポリシーによって、DPS がデバイスを IoT ハブに割り当てる方法が決まります。 各 DPS インスタンスには既定の割り当てポリシーがありますが、このポリシーは登録時に設定する割り当てポリシーでオーバーライドできます。 DPS インスタンスにリンクされた IoT ハブのみが割り当てに参加できます。 リンクされた IoT ハブが割り当てに参加するかどうかは、デバイスがプロビジョニングする設定によって異なります。
DPS では、次の 4 つの割り当てポリシーがサポートされています。
加重が均等に分布: デバイスは、重み付けされたハッシュを使って IoT ハブにプロビジョニングされます。 既定では、リンクされた IoT ハブは割り当ての重み設定が同じなので、デバイスがそれらにプロビジョニングされる可能性は等しくなります。 割り当てられる可能性を増減するために、IoT ハブの割り当ての重みを調整できます。 均等加重分布は、DPS インスタンスの既定の割り当てポリシーです。 デバイスを 1 つの IoT Hub にのみプロビジョニングする場合は、このポリシーを使うことをお勧めします。
最短待機時間: デバイスに対する待機時間が最も短い IoT Hub にデバイスをプロビジョニングします。 複数の IoT ハブで最短待機時間が提供される場合、DPS により、構成した割り当ての重みに基づいて、それらのハブ全体でデバイスがハッシュ化されます。
静的な構成: デバイスは、1 つの IoT ハブ (登録時に指定する必要があります) にプロビジョニングされます。
カスタム (Azure 関数を使用): カスタム割り当てポリシーを使用すると、デバイスを IoT ハブに割り当てる方法をより細かく制御できます。 これを達成するには、Azure Functions でホストされているカスタムの Webhook を使い、デバイスを IoT ハブに割り当てます。 Webhook を呼び出すために、DPS からデバイスと登録に関するすべての関連情報が提供されます。 デバイスのプロビジョニングに使われる IoT ハブと初期デバイス ツイン (省略可能) が Webhook から返されます。 カスタム ペイロードは、デバイス間で受け渡しすることもできます。 詳細については、「 カスタム割り当てポリシーを理解する」を参照してください。 DPS インスタンスの既定のポリシーとして設定することはできません。
Note
上記の一覧は、Azure ポータルに表示される割り当てポリシーの名前を示しています。 DPS REST API、Azure CLI、DPS サービス SDK を使用して割り当てポリシーを設定する場合、ハッシュ、geo 待機時間、静的、カスタムと呼ばれます。
リンクされた IoT ハブには、割り当てにどのように参加するかを制御する 2 つの設定があります。
割り当ての重み: 複数の IoT ハブを含む割り当てポリシーに参加する際に、IoT ハブが持つ重みを設定します。 1 から 1000 までの値を指定できます。 既定値は 1 (または null) です。
均等加重分布割り当てポリシーでは、割り当ての重みの値が高い IoT ハブは、重みの値が低い IoT ハブよりも選択される可能性が高くなります。
最短待機時間割り当てポリシーでは、複数の IoT ハブが最短待機時間の要件を満たす場合、割り当ての重みの値は IoT ハブが選択される確率に影響します。
カスタム割り当てポリシーでは、割り当ての重みを使用するかどうか、またどのように使用するかは、Webhook ロジックによって異なります。
割り当てポリシーの適用: IoT ハブが割り当てポリシーに参加するかどうかを指定します。 既定値は、[はい] (true) です。 [いいえ] (false) に設定すると、デバイスは IoT ハブに割り当てられません。 登録で IoT ハブを選択することもできますが、その IoT ハブは割り当てに参加しません。 この設定を使用して、IoT ハブを一時的または永続的に割り当てに参加させないようにすることができます。たとえば、許可された数のデバイスに近づいている場合などがあります。
IoT ハブを DPS インスタンスでリンクして管理する方法の詳細については、「IoT ハブをリンクして管理する」を参照してください。
デバイスが DPS を介してプロビジョニングされると、サービスは次のガイドラインに従ってデバイスを IoT ハブに割り当てます。
登録で割り当てポリシーが指定されている場合は、そのポリシーを使用します。それ以外の場合は、DPS インスタンスの既定の割り当てポリシーを使用します。
登録で 1 つ以上の IoT ハブが指定されている場合は、それらの IoT ハブに割り当てポリシーを適用します。それ以外の場合は、DPS インスタンスにリンクされているすべての IoT ハブに割り当てポリシーを適用します。 割り当てポリシーが静的構成の場合、登録では IoT ハブを指定する必要があることに注意してください。
重要
割り当てポリシーまたは適用する IoT ハブを変更すると、変更はそれ以降のデバイス登録にのみ影響します。 IoT ハブに既にプロビジョニングされているデバイスは影響を受けません。 変更をこれらのデバイスにさかのぼって適用する場合は、再プロビジョニングする必要があります。 詳細については、「デバイスを再プロビジョニングする方法」をご覧ください。
DPS インスタンスの既定の割り当てポリシーを設定する
DPS インスタンスの既定の割り当てポリシーは、登録で割り当てポリシーが指定されていない場合に使用されます。 既定の割り当てポリシーでは、均等加重分布、最短待機時間、静的構成のみがサポートされます。 カスタム割り当てはサポートされていません。 DPS インスタンスが作成されると、既定のポリシーは自動的に均等加重分布に設定されます。
Note
DPS インスタンスの既定の割り当てポリシーとして静的構成を設定する場合、既定のポリシーに依存する登録でリンクされた IoT ハブを指定する必要があります。
Azure portal を使用して、既定の割り当てポリシーを設定する
Azure portal で DPS インスタンスの既定の割り当てポリシーを設定するには:
DPS インスタンスの左側のメニューで、[割り当てポリシーの管理] を選択します。
設定する割り当てポリシーのボタン (最短待機時間、均等加重分布、または静的構成) を選択します。 (カスタム割り当ては、既定の割り当てポリシーではサポートされていません)。
[保存] を選択します。
Azure CLI を使用して既定の割り当てポリシーを設定する
az iot dps update Azure CLI コマンドを使用して、DPS インスタンスの既定の割り当てポリシーを設定します。 --set properties.allocationPolicy
を使用してポリシーを指定します。 たとえば、次のコマンドでは、割り当てポリシーを均等加重分布 (既定値) に設定します。
az iot dps update --name MyExampleDps --set properties.allocationPolicy=hashed
DPS では、DPS リソースの作成または更新 REST API、Resource Manager テンプレート、DPS の管理 SDK を使用した既定の割り当てポリシーの設定もサポートされています。
登録の割り当てポリシーと IoT ハブを設定する
個別登録と登録グループでは、割り当てポリシーと、適用する必要があるリンクされた IoT ハブを指定できます。 登録で割り当てポリシーが指定されていない場合は、DPS インスタンスの既定の割り当てポリシーが使用されます。
いずれの場合にも、次の条件が適用されます。
均等加重分布、最短待機時間、およびカスタム割り当てポリシーの場合、登録では、使用するリンクされた IoT ハブを指定できます。 登録で IoT ハブが選択されていない場合は、DPS インスタンス内のすべてのリンクされた IoT ハブが使用されます。
静的構成の場合、登録では、リンクされた IoT ハブの一覧から 1 つの IoT ハブを指定する必要があります。
個別登録と登録グループの両方に、登録の作成時または更新時に適用する割り当てポリシーとリンクされた IoT ハブを指定できます。
Azure portal を使用して登録割り当てポリシーと IoT ハブを管理する
割り当てポリシーを設定し、Azure portal の登録で IoT ハブを選択するには:
DPS インスタンスの左側のメニューで、[登録の管理] を選択します。
[登録の管理] ページで、次の手順を実行します。
新しい登録を作成するには、[登録グループ] または [個別の登録]タブを選択し、[登録グループの追加] または [個々の登録の追加] を選択します。
既存の登録を更新するには、[登録グループ] タブまたは [個別登録] タブの一覧から選択します。
[登録の追加] ページ (作成時) または [登録の詳細] ページ (更新時) で、[IoT ハブ] タブを選択します。このタブで、登録に適用する割り当てポリシーを選択し、使用する IoT ハブを選択できます。
ドロップダウン リストから、このデバイスを割り当てることができる IoT ハブを選択します。 "静的な構成" 割り当てポリシーを選択した場合、1 つのリンクされた IoT ハブを選択するように制限されます。 その他のすべての割り当てポリシーでは、リンクされているすべての IoT ハブが既定で選択されますが、ドロップダウンを使用してこの選択を変更できます。 リンクされた IoT ハブが DPS インスタンスに追加または削除されたときに、登録で自動的に使用されるようにするには、すべての IoT ハブの選択を解除します。
必要に応じて、[新しい IoT ハブをリンクする] ボタンを選択して、新しい IoT ハブを DPS インスタンスにリンクし、選択できる IoT ハブの一覧で使用できるようにします。 IoT ハブのリンクの詳細については、「リンクされた IoT Hub の追加」を参照してください。
登録に適用する割り当てポリシーを選択します。 DPS インスタンスの既定の割り当てポリシーが既定で選択されています。 カスタム割り当てについては、Azure Functions でカスタム割り当てポリシー Webhook を指定する必要もあります。 詳細については、「カスタム割り当てポリシーの使用」に関するチュートリアルを参照してください。
登録に必要なその他のプロパティを設定し、設定を保存します。
Azure CLI を使用して登録割り当てポリシーと IoT ハブを管理する
az iot dps enrollment create、az iot dps enrollment update、az iot dps enrollment-group create、az iot dps enrollment-group update Azure CLI コマンドを使用して、個別登録または登録グループを作成または更新します。
たとえば、次のコマンドは、DPS インスタンスと DPS インスタンスにリンクされているすべての IoT ハブで設定されている、既定の割り当てポリシーを規定で使用する対称キー登録グループを作成します。
az iot dps enrollment-group create --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup
次のコマンドでは、同じ登録グループを更新して、MyExampleHub と MyExampleHub-2 という名前の IoT ハブで最短待機時間割り当てポリシーを使用します。
az iot dps enrollment-group update --dps-name MyExampleDps --enrollment-id MyEnrollmentGroup --allocation-policy geolatency --iot-hubs "MyExampleHub.azure-devices.net MyExampleHub-2.azure-devices.net"
DPS では、個別登録の作成または更新、登録グループ の作成または更新 REST API、DPS サービス SDK を使用した登録での割り当てポリシーと選択した IoT ハブの設定もサポートされています。
割り当て動作
IoT ハブで割り当てポリシーを使用する場合は、次の動作に注意してください。
Azure CLI、REST API、DPS サービス SDK を使用すると、割り当てポリシーなしで登録を作成できます。 この場合、デバイスが登録を通じてプロビジョニングするときに、DPS は DPS インスタンスの既定のポリシーを使用します。 DPS インスタンスの既定のポリシー設定を変更すると、登録を通じてデバイスをプロビジョニングする方法が変更されます。
Azure portal では、登録の割り当てポリシー設定に既定の割り当てポリシーが事前に設定されます。 この設定は維持することも、別のポリシーに変更することもできますが、登録を保存すると、登録に割り当てポリシーが設定されます。 サービスの既定の割り当てポリシーに対するその後の変更では、登録を通じてデバイスをプロビジョニングする方法は変更されません。
均等加重分布、最短待機時間、カスタム割り当てポリシーの場合は、DPS インスタンスにリンクされているすべての IoT ハブを使用するように登録を構成できます。
Azure CLI と DPS サービス SDK を使用して、IoT ハブを指定せずに登録を作成します。
Azure portal では、DPS インスタンスにリンクされているすべての IoT ハブが選択された状態で登録が事前に設定されます。登録を保存する前にすべての IoT ハブの選択を解除します。
登録で IoT ハブが選択されていない場合、新しい IoT ハブが DPS インスタンスにリンクされるたびに、割り当てに参加します。DPS インスタンスから削除された IoT ハブの場合は、その逆になります。
登録で IoT ハブが指定されている場合、新しくリンクされた IoT ハブを追加するか、削除された IoT ハブを割り当てから削除するには、登録の IoT ハブ設定を手動またはプログラムで更新する必要があります。
登録に使用される割り当てポリシーまたは IoT ハブを変更すると、その登録によるそれ以降の登録にのみ影響します。 変更を以前の登録に反映させる場合は、以前に登録されたすべてのデバイスを再プロビジョニングする必要があります。
制限事項
割り当てポリシーとプライベート エンドポイントを操作する場合、いくつかの制限があります。 詳細については、「プライベート エンドポイントの制限事項」を参照してください。
次のステップ
リンクされた IoT ハブのリンクと管理の詳細については、「リンクされた IoT ハブの管理」を参照してください。
カスタム割り当てポリシーの詳細については、カスタム割り当てポリシーの理解に関するページを参照してください。
最短待機時間の割り当てポリシーを使用したエンドツーエンドの例については、「geo 待機時間のプロビジョニング」に関するチュートリアルを参照してください。
カスタム割り当てポリシーを使用するエンドツーエンドの例については、「カスタム割り当てポリシーの使用」に関するチュートリアルを参照してください。