演習 - IoT Hub と IoT Edge との間の通信を設定する
この演習では Azure Cloud Shell で Azure CLI を使用して、必要なコマンドを実行します。
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
結果の出力はこのようになるはずです。
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
接続文字列を取得する
デバイスに対して、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 エントリの値をコピーします。
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