クイックスタート:初めての IoT Edge モジュールを Windows デバイスにデプロイする

適用対象:IoT Edge 1.4 チェックマーク IoT Edge 1.4

重要

IoT Edge 1.4 がサポートされているリリースです。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

このクイックスタートで、コンテナー化されたコードを Linux on Windows IoT Edge デバイスにデプロイして、Azure IoT Edge を試してみましょう。 IoT Edge を使用すると、ご利用のデバイス上のコードをリモートで管理できるため、より多くのワークロードをエッジに送信できます。 Azure IoT Edge for Linux on Windows を使うことがいかに簡単かを知っていただくために、このクイックスタートにはご自身の Windows クライアント デバイスを使用することをお勧めします。 Windows Server または Azure VM を使用してデプロイを作成する場合は、Windows デバイスに Azure IoT Edge for Linux をインストールしてプロビジョニングする方法に関する攻略ガイドの手順に従ってください。

このクイック スタートでは、次の方法について説明します。

  • IoT Hub を作成します。
  • IoT Edge デバイスを IoT ハブに登録します。
  • IoT Edge for Linux on Windows ランタイムをデバイスにインストールして起動します。
  • IoT Edge デバイスにリモートでモジュールをデプロイし、テレメトリを送信します。

このクイックスタートにおけるデバイスとクラウドのアーキテクチャを示す図。

このクイックスタートでは、Azure IoT Edge for Linux on Windows デバイスの設定方法について説明します。 その後、Azure portal からご自身のデバイスにモジュールをデプロイします。 これから使用するモジュールは、温度、湿度、圧力のデータを生成するシミュレートされたセンサーです。 これ以外の Azure IoT Edge チュートリアルは、ここで行う作業を基に作成されており、ビジネスの分析情報を得る目的でシミュレートされたデータを分析するためのモジュールをデプロイします。

アクティブな Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

前提条件

Azure CLI の環境を準備します。

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

このクイックスタートで使用するすべてのリソースを管理するためのクラウド リソース グループを作成します。

az group create --name IoTEdgeResources --location westus2

ご自身の IoT Edge デバイスが次の要件を満たしていることを確認します。

  • システム要件

    • Windows 101/11 (Pro、Enterprise、IoT Enterprise) 1 Windows 10 最小ビルド 17763 で、最新のすべての累積更新プログラムがインストールされていること。
  • ハードウェア要件

    • 最小空きメモリ容量: 1 GB
    • 最小空きディスク領域:10 GB

IoT Hub の作成

最初に Azure CLI を使用して IoT ハブを作成します。

I o T ハブを作成する手順を示す図。

このクイックスタートでは無料レベルの Azure IoT Hub を使用できます。 IoT Hub を以前に使用したことがあり、ハブを作成済みである場合は、その IoT ハブを使用することができます。

次のコードにより、無料の F1 ハブがリソース グループ IoTEdgeResources に作成されます。 {hub_name} は、実際の IoT ハブの一意の名前に置き換えてください。 IoT ハブの作成には数分かかることがあります。

az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2

ご自分のサブスクリプションに無料のハブが既に 1 つあるためにエラーが発生する場合は、SKU を S1 に変更します。 IoT ハブの名前が利用できないというエラーが発生した場合、自分以外のだれかが既にその名前のハブを所有しています。 新しい名前を試してください。

IoT Edge デバイスを登録する

新しく作成された IoT ハブに IoT Edge デバイスを登録します。

IoT ハブ ID でデバイスを登録する手順を示す図。

お使いの IoT ハブと通信できるようにシミュレートされたデバイスのデバイス ID を作成します。 デバイス ID はクラウドに置かれるので、デバイスの一意の接続文字列を使用して、物理デバイスとデバイス ID とを関連付けることになります。

IoT Edge デバイスは、通常の IoT デバイスとは異なる方法で動作し、管理方法も異なる場合があります。 --edge-enabled フラグを使用して、この ID が IoT Edge デバイス用であることを宣言します。

  1. Azure Cloud Shell で、次のコマンドを入力して、myEdgeDevice という名前のデバイスをハブに作成します。

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
    

    iothubowner ポリシー キーに関するエラーが表示された場合は、Cloud Shell で最新バージョンの Azure IoT 拡張機能が実行されていることを確認してください。

  2. デバイスの接続文字列を確認します。この接続文字列により、IoT Hub 内で物理デバイスとその ID をリンクさせます。 これには、IoT ハブの名前、デバイスの名前、そしてそれら 2 つの間の接続を認証する共有キーが含まれています。

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
    
  3. JSON 出力から connectionString キーの値をコピーして保存します。 この値はデバイスの接続文字列です。 次のセクションで、IoT Edge ランタイムを構成するときにこれを使用します。

    たとえば、接続文字列は HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE_SHARED_ACCESS_KEY> のようになります。

IoT Edge ランタイムをインストールして開始する

IoT Edge for Linux on Windows を自分のデバイスにインストールし、デバイスの接続文字列を使用して構成します。

IoT Edge ランタイムを起動する手順を示す図。

Azure IoT Edge for Linux on Windows をデプロイするターゲット デバイスで次の PowerShell コマンドを実行します。 PowerShell を使用してリモート ターゲット デバイスにデプロイするには、リモート PowerShell を使用してリモート デバイスへの接続を確立し、そのデバイスでこれらのコマンドをリモートで実行します。

  1. 管理者特権の PowerShell セッションで、次のコマンドを実行して Hyper-V を有効にします。 詳細については、「Windows 10 の Hyper-V」を確認してください。

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    
  2. 管理者特権の PowerShell セッションで、次の各コマンドを実行し、IoT Edge for Linux on Windows をダウンロードします。

    • X64、AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  3. IoT Edge for Linux on Windows をデバイスにインストールします。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    
  4. ターゲット デバイスの実行ポリシーがまだ AllSigned に設定されていない場合、これを設定します。 現在の実行ポリシーは、管理者特権の PowerShell プロンプトで次のコマンドを使用して確認できます。

    Get-ExecutionPolicy -List
    

    local machine の実行ポリシーが AllSigned になっていない場合は、次のようにして実行ポリシーを設定できます。

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  5. IoT Edge for Linux on Windows のデプロイを作成します。

    Deploy-Eflow
    
  6. ライセンス条項に同意するには、「Y」と入力します。

  7. 必要に応じて、「O」または「R」を入力して [Optional diagnostic data](オプションの診断データ) をオンまたはオフに切り替えます。 デプロイが成功したときの表示を次に示します。

    デプロイが成功すると、コンソールのメッセージの最後にデプロイが成功したことを示すスクリーンショット。

  8. 前のセクションで取得したデバイス接続文字列を使用し、デバイスをプロビジョニングします。 プレースホルダー テキストは実際の値に置き換えてください。

    Provision-EflowVm -provisioningType ManualConnectionString -devConnString "<CONNECTION_STRING_HERE>"
    

IoT Edge デバイスの構成はこれで完了です。 クラウドからモジュールをデプロイして実行することができます。

モジュールを展開する

Azure IoT Edge デバイスをクラウドから管理し、IoT Hub に利用統計情報を送信するモジュールをデプロイします。

モジュールをデプロイする手順を示す図。

Azure IoT Edge の主要な機能の 1 つは、クラウドからお客様の IoT Edge デバイスにコードをデプロイすることです。 IoT Edge モジュールは、コンテナーとして実装されている実行可能ファイルのパッケージです。 このセクションでは、Azure Marketplace の IoT Edge モジュールのセクションのあらかじめ構築されたモジュールを Azure IoT Hub から直接デプロイします。

このセクションでデプロイするモジュールはセンサーをシミュレートし、生成されたデータを送信します。 シミュレートされたデータを開発とテストに使用できるため、このモジュールは IoT Edge の使用を開始する際にコードの一部として役に立ちます。 このモジュールで行われる内容を正確に確認したい場合は、シミュレートされた温度センサーのソース コードをご覧いただけます。

Azure Marketplace からお客様の最初のモジュールをデプロイするには、次の手順に従います。

  1. Azure portal にサインインし、お使いの IoT ハブに移動します。

  2. 左側のメニューの [デバイス管理] メニューで、[デバイス] を選択します。

  3. デバイスの一覧でターゲット デバイスのデバイス ID を選択します。

    Note

    新しい IoT Edge デバイスを作成すると、Azure portal で状態コード 417 -- The device's deployment configuration is not set が表示されます。 この状態は正常であり、デバイスでモジュールのデプロイを受け取る準備ができていることを意味します。

  4. 上部のバーで [モジュールの設定] を選択します。

    デバイスで実行するモジュールを選びます。 既に作成したモジュール、Azure Marketplace のモジュール、または自分でビルドしたモジュールから選べます。 このクイック スタートでは、Azure Marketplace からモジュールをデプロイします。

  5. [IoT Edge モジュール] の下で、 [追加] ドロップダウン メニューを開き、 [Marketplace モジュール] を選択します。

  6. [IoT Edge モジュールの Marketplace] で、Simulated Temperature Sensor モジュールを検索して選択します。 モジュールが [IoT Edge モジュール] セクションに追加されており、[必要な状態] が [実行しています] になっています。

  7. [次へ: ルート] を選び、ルートの構成を続行します。

    SimulatedTemperatureSensorToIoTHub という名前のルートは、Azure Marketplace からモジュールを追加したときに自動的に作成されました。 このルートでは、シミュレートされた温度モジュールから IoT Hub にすべてのメッセージが送信されます。

  8. 確認と作成 をクリックします。

  9. JSON ファイルを確認し、 [作成] を選択します。 この JSON ファイルには、IoT Edge デバイスにデプロイするすべてのモジュールが定義されます。

    Note

    IoT Edge デバイスに新しいデプロイを送信しても、デバイスには何もプッシュされません。 代わりに、デバイスから IoT Hub に対して、新しい指示のクエリが定期的に実行されます。 更新されたデプロイ マニフェストがデバイスによって検出されると、新しいデプロイに関する情報が使用されてクラウドからモジュール イメージがプルされ、ローカルでのモジュールの実行が開始されます。 このプロセスには数分かかることがあります。

