次の方法で共有


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

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

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は、2024 年 11 月 12 日をもってサポートが終了しています。 以前のリリースの場合は、「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 portal からご自身のデバイスにモジュールを配置します。 このクイック スタートでは、温度、湿度、圧力のデータを生成するシミュレートされたセンサー モジュールを使用します。 他の Azure IoT Edge チュートリアルでは、ここで行う作業を基盤としており、ビジネスに関する分析情報を得るためにシミュレートされたデータを分析する追加のモジュールを配置しています。

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

前提条件

Azure CLI 用に環境を設定します。

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

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 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 ハブを使用することができます。

次のコードにより、無料の 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 ハブの名前が利用できないというエラーが発生した場合、自分以外のだれかが既にその名前のハブを所有していることを意味します。 新しい名前を試してください。

IoT Edge デバイスを登録する

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

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

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

    たとえば、接続文字列は 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 ハブの間の通信を管理します。

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

IoT Edge デバイスを展開する

このセクションでは、Azure Resource Manager テンプレートを使用して新しい仮想マシンを作成し、そこに IoT Edge ランタイムをインストールします。 代わりにご自分の Linux デバイスを使用する場合は、1 つの Linux IoT Edge デバイスを手動でプロビジョニングする方法に関するページのインストール手順を行ってから、このクイックスタートに戻ることができます。

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

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

    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 名を使用して、そのマシンに接続します。 DNS 名は、Azure portal の仮想マシンの概要ページでも確認できます。 次のコマンドを使用して、仮想マシンに接続します。 <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 モジュール セクションから事前構築済みモジュールをデプロイします。

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

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

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

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

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

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

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

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

  5. [IoT Edge モジュール] セクションで [追加] を選び、次に [IoT Edge モジュール] を選びます。

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

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

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

    設定 Value
    名前 SimulatedTemperatureSensorToIoTHub
    Value FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. 確認と作成 をクリックします。

  10. 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 のチュートリアルでは、このモジュールによって作成されたデータを分析用のテスト データとして使用します。

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 portal からデバイスのアクティビティと正常性を監視する方法について説明します。