次の方法で共有


対称キーを使用して Windows で IoT Edge デバイスを作成してプロビジョニングする

適用対象:はいアイコン IoT Edge 1.1

重要

IoT Edge 1.1 サポート終了日は 2022 年 12 月 13 日でした。 本製品、サービス、テクノロジ、または API のサポート内容については、Microsoft 製品のライフサイクルに関するページをご確認ください。 最新バージョンの IoT Edge への更新の詳細については、「IoT Edgeの更新」を参照してください。

この記事では、Windows IoT Edge デバイスを登録およびプロビジョニングするためのエンド ツー エンドの手順について説明します。

Windows コンテナーを含む Azure IoT Edge は、Azure IoT Edge のバージョン 1.2 以降ではサポートされません。

Windows デバイスで IoT Edge を実行するための新しい方法として、Azure IoT Edge for Linux を Windows 上で使用することを検討してください。

Windows で Azure IoT Edge for Linux を使用する場合は、同等のハウツー ガイドの手順に従

IoT ハブに接続するすべてのデバイスには、cloud-to-device または device-to-cloud の通信の追跡に使用されるデバイス ID があります。 デバイスをその接続情報で構成します。これには、IoT ハブ ホスト名、デバイス ID、IoT Hub に対して認証を行うためにデバイスで使用される情報が含まれます。

この記事の手順では、"手動プロビジョニング" と呼ばれるプロセスについて説明します。ここでは、1 つのデバイスを IoT ハブに接続します。 手動プロビジョニングの場合、IoT Edge デバイスの認証には 2 つのオプションがあります。

  • 対称キー: IoT Hub で新しいデバイス ID を作成すると、サービスによって 2 つのキーが作成されます。 いずれかのキーをデバイスに配置すると、認証時にそのキーが IoT Hub に提示されます。

    この認証方法は比較的すばやく開始できますが、それほど安全ではありません。

  • X.509 自己署名: 2 つの X.509 ID 証明書を作成し、デバイスに配置します。 IoT Hub で新しいデバイス ID を作成するときは、両方の証明書の拇印を指定します。 デバイスでは IoT Hub に対して認証を行うときに、1 つの証明書が提示され、その証明書がその拇印と一致することが IoT によって検証されます。

    この認証方法はより安全であり、運用環境のシナリオの場合に推奨されます。

この記事では、認証方法として対称キーを使用する方法について説明します。 X.509 証明書を使用する場合は、「X.509 証明書を使用して Windows で IoT Edge デバイスを作成してプロビジョニングする」を参照してください。

設定するデバイスが多数あり、それぞれを手動でプロビジョニングしたくない場合は、次の記事のいずれかを使用して、IoT Edge が IoT Hub Device Provisioning Service でどのように動作するかを確認してください。

前提条件

この記事では、IoT Edge デバイスを登録し、そこに IoT Edge をインストールする方法について説明します。 これらのタスクには、実行するために使用されるさまざまな前提条件とユーティリティがあります。 次に進む前に、すべての前提条件が満たされていることを確認してください。

デバイス管理ツール

デバイスを登録する手順には、Azure portalVisual Studio Code、または Azure CLI を使用できます。 各ユーティリティには、独自の前提条件があります。

Azure サブスクリプション内の無料または標準の IoT ハブ

デバイスの要件

Windows デバイス。

Windows コンテナーを備えた IoT Edge には、Windows バージョン 1809/ビルド 17763 が必要です。これは、Windows の長期的なサポート ビルド の最新です。 サポートされている SKU の一覧については、サポートされているシステムの一覧 必ず確認してください。

コンテナーとホストの両方の Windows バージョンが一致している必要があることに注意してください。 詳細については、「OS の不一致が原因でモジュールを起動できなかったを参照してください。

デバイスを登録する

デバイスを登録するには、好みに応じて Azure portalVisual Studio Code、または Azure CLI を使用できます。

