デバイス ID のエクスポートとインポート
皆様 IoT Hub とは友達になれましたでしょうか、Azure IoT 開発サポートの石沢です。
今回はデバイス ID のエクスポートとインポートについてご紹介いたします。
デバイス ID が増えてきて、まとめて操作したくなった時に便利な操作になります。
手順一覧
デバイス ID のエクスポートとインポートは以下の 2 つの手順にて行います。
-
- デバイス ID をエクスポートする Blob の用意
- プログラムによるエクスポートとインポートの実行
各手順の詳細
1. デバイス ID をエクスポートする Blob の用意
作成時に [アカウントの種類] は BLOB ストレージを選択します。作成時に入力したストレージアカウント名は後で使用するのでメモしておきます。
[BLOB の参照] より、作成した BLOB にコンテナーを追加します。“名前” 欄に入力したコンテナー名も後で使用するのでメモしておきます。
[Shared Access Signatures] より Shared Access Signature (SAS) を生成します。生成された SAS トークンをメモしておきます。
2. プログラムによるエクスポートおよびインポートの実行
RegistryManager クラスを使用した以下のサンプルコードを実行します。
<エクスポート元の IoTHub 接続名>、<エクスポート先の IoTHub 接続名> につきましては、IoT Hub の接続名に置き換えてください。
また、<ストレージアカウント名>、<コンテナー名>、<セキュリティトークン> はそれぞれ BLOB 作成時にメモした値に置き換えてください。
エクスポート用サンプルコード :
var registryManager1 = RegistryManager.CreateFromConnectionString("<エクスポート元の IoTHub 接続名>");JobProperties exportJob = await registryManager1.ExportDevicesAsync("https://<ストレージアカウント名>.blog.core.windows.net/<コンテナー名><SAS トークン>", false);while (true){ exportJob = await registryManager.GetJobAsync(exportJob.JobId); if (exportJob.Status == JobStatus.Completed || exportJob.Status == JobStatus.Failed || exportJob.Status == JobStatus.Cancelled) { break; } await Task.Delay(TimeSpan.FromSeconds(5));} |
インポート用サンプルコード :
var registryManager2 = RegistryManager.CreateFromConnectionString("<エクスポート先の IoTHub 接続名>");JobProperties importJob = await registryManager2.ImportDevicesAsync("https://<ストレージアカウント名>.blog.core.windows.net/<コンテナー名><SAS トークン>", "https://<ストレージアカウント名>.blog.core.windows.net/<コンテナー名><SAS トークン>");while (true){ importJob = await registryManager2.GetJobAsync(importJob.JobId); if (importJob.Status == JobStatus.Completed || importJob.Status == JobStatus.Failed || importJob.Status == JobStatus.Cancelled) { break; } await Task.Delay(TimeSpan.FromSeconds(5));} |
エクスポートが完了すると、作成したコンテナーにエクスポートしたデバイス ID の情報が保存された devices.txt が格納されます。
また、インポートが完了すると importErrors.log が格納されます。
インポート先の IoT Hub にデバイス ID が登録されていれば成功となります。
ではまた、いつかどこかでお会いいたしましょう!
Azure IoT 開発サポートチーム 石沢 望夢