デバイスを Azure IoT Hub に移行する
IoT Central ベース ソリューションから IoT Hub ベース ソリューションに移行する場合は、アプリケーションに現在接続されているすべてのデバイスの構成を変更する必要があります。 IoTC Migrator ツールを使うと、このデバイスの移行プロセスを自動化できます。
移行ツール:
- IoT Central アプリケーションに現在接続されているデバイスのデバイス登録を IoT ハブ内に作成します。
- コマンドを使って、IoT ハブに関連付けられたデバイス プロビジョニング サービス (DPS) インスタンスの "ID スコープ" をデバイスに送信します。
このツールを使うには、IoT Central アプリケーションのデバイス テンプレートに定義されている DeviceMove コマンドを接続デバイスが実装している必要があります。 コマンド ペイロードは、ターゲット DPS インスタンスの ID スコープです。 デバイスがこのコマンドを受け取ると、次の処理を実行します。
- テレメトリの送信を停止し、IoT Central アプリケーションから切断します。
- コマンド ペイロードの新しい ID スコープを使い、DPS を使って自身をプロビジョニングします。
- プロビジョニングの結果を使って、移行先の IoT ハブに接続し、テレメトリの送信を再開します。
ヒント
また、移行ツールを使用して、IoT Cental アプリケーション間、または IoT ハブから IoT Central アプリケーションにデバイスを移行することもできます。
中断を最小限に抑える
中断を最小限に抑えるために、段階的にデバイスを移行することができます。 Migrator ツールでは、デバイス グループを使用して、デバイスを IoT Central から IoT Hub に移動します。 デバイス フリートを、テキサス州のデバイス、ニューヨークのデバイス、米国のその他の地域のデバイスなどのデバイス グループに分割します。 その後で、各デバイス グループを個別に移行します。
警告
割り当てられていないデバイスをデバイス グループに追加できません。 そのため、現在は移行ツールを使用して未割り当てデバイスを移行することはできません。
ビジネスへの影響を最小限に抑えるには、次の手順を実行します。
PaaS ソリューションを作成し、IoT Central アプリケーションと並行して実行します。
IoT Central アプリケーションでの継続的なデータ エクスポートと、PaaS ソリューション IoT Hub への適切なルートを設定します。 両方のデータ チャネルを変換し、同じデータ レイクにデータを格納します。
段階的にデバイスを移行し、各段階で検証します。 計画どおりに進まないものがある場合は、デバイスを IoT Central にフェールバックします。
すべてのデバイスを PaaS ソリューションに移行し、IoT Central からデータを完全にエクスポートしたら、IoT Central ソリューションからデバイスを削除できます。
移行後、IoT Central アプリケーションからデバイスが自動的に削除されることはありません。 これらのデバイスに対しては、アプリケーションでプロビジョニングされているすべてのデバイスの IoT Central 料金が引き続き課金されます。 これらのデバイスを IoT Central アプリケーションから削除すると、それらのデバイスに対して課金されなくなります。 最終的には、IoT Central アプリケーションを削除します。
IoT Central から既存のデータを移動する
テレメトリとプロパティの値を連続してエクスポートするように IoT Central を構成することができます。 エクスポート先は、Azure Data Lake、Event Hubs、Webhook などのデータ ストアです。 IoT Central UI または REST API を使用して、デバイス テンプレートをエクスポートできます。 REST API を使用すると、IoT Central アプリケーションでユーザーをエクスポートできます。
前提条件
デバイスの移行手順を完了するには、次の前提条件が必要です。
- デバイスが現在接続しているソース IoT Central アプリケーション。
- デバイスを移行する先の IoT ハブ。 この IoT ハブは DPS インスタンスにリンクされている必要があります。
- 移行ツールを実行するローカル コンピューター上にインストールされている node.js と npm。
デバイスの要件
移行するデバイスでは、migration というコンポーネントに DeviceMove コマンドを実装する必要があります。 コマンド ペイロードには、移行先の DPS インスタンスの "ID スコープ" が含まれます。 移行ツール リポジトリには、DeviceMove コマンドを定義する DTDL コンポーネント モデルの例が含まれています。 このコンポーネントは既存のデバイス テンプレートに追加できます。
このツールでは、コンポーネント名は migration
で、インターフェイス ID は dtmi:azureiot:DeviceMigration;1
であると想定しています。
ツール リポジトリには、デバイスが DeviceMove コマンドを実装する方法を示すサンプル コードも含まれています。
ツールのセットアップ
次の設定タスクを完了し、移行の準備を整えます。
Microsoft Entra アプリケーション
移行ツールでは、お使いの Azure サブスクリプションでの認証を有効にするために、Microsoft Entra アプリケーションの登録が必要です。
新規登録 を選択します。
「IoTC Migrator アプリ」などの名前を入力します。
任意の組織のディレクトリ (Microsoft Entra ディレクトリ - マルチテナント) 内のアカウントと、個人用の Microsoft アカウント (Skype、Xbox など) を選択します。
[シングル ページ アプリケーション (SPA)] を選びます。
リダイレクト URI として「
http://localhost:3000
」を入力します。 この値は、後で移行アプリの構成に追加します。[登録] を選択します。
[アプリケーション (クライアント) ID] と [ディレクトリ (テナント) ID] の値をメモします。 これらの値は、後で移行アプリを構成するときに使います。
登録の [マニフェスト] ページに移動し、
requiredResourceAccess
の内容を次の構成に置き換えます。[ { "resourceAppId": "9edfcdd9-0bc5-4bd4-b287-c3afc716aac7", "resourceAccess": [ { "id": "73792908-5709-46da-9a68-098589599db6", "type": "Scope" } ] }, { "resourceAppId": "797f4846-ba00-4fd7-ba43-dac1f8f63013", "resourceAccess": [ { "id": "41094075-9dad-400e-a0bd-54e686782033", "type": "Scope" } ] }, { "resourceAppId": "00000003-0000-0000-c000-000000000000", "resourceAccess": [ { "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", "type": "Scope" } ] } ]
変更を保存します。
デバイス キーを DPS に追加する
共有アクセス署名キーまたは X.509 証明書を IoT Central アプリケーションから DPS 割り当てグループに追加します。
IoT Central アプリケーションの認証を受けるためにデバイスが共有アクセス署名を使う場合:
- IoT Central アプリケーションで、[アクセス許可] > [デバイス接続のグループ] に移動します。
- デバイスに使う登録グループを選びます。
- 主キーとセカンダリ キーをメモします。
- Azure portal で、お使いの DPS インスタンスに移動します。
- [登録を管理します] を選択します。
- 新しい登録を作成し、構成証明の種類を [対称キー] に設定し、[自動生成キー] をオフにして、メモしておいた主キーとセカンダリ キーを追加します。
- [保存] を選択します。
IoT Central アプリケーションの認証を受けるためにデバイスが X.509 証明書を使う場合:
- Azure portal で、お使いの DPS インスタンスに移動します。
- [証明書] を選び、[追加] を選びます。
- IoT Central アプリケーションで使うルートまたは中間の X.509 証明書をアップロードし、検証します。
- [登録を管理します] を選択します。
- 新しい登録を作成し、構成証明の種類を [証明書] に設定し、アップロードしたプライマリとセカンダリの証明書を選びます。
- [保存] を選択します。
移行ツールのダウンロードと構成
移行ツールのコピーをローカル コンピューターにダウンロードするか、クローンします。
git clone https://github.com/Azure/iotc-migrator.git
ダウンロードしたリポジトリのルートで、.env ファイルを作成します。 REACT_APP_AAD_APP_CLIENT_ID
、REACT_APP_AAD_APP_TENANT_ID
、および REACT_APP_AAD_APP_REDIRECT_URI
の値を、前に作成した Microsoft Entra アプリケーションの登録の値で更新します。 変更を保存します。
PORT=3000
REACT_APP_AAD_APP_CLIENT_ID=<your-AAD-Application-(client)-ID>
REACT_APP_AAD_APP_TENANT_ID=<your-AAD-Directory-(tenant)-ID>
REACT_APP_AAD_APP_REDIRECT_URI=http://localhost:3000
ヒント
REACT_APP_AAD_APP_REDIRECT_URI
が、Microsoft Entra アプリケーションの登録で使用したリダイレクト URI と一致していることを確認します。
コマンドライン環境で、iotc-migrator
リポジトリのルートに移動します。 次に、以下のコマンドを実行して、必要な node.js パッケージをインストールし、ツールを実行します。
npm install
npm start
移行アプリが起動したら、http://localhost:3000
に移動してツールを表示します。 ダイアログが表示されたらサインインします。
デバイスを移行する
ツールを使って、デバイスをバッチで移行します。 [新しい移行] ページで移行の詳細を入力します。
- 移行の名前を入力します。
- IoT Central アプリケーションからデバイス グループを選びます。
- DeviceMove コマンドの定義を含むデバイス テンプレートを選びます。
- [Move to your own Azure IoT Hub] (自分の Azure IoT ハブに移行する) を選びます。
- ターゲット IoT ハブにリンクされている DPS インスタンスを選びます。
- [移行] を選択します。 このツールによって、IoT Central アプリケーションから DPS 登録グループにキーをコピーするようにダイアログが表示されます。 「デバイス キーを DPS に追加する」手順で、前にこの手順を完了しました。
これで、ターゲット デバイス フィルターに一致するすべての接続デバイスがツールによって移行先の IoT ハブに登録されました。 次に、ツールにより、IoT Central アプリケーションにジョブが作成され、それらすべてのデバイス上で DeviceMove メソッドが呼び出されます。 コマンド ペイロードには、移行先の DPS インスタンスの "ID スコープ" が含まれます。
移行を検証する
移行ツールの [移行の状態] ページを使用して、進行状況を監視します。
[移行の状態] ページでジョブを選び、IoT Central アプリケーションの [ジョブの状態] を表示します。 このページを使って、ジョブ内の個々のデバイスの状態を表示します。
正常に移行したデバイス: