次の方法で共有


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

対象:IoT Edge 1.5 チェックマーク IoT Edge 1.5

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は 2024 年 11 月 12 日に終了しました。 以前のリリースを使用している場合は、「Update IoT Edgeを参照してください。

コンテナー化されたコードを仮想 Linux IoT Edge デバイスにデプロイして、このクイック スタートでAzure IoT Edgeしてみてください。 IoT Edgeを使用すると、デバイス上のコードをリモートで管理できるため、より多くのワークロードをエッジに送信できます。 このクイック スタートでは、IoT Edge デバイス用のAzure仮想マシンを使用します。 これにより、テスト マシンをすばやく作成し、完了したら削除できます。

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

  • IoT Hubを作成します。
  • IoT Edge デバイスを IoT ハブに登録します。
  • 仮想デバイスにIoT Edge ランタイムをインストールして起動します。
  • IoT Edge デバイスにモジュールをリモートでデプロイします。

デバイスとクラウドのクイックスタートのアーキテクチャの図。

このクイック スタートでは、IoT Edge デバイスとして構成された Linux 仮想マシンを作成する手順について説明します。 次に、Azure ポータルからデバイスにモジュールをデプロイします。 このクイック スタートでは、温度、湿度、圧力のデータを生成するシミュレートされたセンサー モジュールを使用します。 他のAzure IoT Edgeチュートリアルは、ビジネス分析情報のシミュレートされたデータを分析する追加のモジュールをデプロイすることで、ここで行う作業に基づいています。

アクティブなAzure サブスクリプションがない場合は、開始する前に free アカウントを作成します。

前提条件

Azure CLIの環境を設定します。

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Get started with Azure Cloud Shell」を参照してください。

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

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

    • メッセージが表示されたら、最初に使用するときにAzure CLI拡張機能をインストールします。 拡張機能の詳細については、「Azure CLIを参照してください。

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

このクイック スタートで使用するすべてのリソースを管理するためのリソース グループです。 このクイック スタートと次のチュートリアルでは、リソース グループ名 IoTEdgeResources の例を使用します。

az group create --name IoTEdgeResources --location westus2

IoT Hubを作成する

Azure CLIを使用してIoT Hubを作成して、クイック スタートを開始します。

クラウドでIoT Hubを作成する方法を示す図

このクイックスタートでは、IoT Hubの Free レベルが機能します。 過去にIoT Hubを使用していて、既にハブが作成されている場合は、そのIoT hubを使用できます。

次のコードにより、無料の F1 ハブがリソース グループ IoTEdgeResources に作成されます。 <hub-name> を、IoT Hubの一意の名前に置き換えます。 IoT Hubの作成には数分かかる場合があります。

az iot hub create --resource-group IoTEdgeResources --name <hub-name> --sku F1 --partition-count 2

サブスクリプションに無料のIoT Hubが既に 1 つあるためにエラーが発生する場合は、SKU を S1 に変更します。 各サブスクリプションで使用できる無料 IoT ハブは 1 つのみです。 IoT Hub名が使用できないというエラーが発生した場合は、他のユーザーがその名前のハブを既に持っていることを意味します。 新しい名前を試してください。

IoT Edge デバイスを登録する

IoT Edge デバイスを、先ほど作成した IoT ハブに登録します。

IoT Hub IDにデバイスを登録する方法の図解。

IoT ハブと通信できるように、IoT Edge デバイスのデバイス 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 Hubの名前、デバイスの名前、およびそれらの間の接続を認証する共有キーが含まれます。 このconnection stringは、次のセクションでもう一度使用して、IoT Edge デバイスを設定します。

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <hub-name>
    

    たとえば、connection stringは HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE-SHARED-ACCESS-KEY> のようになります。

IoT Edge デバイスを構成する

Azure IoT Edge ランタイムを使用して仮想マシンを作成します。

デバイスでランタイムを開始する方法の図。