Azure portal の IoT Hubで、IoT Edge デバイスは、Edge 対応ではない IoT デバイスとは別に作成および管理されます。

  1. Azure Portal にサインインし、IoT Hub に移動します。

  2. 左側のウィンドウで、メニューから [デバイス] を選択し、[デバイスを追加する] を選択します。

  3. [デバイスの作成] ページで、次の情報を指定します。

    • わかりやすいデバイス ID を作成します。 後で使用するので、このデバイス ID を書き留めます。
    • [IoT Edge デバイス] のチェック ボックスをオンにします。
    • 認証の種類として [対称キー] を選択します。
    • 既定の設定を使用して認証キーを自動生成し、新しいデバイスをハブに接続します。
  4. [保存] を選択します。

デバイスが IoT Hub に登録されたので、IoT Edge ランタイムのインストールとプロビジョニングを完了するために使用する情報を取得します。

登録済みデバイスを表示し、プロビジョニング情報を取得する

対称キー認証を使用するデバイスでは、IoT Edge ランタイムのインストールとプロビジョニングを完了するために接続文字列が必要です。

IoT ハブに接続するエッジ対応デバイスが、デバイス ページに一覧表示されます。 種類 によって Iot Edge デバイスの一覧をフィルターできます。

Azure portal、IoT Hub でデバイスを表示する方法のスクリーンショット。

デバイスを設定する準備ができたら、物理デバイスを IoT ハブ内でのその ID にリンクする接続文字列が必要です。

対称キーを使用して認証を行うデバイスでは、接続文字列をポータルでコピーできます。

  1. ポータルの [デバイス] ページで、一覧から IoT Edge デバイス ID を選択します。
  2. [プライマリ接続文字列] または [セカンダリ接続文字列] のどちらかの値をコピーします。

IoT Edge をインストールする

このセクションでは、IoT Edge 用に Windows VM または物理デバイスを準備します。 次に、IoT Edge をインストールします。

Azure IoT Edgeは、OCI と互換性のあるコンテナー ランタイムに依存しています。 Moby ベースのエンジン Mobyはインストール スクリプトに含まれています。つまり、エンジンをインストールするための追加の手順はありません。

IoT Edge ランタイムをインストールするには:

  1. PowerShell を管理者として実行します。

    PowerShell (x86) ではなく、PowerShell の AMD64 セッションを使用します。 使用しているセッションの種類がわからない場合は、次のコマンドを実行します。

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. Deploy-IoTEdge コマンドを実行すると、次のタスクが実行されます。

    • Windows マシンがサポートされているバージョンにあることを確認します
    • コンテナー機能を有効にする
    • moby エンジンと IoT Edge ランタイムをダウンロードします
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. メッセージが表示されたら、デバイスを再起動します。

IoT Edge をデバイスにインストールする場合は、追加のパラメーターを使用して、次のようなプロセスを変更できます。

  • プロキシ サーバーを経由するトラフィックを直接送信する
  • オフライン インストール用のローカル ディレクトリにインストーラーをポイントする

これらの追加パラメーターの詳細については、Windows コンテナー を使用した IoT Edge 用の PowerShell スクリプトのを参照してください。

クラウド ID を使用してデバイスをプロビジョニングする

コンテナー エンジンと IoT Edge ランタイムがデバイスにインストールされたので、次の手順として、クラウド ID と認証情報を使用してデバイスを設定する準備が整いました。

  1. IoT Edge デバイスで、管理者として PowerShell を実行します。

  2. Initialize-IoTEdge コマンドを使用して、コンピューター上の IoT Edge ランタイムを構成します。 このコマンドの既定値は、Windows コンテナーを使用した手動プロビジョニングです。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -ManualConnectionString -ContainerOs Windows
    
    • IoTEdgeSecurityDaemon.ps1 スクリプトをオフラインまたは特定のバージョンのインストール用にデバイスにダウンロードした場合は、スクリプトのローカル コピーを参照してください。

      . <path>/IoTEdgeSecurityDaemon.ps1
      Initialize-IoTEdge -ManualConnectionString -ContainerOs Windows
      
  3. メッセージが表示されたら、前のセクションで取得したデバイス接続文字列を指定します。 デバイス接続文字列は、物理デバイスを IoT Hub のデバイス ID に関連付け、認証情報を提供します。

    デバイス接続文字列は次の形式を使用し、引用符を含めないようにする必要があります: HostName={IoT_hub_name}.azure-devices.net;DeviceId={device_name};SharedAccessKey={key}

