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

完了

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

An illustration is showing how to connect azure Cloud Shell.

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

Azure IoT 拡張機能を Cloud Shell インスタンスの Azure CLI に追加する必要があります。

az extension add --name azure-iot

Note

この記事では、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

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

An illustration showing the creation of a resource group.

IoT Hub の作成

次のコードにより、無料の F1 レベルのハブがリソース グループ "IoTEdgeResources" に作成されます。 {hub_name} を、IoT Hub の一意の名前に置き換えます。

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

Note

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

IoT Edge デバイスを登録する

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

デバイス ID を作成する

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

重要

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

次のコマンドによってデバイス ID が作成されます。

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

An illustration is showing that creating device identity.

接続文字列を取得する

デバイスに対して、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 文字以上で、小文字、大文字、数字、特殊文字の 4 つのうち 3 つを使用する必要があります。

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

An illustration is showing the public 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

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

An illustration is showing status of Azure IoT Edge Deamon.

An illustration is showing the list of modules running on the virtual device.

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

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

journalctl -u iotedge

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

sudo iotedge list