次の方法で共有


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

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

重要

IoT Edge 1.1 のサポート終了日は、2022 年 12 月 13 日でした。 この製品、サービス、テクノロジ、または API がどのようにサポートされているかについては、 Microsoft 製品ライフサイクル を確認してください。 最新バージョンの IoT Edge への更新の詳細については、「 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 環境を使用します。

    新しいウィンドウで Cloud Shell を起動する

  • 必要に応じて、Azure CLI を インストール して CLI 参照コマンドを実行します。

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

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

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

クラウド リソース:

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

    az group create --name IoTEdgeResources --___location westus2
    

IoT ハブを作成する

このクイック スタートでは、最初に Azure CLI を使用して IoT ハブを作成します。

図 - クラウドに IoT ハブを作成する

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

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

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

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

IoT Edge デバイスを登録する

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

図 - IoT Hub ID にデバイスを登録する

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

IoT Edge デバイスは、一般的な IoT デバイスとは異なる動作をし、別に管理できるため、この ID は IoT Edge デバイス用として --edge-enabled フラグで宣言します。

  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 つの間の接続を認証する共有キーが含まれています。 次のセクションで IoT Edge デバイスを設定するときに、この接続文字列についてもう一度触れます。

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
    

    CLI 出力から接続文字列を表示する

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 間の通信を管理します。

ランタイムの構成中に、デバイスの接続文字列を入力します。 これは、Azure CLI から取得した文字列です。 この文字列によって、Azure 内の IoT Edge デバイス ID と物理デバイスとが関連付けられます。

IoT Edge デバイスを展開する

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

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

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

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

デプロイが完了すると、仮想マシンに接続するための SSH 情報を含む JSON 形式の出力が CLI で受信されます。 出力セクションのパブリック SSH エントリの値をコピーします。

出力からパブリック ssh 値を取得する

IoT Edge ランタイムの状態を確認する

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

ssh {admin username}@{DNS name}

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

  1. IoT Edge セキュリティ デーモンがシステム サービスとして実行されていることを確認します。

    sudo systemctl status iotedge
    

    システム サービスとして実行されている IoT Edge デーモンを確認する

    ヒント

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

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

    journalctl -u iotedge
    
  3. IoT Edge デバイス上で実行されているすべてのモジュールを表示します。 サービスが初めて開始されたばかりであるため、 edgeAgent モジュールのみが実行されていることがわかります。 edgeAgent モジュールが既定で実行され、デバイスにデプロイする追加モジュールのインストールと起動を支援します。

    sudo iotedge list
    

    デバイス上の 1 つのモジュールを表示する

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. 一覧からターゲット IoT Edge デバイスのデバイス ID を選択します。

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

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

    [モジュールの設定] の選択を示すスクリーンショット。

モジュール

ウィザードの最初の手順では、デバイスで実行するモジュールを選択します。

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

[追加] ドロップダウン メニューを示すスクリーンショット。

IoT Edge モジュール マーケットプレースで、Simulated Temperature Sensor モジュールを検索して選択します。 モジュールは、目的の 実行 状態で IoT Edge モジュール セクションに追加されます。

[次へ: ルート] を選択して、ウィザードの次の手順に進みます。

モジュールが追加された後の次の手順に進む方法を示すスクリーンショット。

経路

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

既定のルートを削除してから次の手順に進む方法を示すスクリーンショット。

[ 次へ: 確認と作成] を選択します。

確認と作成

JSON ファイルを確認し、[ 作成] を選択します。 この JSON ファイルには、IoT Edge デバイスにデプロイするすべてのモジュールが定義されます。 SimulatedTemperatureSensor モジュールと、edgeAgentedgeHub の 2 つのランタイム モジュールが表示されます。

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

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

$edgeAgent$edgeHubSimulatedTemperatureSensor の 3 つのモジュールが表示されます。 1 つ以上のモジュールが展開で指定されているデバイスによって報告されていない場合、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 のコマンドでは、モジュール名を参照する際に大文字と小文字が区別されます。

モジュールからデータを表示する

Visual Studio Code 用の Azure IoT Hub 拡張機能を使用して、IoT ハブに到着したメッセージを監視することもできます。

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

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

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

重要

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

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

az group delete --name IoTEdgeResources --yes

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

az group list

次のステップ

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

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