デバイスを手動でプロビジョニングする場合は、追加のパラメーターを使用して、次のようなプロセスを変更できます。

  • プロキシ サーバーを経由するトラフィックを直接送信する
  • 特定の edgeAgent コンテナー イメージを宣言し、プライベート レジストリ内にある場合は資格情報を指定します

これらの追加パラメーターの詳細については、Windows コンテナー を使用した IoT Edge 用の PowerShell スクリプトのを参照してください。

構成が成功したことを確認する

IoT Edge デバイスにランタイムが正常にインストールされ、構成されていることを確認します。

IoT Edge サービスの状態を確認します。

Get-Service iotedge

サービス ログを調べます。

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

実行中のモジュールを一覧表示します。

iotedge list

オフラインまたは特定のバージョンのインストール (省略可能)

このセクションの手順は、標準のインストール手順では説明されていないシナリオを対象としています。 これには以下が含まれます。

  • オフラインの間に IoT Edge をインストールする
  • リリース候補バージョンをインストールする
  • 最新バージョン以外のバージョンをインストールする

インストール中に、次の 3 つのファイルがダウンロードされます。

  • インストール手順を含む PowerShell スクリプト
  • IoT Edge セキュリティ デーモン (iotedged)、Moby コンテナー エンジン、Moby CLI を含む Microsoft Azure IoT Edge cab
  • Visual C++ 再頒布可能パッケージ (VC ランタイム) インストーラー

インストール中にデバイスがオフラインになる場合、または特定のバージョンの IoT Edge をインストールする場合は、事前にこれらのファイルをデバイスにダウンロードできます。 インストール時に、ダウンロードしたファイルが含まれているディレクトリにインストール スクリプトをポイントします。 インストーラーは、最初にそのディレクトリを確認し、次に見つからないコンポーネントのみをダウンロードします。 すべてのファイルがオフラインで使用可能な場合は、インターネットに接続なしでインストールできます。

  1. 最新の IoT Edge インストール ファイルと以前のバージョンについては、Azure IoT Edge リリースを参照してください。

  2. インストールするバージョンを見つけ、リリース ノートの Assets セクションから次のファイルを IoT デバイスにダウンロードします。

    • IoTEdgeSecurityDaemon.ps1
    • 1.1 リリース チャネルからの Microsoft-Azure-IoTEdge-amd64.cab。

    各リリースの機能をサポートするように機能が変更されるため、使用する .cab ファイルと同じリリースの PowerShell スクリプトを使用することが重要です。

  3. ダウンロードした .cab ファイルにアーキテクチャ サフィックスが付いている場合は、ファイルの名前を Microsoft-Azure-IoTEdge.cabに変更します。

  4. 必要に応じて、Visual C++ 再頒布可能パッケージのインストーラーをダウンロードします。 たとえば、PowerShell スクリプトでは次のバージョンが使用されます: vc_redist.x64.exe。 インストーラーを IoT Edge ファイルと同じフォルダーに IoT デバイスに保存します。

  5. オフライン コンポーネントを使用してインストールするには、PowerShell スクリプトのローカル コピーをドット ソース します。

  6. パラメーターを使用して、-OfflineInstallationPath コマンドを実行します。 ファイル ディレクトリへの絶対パスを指定します。 たとえば、

    . path_to_powershell_module_here\IoTEdgeSecurityDaemon.ps1
    Deploy-IoTEdge -OfflineInstallationPath path_to_file_directory_here
    

    配置コマンドでは、指定されたローカル ファイル ディレクトリにあるコンポーネントが使用されます。 .cab ファイルまたは Visual C++ インストーラーのいずれかが見つからない場合は、ダウンロードが試行されます。

IoT Edge をアンインストールする

Windows デバイスから IoT Edge インストールを削除する場合は、管理 PowerShell ウィンドウから Uninstall-IoTEdge コマンドを使用します。 このコマンドを実行すると、IoT Edge ランタイムと、既存の構成と Moby エンジン データが削除されます。

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; `
Uninstall-IoTEdge

アンインストール オプションの詳細については、コマンド Get-Help Uninstall-IoTEdge -fullを使用します。

次のステップ

IoT Edge モジュールのデプロイに進んで、デバイスにモジュールをデプロイする方法を確認します。