Azure Sphere 用に Azure IoT Edge を設定する

重要

これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。

Azure IoT Edge は、Azure Sphere や Azure IoT Hub などのダウンストリーム デバイス間のフィルター処理レイヤーとデータ処理レイヤーを提供します。 Azure Sphere デバイスで大量のデータまたは後処理を必要とするデータが生成される場合は、Azure IoT Edge の使用を検討してください。

このトピックでは、Azure Sphere で Azure IoT Edge デバイスを設定する手順について説明します。 Azure Sphere では、Azure IoT Edge のバージョン 1.1 と 1.2 の両方がサポートされています。手順に大きな違いがあります。 主な違いは次のとおりです。

  • パッケージ名が iotedge から aziot-edge に変更されました。
  • 既定の構成ファイルは、名前と場所が新しくなっています。 Azure IoT Edge 1.1 では、構成ファイルは /etc/iotedge/config.yaml でした。 Azure IoT Edge 1.2 では、構成ファイルは /etc/aziot/config.toml です。
  • Azure IoT Edge 1.2 には、ネットワーク上の DNS サーバー経由でアクセスできる完全修飾ドメイン名 (FQDN) が必要です。

このトピックのタスクを完了すると、Azure Sphere デバイスは、 トランスペアレント ゲートウェイとして機能する Azure IoT Edge デバイスを介して Azure IoT Hub にデータを送信するように構成されます。 Azure IoT Edge モジュール ガイドに従って、Azure IoT Edge デバイス上のモジュールでデータのフィルター処理と処理追加できます。

開始する前に

このトピックの手順では、次のことを前提としています。

  • Azure Sphere デバイスが USB で PC に接続されている。
  • Azure サブスクリプションがある。
  • Azure IoT Hub インスタンスを作成し、デバイスを手動でプロビジョニング。 手順 6 で後ほど IoT Hub のテナント CA 証明書を使用する必要があることに注意してください。
  • リソース グループが作成されており、Azure IoT Hub および IoT Edge サービスに関連するすべてのリソースがこのリソース グループに属している必要があります。

重要

Azure サブスクリプションは無料で作成できますが、サインアップ プロセスでクレジット カード番号を入力する必要があります。 Azure では、さまざまなレベルのサブスクリプション サービスを提供しています。 既定では、Azure IoT Hub インスタンスを作成するときに、月額サービス料金が必要な Standard レベルが選択されます。 月額料金を回避するには、Free レベルを選択します。 Free レベルには、 Device Twin など、Azure IoT Hub インスタンスでデバイスを使用するために必要なサービスが含まれます。 Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。

概要

Azure IoT Edge デバイスを設定し、Azure Sphere デバイスと連携するように構成するには複数の手順が必要です。特に Azure IoT Edge に慣れていない場合は、手順を実行するために約 8 時間を計画する必要があります。 Azure IoT Edge を初めて使用する場合は、各セクションのクイック スタートの手順に従って、Linux 仮想マシン上で実行される IoT Edge デバイスを設定して構成します。

これらの手順は、Azure Sphere テナントと Azure IoT Edge デバイスごとに 1 回だけ完了する必要があります。ただし、Azure IoT Hub で各 Azure Sphere デバイスを手動で構成し、Azure IoT Edge デバイスを Azure Sphere デバイスの親として設定する必要があります。

セットアップ手順は、次の 3 つの論理グループに分割できます。

  • 透過的なゲートウェイとして IoT Edge デバイスを作成して構成する

    • ステップ 1. Azure IoT Edge デバイスを作成します。
    • ステップ 2. Azure IoT Edge ゲートウェイ デバイスをサーバーとして構成します。
    • 手順 3. 通信のために Azure IoT Edge ゲートウェイ デバイス ポートを開きます。
    • ステップ 4: config.toml (Azure IoT Edge バージョン 1.2) または config.yaml (Azure IoT Edge バージョン 1.1) のゲートウェイ ホスト名を更新します。
  • Azure IoT Hub で Azure Sphere デバイスを構成する

    • ステップ 5: Azure IoT Edge デバイスを Azure Sphere デバイスの親として設定します。
  • Azure Sphere デバイスと IoT Edge デバイスの間に信頼された接続を確立する

    • ステップ 6. Azure Sphere デバイスのテナント CA 証明書を Azure IoT Edge デバイスに提供します。
    • 手順 7. Azure IoT Edge デバイスのルート CA 証明書を Azure Sphere デバイスに提供します。

