演習 - IoT Hub と IoT Edge との間の通信を設定する

完了

この演習では、Azure Cloud Shell の Azure CLI を使用して、必要なコマンドを実行します。

Azure Cloud Shell に接続する方法を示すスクリーンショット。

Azure IoT 拡張機能をインストールする

Cloud Shell インスタンス Azure CLI に Azure IoT 拡張機能を追加します。

az extension add --name azure-iot

この記事では、azure-iot と呼ばれる、Azure IoT 拡張機能の最新バージョンを使用します。 レガシ バージョンは、 azure-cli-iot-extと呼ばれます。 インストールするバージョンは、一度に 1 つのみとしてください。 インストールされている拡張機能を確認するには、 az extension listを実行します。

az extension remove --name azure-cli-iot-extを実行して、拡張機能のレガシ バージョンを削除します。

az extension add --name azure-iotを実行して、拡張機能の新しいバージョンを追加します。

リソース グループを作成する

次のコマンドを実行して、"IoTEdgeResources" という名前のリソース グループを作成します。

az group create --name IoTEdgeResources --location eastus2

出力は次のようになります。

リソース グループの作成のスクリーンショット。

IoT ハブを作成する

次のコードでは、リソース グループ "IoTEdgeResources" に無料 の F1 層 ハブを作成します。 {hub_name} を IoT ハブの一意の名前に置き換えます。

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

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

IoT Edge デバイスを登録する

Azure Cloud Shell で、次の手順に従って、ハブに "myEdgeDevice" という名前のデバイスを作成します。

デバイス ID を作成する

IoT Edge デバイスは動作し、一般的な IoT デバイスとは異なる方法で管理されます。 --edge-enabled フラグを使用して、この ID を IoT Edge デバイスとして宣言します。

重要

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

次のコマンドは、デバイス ID を作成します。

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

図は、デバイス ID の作成を示しています。

接続文字列を取得する

IoT Hub で物理デバイスとその ID をリンクするデバイスの接続文字列を取得するには、次のコマンドを使用します。

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

出力は次のようになります。

HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

JSON 出力から connectionString キーの値をコピーして保存します。 この値は デバイス接続文字列であり、次のセクションで IoT Edge ランタイムを構成するために使用されます。

IoT Edge デバイスを展開する

この CLI コマンドを使用して、事前構築済みの iotedge-vm-deploy テンプレートに基づいて IoT Edge デバイスを作成します。 コマンドをテキスト エディターにコピーし、プレースホルダー テキストを自分の情報に置き換えて、bash または Cloud Shell ウィンドウに貼り付けます。

az deployment group create \
--resource-group IoTEdgeResources \
--template-uri "https://aka.ms/iotedge-vm-deploy" \
--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>"

パスワード (adminPasswordOrKey) の長さが 12 文字以上で、小文字、大文字、数字、特殊文字の 3 つが含まれていることを確認します。

新しい仮想マシンの作成と起動には数分かかる場合があります。 デプロイが完了すると、仮想マシンに接続するための SSH 情報を含む JSON 形式の出力が CLI に表示されます。 出力セクションのパブリック SSH エントリの値をコピーします。

パブリック SSH を示すスクリーンショット。

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

このコマンドを使用して、仮想マシンに接続します。 VM のデプロイ中に別のユーザー名を使用した場合は、 azureuser を置き換えます。 <DNS-name> をコンピューターの DNS 名に置き換えます。

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

IoT Edge デバイスが構成されているかどうかを確認する

IoT Edge セキュリティ デーモンがシステム サービスとして実行されていることを確認するには、 iotedge コマンドを使用します。

重要

iotedge コマンドの実行には、昇格された特権が必要です。

次のコマンドを実行して、IoT Edge デバイスの状態を確認します。

sudo systemctl status iotedge

結果の出力はこのようになるはずです。

Azure IoT Edge デーモンの状態を示すスクリーンショット。

仮想デバイスで実行されているモジュールの一覧を示すスクリーンショット。

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

サービスのトラブルシューティングを行うには、サービス ログを取得します。

journalctl -u iotedge

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

sudo iotedge list