演習 - IoT Edge を IoT Hub に構成する

完了

Azure Cloud Shell の使用

Azure Cloud Shell を開始するには、Azure portal の上部ナビゲーションから Cloud Shell を起動します。

An illustration is showing how to open Azure 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 名を確認するには、次の操作を行います。

  1. 作成したリソース グループに移動する
  2. 仮想マシンのリソースを選択する
  3. [概要] ページに、DNS 名が表示されます

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

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

重要

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

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

sudo systemctl status iotedge

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

An illustration is showing status of Azure IoT Edge Deamon.

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

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

journalctl -u iotedge

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

sudo iotedge list