次の方法で共有


ファイルをデバイスからクラウドにアップロードする

IoT Central では、接続されているデバイスからクラウド ストレージにメディアやその他のファイルをアップロードできます。 IoT Central アプリケーションでファイルのアップロード機能を構成してから、デバイスのコードでファイルのアップロードを実装します。

IoT Central アプリケーション内のデバイスによってアップロードされたファイルを管理およびプレビューすることもできます。

IoT Central REST API を使用してファイルのアップロードを構成する方法については、「ファイル アップロード ストレージ アカウントの構成を追加する」を参照してください。

IoT Central の自動スケール動作では、 ファイルアップロード操作は考慮されません。 ソリューションがファイルのアップロードに大きく依存している場合は、調整を回避するために、基になる IoT Hub インスタンスを手動でスケーリングすることが必要になる場合があります。 その場合は、Microsoft サポートにお問い合わせください。

前提条件

ファイルのアップロードを構成するには、IoT Central アプリケーションの管理者である必要があります。

アップロードされたファイルを保存するために、Azure ストレージ アカウントとコンテナーが必要です。 ストレージ アカウントとコンテナーがない場合は、 Azure portal でストレージ アカウントを作成します

デバイスからのファイルのアップロードの構成

デバイスからのファイルのアップロードを構成するには、次の手順に従います。

  1. アプリケーションの [ アプリケーション ] セクションに移動します。

  2. [デバイスのファイル ストレージ] を選択します。

  3. 使用するストレージ アカウントとコンテナーを選択します。 ストレージ アカウントがアプリケーションとは異なる Azure サブスクリプションにある場合は、ストレージ アカウントの接続文字列を入力します。

  4. 必要に応じて、要求の有効期間を設定するアップロード タイムアウトを調整します。 1 時間から 24 時間に設定できます。

  5. IoT Central でアップロードされたファイルをユーザーが表示および管理できるようにするには、[ アクセスの有効化] を[オン] に設定します。

  6. [保存] を選択します。 状態が [構成済み] と表示されると、デバイスはファイルをアップロードできます。

適切に構成されたファイルのアップロードを示すスクリーンショット。

ファイルアップロードのシナリオで予期しないスロットリングを回避するためのベストプラクティス

ファイルのアップロードを行う際に予期しないスロットリングを避けるには、次の最適な方法を検討してください。

  • デバイス間でアップロードのタイミングを調整する。
  • 同期されたアップロードは避けてください。 たとえば、正時。
  • 429 / ThrottleBacklogTimeout エラーに対してクライアント側の指数バックオフを実装します。
  • ADX インジェスト、ファブリック パイプライン、直接ストレージ書き込みなどの代替インジェスト メカニズムを検討します。
  • 想定される運用環境のアップロード パターンでワークロードの動作をテストします。

デバイスからのファイルのアップロードの無効化

IoT Central アプリケーションでデバイス ファイルのアップロードをオフにするには:

  1. アプリケーションの [アプリケーション] セクションに移動します。

  2. [デバイスのファイル ストレージ] を選択します。

  3. [削除]を選択します。

アップロードされたファイルへのアクセスを制御する

ロールとアクセス許可を使用して、アップロードされたファイルを表示および削除できるユーザーを制御します。 詳細については、「IoT Central アプリケーションでユーザーとロールを管理する」>「デバイスの管理」を参照してください。

デバイスからのファイルのアップロード

IoT Central では、IoT Hub のファイルアップロード機能を使用して、デバイスがファイルをアップロードできるようにします。 デバイスからファイルをアップロードする方法を示すサンプル コードについては、 IoT Central ファイルアップロード デバイスのサンプルを参照してください。

アップロードしたファイルを表示および管理する

ファイル アップロード構成のファイルへのアクセスを有効にすると、適切なアクセス許可を持つユーザーは、アップロードされたファイルを表示および削除できます。

重要

デバイスに関連付けられている BLOB コンテナー フォルダー内のすべてのファイルは、デバイスがアップロードしなかったファイルを含め、そのデバイスの [ ファイル] ビュー に表示されます。

アップロードしたファイルを表示および削除するには、デバイスの [ファイル ] ビューに移動します。 このページでは、アップロードされたファイルのサムネイルを表示し、ギャラリーとリスト ビューを切り替えることができます。 それぞれのファイルに、ダウンロードと削除のオプションがあります。

アップロードされたファイルのギャラリー ビューを示すスクリーンショット。

ヒント

BLOB ストレージにアップロードされたときにファイルに割り当てられた MIME の種類によって、そのファイルの種類が決まります。 既定の型は binary/octet-stream です。

ファイル名でフィルター処理し、表示する列を選択して、リスト ビューをカスタマイズします。