IoT Edge ランタイムは、すべてのIoT Edge デバイスにデプロイされ、3 つのコンポーネントがあります。 IoT Edge セキュリティ デーモンは、IoT Edge デバイスが起動するたびに起動し、IoT Edge エージェントを起動してデバイスをブートストラップします。 IoT Edge エージェントは、IoT Edge ハブを含む、IoT Edge デバイス上のモジュールのデプロイと監視を容易にします。 IoT Edge ハブは、IoT Edge デバイス上のモジュール間、およびデバイスとIoT Hub間の通信を管理します。

実行時の構成時に、デバイスのconnection stringを指定します。 この文字列は、Azure CLIから取得されます。 この文字列は、物理デバイスをAzureのIoT Edgeデバイス ID に関連付けます。

IoT Edge デバイスを展開する

このセクションでは、Azure Resource Manager テンプレートを使用して新しい仮想マシンを作成し、IoT Edge ランタイムをインストールします。 代わりに独自の Linux デバイスを使用する場合は、単一の Linux IoT Edge デバイスを手動でプロビジョニング、このクイック スタートに戻ります。

deploy to Azure ボタンまたは CLI コマンドを使用して、事前構築済みの iotedge-vm-deploy テンプレートに基づいてIoT Edge デバイスを作成します。

  • IoT Edge Azure Resource Manager テンプレートを使用してデプロイします。

    deploy to Azure

  • bash または Cloud Shell ユーザーの場合は、次のコマンドをテキスト エディターにコピーし、プレースホルダー テキストを自分の情報に置き換えてから、bash または Cloud Shell ウィンドウにコピーします。

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • PowerShell ユーザーの場合は、次のコマンドを PowerShell ウィンドウにコピーし、プレースホルダーのテキストを実際の情報に置き換えます。

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

このテンプレートにより、以下のパラメーターが受け取られます。

パラメーター 説明
resource-group リソースが作成されるリソース グループ。 この記事全体で使用してきた既定の IoTEdgeResources を使用するか、サブスクリプションの既存のリソース グループの名前を指定します。
template-uri 使用しているResource Manager テンプレートへのポインター。
dnsLabelPrefix 仮想マシンのホスト名を作成するために使用される文字列。 プレースホルダー テキストを仮想マシンの名前に置き換えます。
adminUsername 仮想マシンの管理者アカウントのユーザー名。 例の azureUser を使用するか、新しいユーザー名を入力します。
deviceConnectionString IoT Edge ランタイムを仮想マシンで構成するために使用される、IoT Hub のデバイスIDからの接続文字列です。 このパラメーター内の CLI コマンドは、接続文字列を取得します。 プレースホルダーのテキストを実際の IoT ハブ名に置き換えます。
authenticationType 管理者アカウントの認証方法。 このクイックスタートでは password 認証を使用しますが、このパラメーターを sshPublicKey に設定することもできます。
adminPasswordOrKey 管理者アカウントの SSH キーのパスワードまたは値。 プレースホルダーのテキストをセキュリティで保護されたパスワードに置き換えます。 パスワードは、12 文字以上で、小文字、大文字、数字、特殊文字の 4 つのうち 3 つを使用する必要があります。

デプロイが完了すると、CLI の JSON 形式の出力には、仮想マシンに接続するための SSH 情報が含まれます。 outputs セクションの public SSH エントリの値をコピーします。 たとえば、SSH コマンドは ssh azureUser@edge-vm.westus2.cloudapp.azure.com のようになります。

IoT Edge ランタイムの状態を表示する

このクイック スタートの残りのコマンドは、デバイスで何が起こっているかを確認できるように、IoT Edge デバイス自体で実行されます。 仮想マシンを使用している場合は、設定した管理者のユーザー名と、デプロイ コマンドによって出力された DNS 名を使用して、そのマシンに接続します。 Azure ポータルの仮想マシンの概要ページにも DNS 名が表示されます。 次のコマンドを使用して、仮想マシンに接続します。 <admin-username><DNS-name> を独自の値に置き換えます。

ssh <admin-username>@<DNS-name>

