演習 - IoT Hub と IoT Edge との間の通信を設定する
この演習では、Azure Cloud Shell の Azure CLI を使用して、必要なコマンドを実行します。
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
接続文字列を取得する
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 エントリの値をコピーします。
IoT Edge ランタイムの状態を確認する
このコマンドを使用して、仮想マシンに接続します。 VM のデプロイ中に別のユーザー名を使用した場合は、 azureuser を置き換えます。 <DNS-name> をコンピューターの DNS 名に置き換えます。
ssh <admin-username>@<DNS-name>
IoT Edge デバイスが構成されているかどうかを確認する
IoT Edge セキュリティ デーモンがシステム サービスとして実行されていることを確認するには、 iotedge コマンドを使用します。
重要
iotedge コマンドの実行には、昇格された特権が必要です。
次のコマンドを実行して、IoT Edge デバイスの状態を確認します。
sudo systemctl status iotedge
結果の出力はこのようになるはずです。


IoT Edge デバイスの構成はこれで完了です。 クラウドからモジュールをデプロイして実行することができます。
サービスのトラブルシューティングを行うには、サービス ログを取得します。
journalctl -u iotedge
IoT Edge デバイス上で実行されているすべてのモジュールを表示します。 サービスが初めて開始されたので、 edgeAgent モジュールのみが実行されています。 edgeAgent モジュールが既定で実行され、デバイスにデプロイする追加モジュールのインストールと起動を支援します。
sudo iotedge list