ファイルの内容をプレビューし、詳細を取得するには、それを選択します。 IoT Central では、テキストや画像などの一般的なファイルの種類のプレビューがサポートされています。

テキスト ファイルのプレビューを示すスクリーンショット。

ファイルのアップロードをテストする

IoT Central アプリケーションで ファイルのアップロードを構成 したら、サンプル コードを使用してテストします。 次のコマンドを使用して、サンプル リポジトリをローカル コンピューター上の適切な場所に複製し、依存関係をインストールします。

git clone https://github.com/azure-Samples/iot-central-file-upload-device
cd iotc-file-upload-device
npm i
npm build

デバイス テンプレートを作成してモデルをインポートする

ファイルのアップロードをテストするには、サンプル デバイス アプリケーションを実行します。 まず、サンプル デバイスのデバイス テンプレートを作成します。

  1. IoT Central UI でアプリケーションを開きます。

  2. 左側のウィンドウで [デバイス テンプレート ] に移動し、[ + 新規] を選択します。

  3. テンプレートの種類として IoT デバイス を選択します。

  4. [ カスタマイズ ] ページで、デバイス テンプレートの ファイル アップロード デバイス サンプル などの名前を入力します。

  5. [Review]\(レビュー\) ページで、[Create]\(作成\) を選択します。

  6. [ モデルのインポート] を選択し、前 ダウンロードしたリポジトリの iotc-file-upload-device\setup フォルダーからFileUploadDeviceDcm.jsonモデル ファイルをアップロードします。

  7. [ 発行] を選択して、デバイス テンプレートの作成を完了します。

デバイスを追加する

Azure IoT Central アプリケーションへ新しいデバイスを追加するには、次の操作を実行します。

  1. 左側のウィンドウで [デバイス ] に移動します。

  2. 前に作成した ファイル アップロード デバイス サンプル デバイス テンプレートを選択します。

  3. [+ 新規] を選択し、[ 作成] を選択します。

  4. 作成したデバイスを選択し、[ 接続] を選択します。

ID scopeDevice IDPrimary key の値をコピーします。 これらの値は、デバイス サンプル コードで使用します。

サンプル コードを実行します。

VS コードでダウンロードした Git リポジトリを開きます。 プロジェクトのルートに ".env" ファイルを作成し、前にコピーした値を追加します。 ファイルは次のサンプルのようになります。値は次のようになります。

scopeId=<YOUR_SCOPE_ID>
deviceId=<YOUR_DEVICE_ID>
deviceKey=<YOUR_PRIMARY_KEY>
modelId=dtmi:IoTCentral:IotCentralFileUploadDevice;1

VS コードでダウンロードした Git リポジトリを開きます。 サンプルを実行またはデバッグするには、 F5 キーを押します。 ターミナル ウィンドウに、デバイスの登録と IoT Central への接続が表示されます。

Starting IoT Central device...
 > Machine: Windows_NT, 8 core, freemem=6674mb, totalmem=16157mb
Starting device registration...
DPS registration succeeded
Connecting the device...
IoT Central successfully connected device: 7z1xo26yd8
Sending telemetry: {
    "TELEMETRY_SYSTEM_HEARTBEAT": 1
}
Sending telemetry: {
    "TELEMETRY_SYSTEM_HEARTBEAT": 1
}
Sending telemetry: {
    "TELEMETRY_SYSTEM_HEARTBEAT": 1
}

サンプル プロジェクトには、datafile.jsonという名前のサンプル ファイルが含 まれています 。 このファイルは、IoT Central アプリケーションで [ファイルのアップロード ] コマンドを使用するとアップロードされます。

アップロードをテストするには、アプリケーションを開き、作成したデバイスを選択します。 [ コマンド ] タブを選択し、[ 実行 ] ボタンを選択します。 [実行] を選択すると、IoT Central アプリケーションによってデバイス上でダイレクト メソッドが呼び出され、ファイルがアップロードされます。 このダイレクト メソッドは、/device.ts ファイルのサンプル コードで確認できます。 このメソッドの名前は uploadFileCommand です。 アップロードをテストするには、アプリケーションを開き、作成したデバイスを選択します。 [ コマンド ] タブを選択し、[ 実行 ] ボタンを選択します。 [実行] を選択すると、IoT Central によってデバイス上でダイレクト メソッドが呼び出され、ファイルがアップロードされます。 このメソッドは 、/device.ts ファイルのサンプル コードで確認できます。 このメソッドの名前は uploadFileCommand です。

[ 生データ ] タブを選択して、ファイルのアップロードの状態を確認します。

ファイル アップロードの検証方法の UI を示すスクリーンショット。

REST API 呼び出しを行って、ストレージ コンテナー内のファイルアップロードの状態を確認することもできます。