モジュールのデプロイの詳細が作成されると、ウィザードは [デバイスの詳細] ページに戻ります。 [モジュール] タブでデプロイの状態を確認します。

$edgeAgent$edgeHub、および SimulatedTemperatureSensor という 3 つのモジュールが表示されています。 [デバイス別に報告] ではなく [デプロイで指定] の下に [はい] となっているモジュールが 1 つ以上ある場合、それらはまだ IoT Edge デバイスによって起動されている途中です。 数分待ってから、ページを更新します。

デプロイされたモジュールの一覧内のシミュレートされた温度センサーを示すスクリーンショット。

モジュールのデプロイで問題が発生した場合は、「Azure portal から IoT Edge デバイスのトラブルシューティングを行う」を参照してください。

生成されたデータを表示する

このクイック スタートでは、新しい IoT Edge デバイスを作成し、そこに IoT Edge ランタイムをインストールしました。 その後、Azure portal を使用して、IoT Edge モジュールをデプロイし、デバイス自体に変更を加えずにモジュールをデバイスで実行しました。

プッシュしたモジュールによって、後でテストするために使用できるサンプル環境データが生成されます。 シミュレートされたセンサーは、マシンと、マシンの周囲の環境の両方を監視します。 たとえば、このセンサーは、サーバー ルーム、工場のフロア、または風力タービンに配置されている可能性があります。 送信されるメッセージには、周囲の温度と湿度、機械の温度と圧力、タイムスタンプが含まれます。 IoT Edge のチュートリアルでは、このモジュールによって作成されたデータを分析用のテスト データとして使用します。

  1. PowerShell セッションで次のコマンドを使用して、お使いの IoT Edge for Linux on Windows 仮想マシンにログインします。

    Connect-EflowVm
    

    Note

    仮想マシンへの SSH 接続が許可されるアカウントは、それを作成したユーザーだけです。

  2. ログインすると、次の Linux コマンドを使用して、実行中の IoT Edge モジュールの一覧を確認できます。

    sudo iotedge list
    

    温度センサー、エージェント、ハブ モジュールが実行されていることを確認する場所を示すスクリーンショット。

  3. 次の Linux コマンドを使用し、温度センサー モジュールからクラウドに送信されているメッセージを確認します。

    sudo iotedge logs SimulatedTemperatureSensor -f
    

    実行中のシミュレートされた温度センサー モジュールの出力ログを示すスクリーンショット。

    ヒント

    IoT Edge のコマンドでは、モジュール名を参照する際に大文字と小文字が区別されます。

リソースをクリーンアップする

IoT Edge チュートリアルを続行する場合、この手順はスキップしてください。 このクイックスタートで登録して設定したデバイスを使用することができます。 それ以外の場合は、課金されないようにするために、作成した Azure リソースを削除してもかまいません。

新しいリソース グループで仮想マシンと IoT ハブを作成した場合、そのグループと関連するすべてのリソースを削除できます。 グループ全体を削除したくない場合は、リソースを個別に削除してもかまいません。

重要

リソース グループの内容を確認して、残しておくべきものがないことを確認してください。 リソース グループを削除すると、元に戻すことができません。

次のコマンドを使用して IoTEdgeResources グループを削除します。 削除には数分かかることがあります。

az group delete --name IoTEdgeResources

リソース グループが削除されたことは、このコマンドを使用してリソース グループの一覧を表示することによって確認できます。

az group list

IoT Edge for Linux on Windows をアンインストールする

デバイスから Azure IoT Edge for Linux on Windows のインストールを削除する場合は、次のコマンドを使用します。

  1. Windows で [設定] を開きます
  2. [プログラムの追加と削除] を選択します
  3. [Azure IoT Edge] アプリを選択します
  4. [アンインストール] を選択します

次のステップ

このクイック スタートでは、IoT Edge デバイスを作成し、Azure IoT Edge クラウド インターフェイスを使用してコードをデバイスにデプロイしました。 これで、環境に関する生データを生成するテスト デバイスができあがりました。

次のチュートリアルでは、Azure portal からデバイスのアクティビティと正常性を監視する方法について説明します。