仮想マシンに接続したら、ランタイムが正常にインストールされ、IoT Edge デバイスに構成されたことを確認します。

  1. IoT Edgeが実行されているかどうかを確認します。 次のコマンドは、IoT Edgeが実行されている場合、またはサービス エラーが発生した場合>Ok

    sudo iotedge system status
    

    ヒント

    iotedge コマンドの実行には、昇格された特権が必要です。 コンピューターからサインアウトし、IoT Edge ランタイムのインストール後に初めてサインインすると、アクセス許可が自動的に更新されます。 それまでは、コマンドの前に sudo を使用します。

  2. サービスのトラブルシューティングが必要な場合は、サービス ログを取得します。

    sudo iotedge system logs
    
  3. IoT Edge デバイスで実行されているすべてのモジュールを表示します。 初めてサービスが開始されたので、edgeAgent モジュールが実行されていることのみが確認できます。 edgeAgent モジュールが既定で実行され、デバイスにデプロイする追加モジュールのインストールと起動を支援します。

    sudo iotedge list
    

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

モジュールを展開する

クラウドから Azure IoT Edge デバイスを管理して、デバイス テレメトリ データをIoT Hubに送信するモジュールをデプロイします。

クラウドからデバイスにモジュールをデプロイする方法の図。

Azure IoT Edgeの主な機能は、クラウドからIoT Edge デバイスにコードをデプロイすることです。 IoT Edge モジュールは、コンテナーとして実装される実行可能パッケージです。 このセクションでは、Microsoft Artifact Registry の IoT Edge Modules セクションから事前構築済みモジュールをデプロイします。

このセクションでデプロイするモジュールはセンサーをシミュレートし、生成されたデータを送信します。 このモジュールは、シミュレートされたデータを開発とテストに使用できるため、IoT Edgeの使用を開始するときに便利なコードです。 このモジュールの動作を正確に確認する場合は、simulated 温度センサーのソース コードを確認できます。

最初のモジュールをデプロイするには、次の手順を使用します。

  1. Azure ポータルにサインインし、IoT Hubに移動します。

  2. 左側のメニューの Device Management で、Devices を選択します。

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

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

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

    デバイスで実行するモジュールを選択します。 自分でビルドしたモジュールまたはコンテナー レジストリ内のイメージから選択できます。 このクイック スタートでは、Microsoft コンテナー レジストリからモジュールをデプロイします。

  5. IoT Edge モジュール セクションで、AddIoT Edge Module を選択します。

  6. 次のモジュール設定を更新します。

    設定
    IoT モジュール名 SimulatedTemperatureSensor
    画像の URL mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
    再起動ポリシー 常時
    望ましい状態 実行中
  7. [次へ: ルート] を選び、ルートの構成を続行します。

  8. シミュレートされた温度モジュールからすべてのメッセージをIoT Hubに送信するルートを追加します。

    設定
    名前 SimulatedTemperatureSensorToIoTHub
    FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. 次のステップ: 確認 + 作成を選択します。

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

    注意

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

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

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

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

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

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

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

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

IoT Edge デバイスでコマンド プロンプトを開くか、Azure CLIからの SSH 接続を使用します。 クラウドからデプロイしたモジュールが、IoT Edge デバイスで実行されていることを確認します。

sudo iotedge list

ご利用のデバイスの 3 つのモジュールを示すスクリーンショット。

温度センサー モジュールから送信されたメッセージを表示します。

sudo iotedge logs SimulatedTemperatureSensor -f

出力コンソールのモジュールからのデータを示すスクリーンショット。

ヒント

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

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

IoT Edgeチュートリアルに進むには、このクイックスタートで登録して設定したデバイスを使用します。 それ以外の場合は、課金されないように、作成したAzureリソースを削除します。

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

重要

リソース グループを削除すると、元に戻すことができません。

IoTEdgeResources グループを削除します。 リソース グループの削除には数分かかる場合があります。

az group delete --name IoTEdgeResources --yes

リソース グループの一覧を表示して、リソース グループが削除されていることを確認します。

az group list

次のステップ

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

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