ステップ 1. Azure IoT Edge デバイスを作成する

まだ行っていない場合は、Azure IoT Edge デバイスを設定し、Azure IoT Hub に登録する必要があります。

Device Provisioning Service (DPS) を使用して、Azure IoT Edge デバイスをプロビジョニングできます。 ただし、DPS を使用して Azure Sphere デバイスをプロビジョニングすることはできません。 Azure IoT Hub DPS を使用した Azure IoT Edge デバイスのダウンストリームでのデバイスの自動プロビジョニングはサポートされていません。

IoT Edge クイック スタートの手順に従って、 Linux VM または Windows デバイスで実行される Azure IoT Edge デバイスを設定し それを Azure IoT Hub に登録できます。

クイック スタートの手順を使用して、次の操作を行います。

  • Azure IoT Edge デバイスを Azure IoT Hub インスタンスに登録します。 この手順では新しい IoT ハブを作成しないでください。Azure IoT Edge デバイスを、既に作成した IoT ハブに登録するだけです。
  • Azure IoT Edge デバイスに Azure IoT Edge ランタイムをインストールして起動します。

Note

IoT Edge クイック スタートで、モジュールをデプロイする前に停止します。

ステップ 2. IoT Edge ゲートウェイ デバイスをサーバーとして構成する

手順に従って 透過的なゲートウェイ (Azure IoT Edge 1.2) または Azure IoT Edge 1.1 として機能するように Azure IoT Edge デバイスを構成しますが、「ゲートウェイ デバイスでポートを開く」セクションに到達したら停止します。これらの手順では、証明書ファイルを IoT Edge デバイスにコピーするように指示しますが、この手順の手順 8 まで VM にファイルをコピーしないでください。

デバイス ゲートウェイをサーバーとして構成するために完了した手順の一部として、次の作業が既に完了しています。

  • Azure IoT Edge デバイス証明書を構成しました。
  • Azure IoT Edge ハブ モジュールをデプロイしました。
  • Azure IoT Edge を介したメッセージのルーティングを構成しました。

また、これらの手順の一環として、次の証明書を作成します。

  • ルート CA 証明書: certs/azure-iot-test-only.root.ca.cert.pem
  • デバイス CA 証明書と秘密キー (IoT Edge デバイスを IoT Hub に登録するために使用):
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge CA 証明書と秘密キー (IoT Edge デバイスにコピーされ、その構成ファイルで参照される場合):
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

クイック スタートに従っている場合は、証明書を生成するコンピューターが Linux ベースのコンピューターである場合は、デモ証明書を構成するための Linux の手順を使用します。 証明書を生成するコンピューターが Windows ベースのコンピューターである場合は、Windows の指示に従ってデモ証明書を生成します。 ルート証明書を Linux VM またはローカルの Windows コンピューターに コピーする方法については、このセクションを参照してください

Azure IoT Edge ルート CA 証明書は、 Step 7, で変更されますが、 Step 8 で元の証明書が必要になります。 元の証明書のコピーを保持して、再利用できるようにします。

Note

config.toml (Azure IoT Edge 1.2) または config.yaml (Azure IoT Edge 1.1) ファイルの証明書セクションを更新するときは、config.toml (Azure IoT Edge 1.2) または config.yaml (Azure IoT Edge 1.1) の certificates: 行に先行する空白がなく、入れ子になった各証明書が 2 つのスペースでインデントされていることを確認します。

