演習 - IoT Edge を IoT Hub に構成する
Azure Cloud Shell の使用
Azure Cloud Shell を開始するには、Azure portal の上部ナビゲーションから Cloud Shell を起動します。
次のコマンドを使用し、Azure CLI 用に Azure IoT 拡張機能をインストールします。 この拡張機能では、IoT Hub などの Azure リソースを管理できます。
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
を使用します。
リソース グループの作成
次のコマンドを使用して、eastus2 にリソース グループを作成します。 ご自分のリソース グループに名前を付けます。
az group create --name <resource-group> --location eastus2
IoT ハブを作成する
次のコードを使用して、リソース グループに無料の F1 ハブを作成します。 {hub_name} をお使いの IoT ハブの一意の名前に置き換え、<resource-group> をご自分のリソース グループ名に置き換えます。
az iot hub create --resource-group <resource-group> --name {hub_name} --sku F1 --partition-count 2
IoT ハブに IoT Edge デバイスを登録する
IoT Edge デバイスのデバイス ID を作成します。
IoT Edge デバイスは一般的な IoT デバイスとは動作が異なり、異なる方法で管理できるため、この ID は、--edge-enabled フラグを指定して IoT Edge デバイス用として宣言します。
Note
サブスクリプションに無料のハブが既に 1 つあるためにエラーが発生する場合は、SKU を S1 に変更します。 各サブスクリプションで使用できる無料 IoT ハブは 1 つのみです。 IoT ハブの名前が利用できないというエラーが発生した場合は、自分以外のだれかが既にその名前のハブを所有していることを意味します。
Azure Cloud Shell で、次のコマンドを入力して、myEdgeDevice という名前のデバイスをハブに作成します。
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 言語検出モジュールでは、仮想マシンに少なくとも 8 GB のメモリと 16 GB のディスク ストレージが必要です。 展開テンプレートで定義されている既定値の VM サイズを使用すると、モジュールは失敗します。 仮想マシンのサイズを D2s_v3 以上に変更します。 仮想マシンのサイズ変更については、「仮想マシンのサイズを変更する」を参照してください。 ディスク ストレージの拡張について詳しくは、「Windows 仮想マシンに接続されている仮想ハード ディスクを拡張する方法」を参照してください。
IoT Edge ランタイムの状態を確認する
次のコマンドを使用して、仮想マシンに接続します。 VM のデプロイ時に提示されたユーザー名とは別のものを使用した場合は、azureuser
を置き換えます。 {DNS name}
をコンピューターの DNS 名に置き換えます。
ssh {admin username}@{DNS name}
DNS 名を確認するには、次の操作を行います。
- 作成したリソース グループに移動する
- 仮想マシンのリソースを選択する
- [概要] ページに、DNS 名が表示されます
IoT Edge デバイスが構成されたかどうかを確認する
iotedge コマンドを使用して、IoT Edge セキュリティ デーモンがシステム サービスとして実行されていることを確認します。 iotedge コマンドを実行するには、昇格された特権が必要です。
重要
iotedge コマンドを実行するには、昇格された特権が必要です。
次のコマンドを実行し、IoT Edge デバイスの状態をテストします。
sudo systemctl status iotedge
結果の出力はこのようになるはずです。
IoT Edge デバイスの構成はこれで完了です。 クラウドからモジュールをデプロイして実行することができます。
サービスのトラブルシューティングが必要な場合は、サービス ログを取得します。
journalctl -u iotedge
IoT Edge デバイス上で実行されているすべてのモジュールを表示します。 初めてサービスが開始されたので、edgeAgent モジュールが実行されていることのみが確認できます。 edgeAgent モジュールが既定で実行され、デバイスにデプロイする追加モジュールのインストールと起動を支援します。
sudo iotedge list