ファイルを更新したら、 edgehub モジュールが Azure IoT Edge デバイスで実行されていることを確認します。

sudo iotedge list

詳細については、「 IoT Edge デバイスをゲートウェイとして使用する方法 (Azure IoT Edge 1.2)または Azure IoT Edge 1.1 を参照してください。

テスト証明書を使用している場合は、「 ダウンストリーム デバイス証明書の作成 (Azure IoT Edge 1.2) または Azure IoT Edge 1.1 に関するページに記載されているように、ダウンストリーム デバイス証明書を生成する前に停止

手順 3. 通信用の Azure IoT Edge ゲートウェイ デバイス ポートを開く

ゲートウェイ デバイスは、ダウンストリーム デバイスからメッセージを受信できる必要があります。 ゲートウェイ シナリオを機能させるには、ダウンストリーム デバイスからの受信トラフィックに対して、少なくとも 1 つの IoT ハブのサポートされているプロトコルを開く必要があります。

Azure Sphere では、プロトコル MQTT が使用されます。 このプロトコルでは、ポート 8883 が使用されます。

詳細については、「ゲートウェイ デバイス (Azure IoT Edge 1.2) または Azure IoT Edge 1.1 でポートを開くを参照してください。

クイック スタートで Edge デバイスを設定した後、Windows VM でポート 8883 を開くには、次の手順に従います。

  1. 必要に応じて、Azure アカウントを使用して azure portal にログインします。
  2. 「手順 1: Azure IoT Edge デバイスの作成 」セクションで作成した仮想マシンに移動します。
  3. 左側の Settings セクションで、Networking を選択し、受信ポート規則を追加
  4. 受信ポート規則の追加 ブレードの Destination ポート範囲で、値を 8883 に変更します。
  5. [ Protocolで、 TCP を選択します。
  6. Nameで、値を MQTT に変更します。
  7. その他の設定はすべて既定値のままにし、 [追加] を選択します。

クイックスタートで Azure IoT Edge デバイスを設定した後、Linux VM でポート 8883 を開くには、次の手順に従います。

  1. 次のコマンドを実行して、MQTT のポートが開いているかどうかを確認します。

    sudo netstat -lptu

  2. 必要に応じて、次のコマンドを使用してポートを開きます。

    sudo ufw allow 8883

これにより、MQTT プロトコルから Azure IoT Edge ゲートウェイへの通信を許可する受信セキュリティ規則が定義されます。

ステップ 4: ゲートウェイのホスト名を更新する

この手順では、使用している Azure IoT Edge のバージョンに応じて異なる手順を使用します。 Azure IoT Edge 1.2 または Azure IoT Edge 1.1

Azure IoT Edge 1.2: config.toml でゲートウェイのホスト名を更新する

Azure IoT Edge ランタイムでは、64 文字未満のホスト名がサポートされています。 通常、物理マシンには長いホスト名はありませんが、クイック スタートの例のように Azure IoT Edge デバイスとして仮想マシンを使用している場合は、ホスト名を手動で構成する必要があります。

無効なホスト名のトラブルシューティングを行うには、 common エラーの解決方法を参照してください。

クイックスタートで MQTT ポートを構成した後で Azure IoT Edge デバイスのホスト名を構成するには、次の手順に従います。

  1. Azure Portal で IoT Edge デバイス (Linux VM) に移動し、概要ページから DNS 名 の値をコピーして、IoT Edge ゲートウェイの完全修飾ドメイン名 (FQDN) を見つけます。

  2. 必要に応じて、Azure IoT Edge デバイスにログインします。

  3. config.toml ファイルをテキスト エディターで開きます。

    /etc/aziot/config.toml

  4. FQDN を config.toml のホスト名セクションに貼り付けます。 名前がすべて小文字であることを確認します。

    hostname: "<iotedge_machinename>.<mydomain>"
    

    Note

    Azure IoT Edge v1.2 以降の設計では、 hostname FQDN 名にする必要があります (v1.1 のように、IP アドレスは許可されなくなりました)。そのため、同じネットワーク上に適切な A レコードを持つ DNS サーバーが必要です。

  5. iotedge デーモンを再起動します。

    sudo systemctl restart iotedge

  6. 状態にエラー ("[ERROR]" のプレフィックスが付いた色付きのテキスト) がある場合、デーモンのログを調べて詳細なエラー情報を確認します。

    sudo journalctl -u iotedge --no-pager --no-full

  7. 警告を回避するには、Azure IoT Edge デバイス上のモジュールの DNS 構成を設定して、 /etc/docker/daemon.jsonに構成ファイルを含めます。次に例を示します。

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1: config.yaml でゲートウェイのホスト名を更新する

Azure IoT Edge ランタイムでは、64 文字未満のホスト名がサポートされています。 通常、物理マシンには長いホスト名はありませんが、クイック スタートの例のように Azure IoT Edge デバイスとして仮想マシンを使用している場合は、ホスト名を手動で構成する必要があります。

無効なホスト名のトラブルシューティングを行うには、 common エラーの解決方法を参照してください。

クイックスタートで MQTT ポートを構成した後で Azure IoT Edge デバイスのホスト名を構成するには、次の手順に従います。

  1. Azure portal で仮想マシンに移動します。 Overview セクションから DNS 名 (コンピューターの FQDN) の値をコピーします。

  2. 必要に応じて、Azure IoT Edge デバイスにログインします。

  3. テキスト エディターで config.yaml ファイルを開きます。

    /etc/iotedge/config.yaml

  4. FQDN を config.yaml のホスト名セクションに貼り付けます。 名前がすべて小文字であることを確認します。

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    Note

    DNS リゾルバーがネットワーク上にある場合は、ホスト名 (IP アドレスまたは実際のホスト名) にベア マシン名を使用する必要があります。これは、Azure Sphere では netbios がサポートされていないためです。

  5. iotedge デーモンを再起動します。

    sudo systemctl restart iotedge

  6. 状態にエラー ("[ERROR]" のプレフィックスが付いた色付きのテキスト) がある場合、デーモンのログを調べて詳細なエラー情報を確認します。

    sudo journalctl -u iotedge --no-pager --no-full

  7. 警告を回避するには、Azure IoT Edge デバイス上のモジュールの DNS 構成を設定して、 /etc/docker/daemon.jsonに構成ファイルを含めます。次に例を示します。

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

ステップ 5: Azure IoT Edge デバイスを Azure Sphere デバイスの親として設定する

Azure IoT Edge デバイスを Azure Sphere デバイスの親として設定するには、次の手順に従います。

  1. 上記で手動でプロビジョニングされた Azure Sphere デバイスに移動します。
  2. デバイス ID を選択します。
  3. [親デバイス ]の下にある歯車アイコンを選択
  4. 親として設定する Azure IoT Edge デバイスを選択します。
  5. [OK][保存] の順に選択します。

Azure IoT Edge デバイスが Azure Sphere デバイスの親になりました。

ステップ 6. Azure Sphere デバイスのテナント CA 証明書を IoT Edge デバイスに提供する

Azure Sphere デバイス証明書を確認するには、Azure IoT Edge デバイスにテナント CA の独自のコピーが必要です。

  1. まだ行っていない場合は、テナント CA 証明書をダウンロードします。 注: Azure IoT Hub の構成 の一環として、既に完了している必要があります

    • コマンド プロンプトから、Azure Sphere ログインでサインインします。

      azsphere login
      
    • Azure Sphere テナントの CA 証明書をダウンロードします。 このコマンドは、現在の作業ディレクトリ内の CAcertificate.cer という名前のファイルに証明書をダウンロードします。 書き込みアクセス許可があるディレクトリにファイルをダウンロードするか、ダウンロード操作が失敗することを確認します。 出力ファイルには.cer拡張子が必要です。

      azsphere ca-certificate download --destination CAcertificate.cer
      
  2. テナント CA 証明書を PEM 形式に変換します。 Windows コンピューターで形式を変換する手順の例を次に示します。

    • コンピューター上の証明書のパスを見つけて、証明書をダブルクリックして開きます。
    • Details タブを開き、Copy to File を選択します。
    • Certificate Export ウィザードで、Next を選択します。
    • Base-64 でエンコードされた X.509 (CER) 形式を選択し、 Next を選択します。
    • エクスポートする証明書のファイル名を入力し、次 選択
    • [完了] を選択してウィザードを完了します。
    • ダウンロードした証明書ファイルの名前を .pem ファイル拡張子に変更します。
  3. テナント証明書を Azure IoT Edge ルート証明書に追加します。 手順 2 で Azure IoT Edge 証明書を作成したことを思い出してください。

    • 必要に応じて、Azure IoT Edge デバイスにログインします。
    • IoT Edge デバイスのルート CA 証明書のパスを見つけて、テキスト エディターで開きます。 クイック スタートに従い、Azure IoT Edge Git リポジトリに用意されているスクリプトを使用してデモ証明書を作成した場合、ルート CA 証明書の名前は azure-iot-test-only.root.ca.cert.pem
    • テキスト エディターで (PEM 形式で) Azure Sphere テナント CA 証明書を開きます。 コンテンツをコピーし、IoT Edge ルート CA 証明書の末尾に貼り付けます。
    • Azure IoT Edge ルート CA 証明書に加えられた変更を保存し、ファイルを閉じます。
    • Azure IoT Edge デバイスを再起動します。 Linux Azure IoT Edge デバイスの場合は、 sudo systemctl restart iotedgeを実行します。
    • モジュールが Azure IoT Edge デバイスで実行されていることを確認します。 Linux Azure IoT Edge デバイスの場合は、 sudo iotedge listを実行します。

手順 7. Azure IoT Edge デバイスのルート CA 証明書を Azure Sphere デバイスに提供する

Azure IoT Edge デバイス証明書を確認するには、Azure Sphere デバイス (ダウンストリーム デバイス) に、 Step 2 で構成した Azure IoT Edge デバイス ルート CA 証明書の独自のコピーが必要です。

詳細については、「 ダウンストリーム デバイスを Azure IoT Edge ゲートウェイに接続するを参照してください。

  1. 元の Azure IoT Edge デバイスルート証明書を見つけます。

    • 元の Azure IoT Edge デバイスルート証明書は、手順 2 で作成したものです。
    • クイック スタートに従い、IoT Edge Git リポジトリで提供されているスクリプトを使用してデモ証明書を作成した場合、ルート CA 証明書は azure-iot-test-only.root.ca.cert.pem と呼ばれます。
  2. Azure IoT Edge ルート証明書をアプリケーション パッケージに追加して、Azure Sphere デバイスにコピーします。

手順 8. IoT ルート証明書をリモート コンピューターにコピーする

Azure IoT Edge ルート証明書をリモート Linux VM またはローカル Windows マシンにコピーするには、次の手順に従います。

  • WinSCP ツールをインストールしてファイルを転送できます。 このツールには GUI が用意されているため、コマンド ライン アプローチよりも簡単に使用できます。

  • コマンド ラインを使用するには、SCP (Secure Copy) コマンド ライン ツールを使用します。

  • ローカル Windows マシンからリモート Linux VM にファイルを転送するには、Windows PowerShell で次のコマンドを実行します。

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    構文例:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • リモート Linux VM からローカル Windows マシンにファイルを転送するには、Windows PowerShell で次のコマンドを実行します。

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    構文例:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

トラブルシューティング

環境内での Azure IoT Edge の実行で問題が発生した場合は、トラブルシューティングと診断に次の記事を使用してください。

次のステップ

  • このトピックの手順を完了したら、Azure IoT Edge を使用して接続する手順に従って、 Azure IoT サンプルを実行できます。