次の方法で共有


チュートリアル: IoT Edge モジュールとしてAzure Stream Analyticsをデプロイする

対象:IoT Edge 1.5 チェックマーク IoT Edge 1.5

重要

IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は 2024 年 11 月 12 日に終了しました。 以前のリリースを使用している場合は、「Update IoT Edgeを参照してください。

このチュートリアルでは、Azure ポータルでAzure Stream Analytics ジョブを作成し、追加のコードなしでIoT Edge モジュールとしてデプロイします。

このチュートリアルでは、以下の内容を学習します。

  • エッジ上のデータを処理するAzure Stream Analytics ジョブを作成します。
  • 新しいAzure Stream Analytics ジョブを他のIoT Edge モジュールに接続します。
  • Azure ポータルからIoT Edge デバイスにAzure Stream Analytics ジョブをデプロイします。

Azure Stream Analytics ジョブのステージングとデプロイを含むストリーム アーキテクチャを示す図。

このチュートリアルの Stream Analytics モジュールでは、30 秒にわたって平均気温が繰り返し計算され、 平均が 70 に達すると、モジュールはデバイスがアクションを実行するためのアラートを送信します。 この場合、アクションはシミュレートされた温度センサーをリセットすることです。 運用環境では、この機能を使用してマシンをシャットダウンしたり、温度が危険なレベルに達したときに予防措置を講じたりすることができます。

IoT EdgeでAzure Stream Analyticsを使用する理由

IoT ソリューションの多くが、分析サービスを使用して、IoT デバイスからクラウドに送信されたデータの分析情報を得ます。 Azure IoT Edgeを使用すると、Azure Stream Analytics ロジックをデバイス自体に移動します。 エッジでテレメトリ ストリームを処理すると、アップロードされたデータの量と、アクションにつながる分析情報への対応にかかる時間が短縮されます。 Azure IoT EdgeとAzure Stream Analyticsを統合して、ワークロードの開発を簡素化します。

Azure Stream Analyticsでは、クラウドおよび IoT Edge デバイスでのデータ分析に構造化クエリ構文を使用します。 詳細については、Azure Stream Analytics ドキュメントを参照してください。

前提条件

Azure アカウントがない場合は、開始する前に free アカウントを作成します。

  • Azure IoT Edge デバイス。

    Linux または Windows デバイス

  • Azureの無料または標準のレベルのIoT Hub

Azure Stream Analytics ジョブを作成する

このセクションでは、次のAzure Stream Analytics ジョブを作成します。

  • IoT Edge デバイスからデータを受信します。
  • テレメトリ データに対して、設定された範囲外の値を照会します。
  • クエリ結果に基づいて、IoT Edge デバイスに対してアクションを実行します。

ストレージ アカウントの作成

IoT Edge デバイスで実行するAzure Stream Analytics ジョブを作成する場合は、デバイスがアクセスできるようにジョブを格納する必要があります。 既存のAzure Storage アカウントを使用することも、新しいアカウントを作成することもできます。

  1. Azure ポータルで、リソース > ストレージ > ストレージ アカウントに移動します。

  2. ストレージ アカウントを作成するには、以下の値を指定します。

    フィールド
    サブスクリプション IoT ハブと同じサブスクリプションを選択します。
    リソースグループ IoT Edgeのクイック スタートとチュートリアルでは、すべてのテスト リソースに同じリソース グループを使用します。 たとえば、 IoTEdgeResources です
    名前 ストレージ アカウント用に一意の名前を指定します。
    場所 近くの [場所] を選択します。
  3. 他のフィールドの既定値をそのまま使用し、[ 確認と作成] を選択します。

  4. 設定を確認し、[ 作成] を選択します。

新しいジョブを作成する

  1. Azure ポータルで、次を選択します。

    1. リソースの作成
    2. 左側のメニューから [モノのインターネット]
    3. 検索バーに「Stream Analytics と入力して、Azure Marketplaceで検索します
    4. ドロップダウン メニューから [作成][Stream Analytics ジョブ] の順に選択します
  2. 新しい Stream Analytics ジョブを作成するには、次の値を指定します。

    フィールド
    名前 ジョブの名前を指定します。 たとえば、「IoTEdgeJob」と指定します。
    サブスクリプション IoT ハブと同じサブスクリプションを選択します。
    リソースグループ IoT Edgeのクイック スタートとチュートリアルで作成するすべてのテスト リソースに同じリソース グループを使用します。 たとえば、IoTEdgeResources という名前のリソースです。
    リージョン 近くの場所を選択します。
    ホスティング環境 [Edge] を選択します。 このオプションを使用すると、クラウドではなくIoT Edge デバイスにデプロイできます。
  3. [Review + create](レビュー + 作成) を選択します。

  4. オプションを確認し、[作成] を選択します。

ジョブを設定する

Azure ポータルで Stream Analytics ジョブを作成したら、inputoutputquery を使用して構成し、通過するデータに対して実行します。

このセクションでは、IoT Edge デバイスから温度データを受信するジョブを作成する方法について説明します。 これは、ローリング 30 秒のウィンドウでデータを分析します。 そのウィンドウの平均気温が 70 度を超える場合、ジョブはアラートを IoT Edge デバイスに送信します。

注意

ジョブの展開時に、データの取得元と移動先を次のセクション構成IoT Edge設定で指定します。

入力と出力を設定する

  1. Azure ポータルで Stream Analytics ジョブに移動します。

  2. [ジョブ トポロジ] で [入力] を選択し、[入力の追加] を選択します。

  3. ドロップダウン リストから [Edge Hub ] を選択します。

    一覧に [Edge Hub] オプションが表示されない場合は、Stream Analytics ジョブがクラウドでホストされているジョブとして作成されている可能性があります。 新しいジョブを作成して、ホスティング環境として [Edge ] を選択してください。

  4. [新しい入力] ウィンドウで、入力のエイリアスとして「温度」と入力します。

  5. 他のフィールドは既定値のままにして、 [保存] を選択します。

  6. [ジョブ トポロジ] で [出力] を選択し、[追加] を選択します。

  7. ドロップダウン リストで、 [Edge Hub] を選択します。

  8. [新しい出力] ウィンドウで、出力のエイリアスとして「アラート」と入力します。

  9. 他のフィールドは既定値のままにして、 [保存] を選択します。

クエリを作成する

  1. [ジョブ トポロジ] で、 [クエリ] を選択します。

  2. 既定のテキストを次のクエリに置き換えます。

    SELECT  
        'reset' AS command
    INTO
       alert
    FROM
       temperature TIMESTAMP BY timeCreated
    GROUP BY TumblingWindow(second,30)
    HAVING Avg(machine.temperature) > 70
    

    このクエリで、30 秒間隔の平均マシン温度が 70 度に達すると、SQL コードによって reset コマンドがアラート出力に送信されます。 reset コマンドは、アクションとしてセンサーに事前プログラミングされます。

  3. [クエリの保存] を選択します。

IoT Edge設定を構成する

IoT Edge デバイスに Stream Analytics ジョブをデプロイするには、Azure Stream Analytics ジョブをストレージ アカウントに関連付けます。 ジョブをデプロイすると、ジョブ定義はコンテナーとしてストレージ アカウントにエクスポートされます。

  1. Stream Analytics サービスの [設定] メニューで、[ ストレージ アカウントの設定] を選択します。

  2. [Select Blob storage/ADLS Gen 2 from your subscriptions](サブスクリプションから Blob Storage または ADLS Gen 2 を選択する) オプションを選択します。

  3. Azure ストレージ アカウントがページに自動的に表示されます。 表示されない場合は、ストレージを作成していることを確認してください。 [ストレージ アカウント] フィールドに表示されているものとは異なる ストレージ を選択する必要がある場合は、ドロップダウン メニューから選択します。

  4. 変更を加えた場合は 、[保存] を選択します

ジョブをデプロイする

これで、IoT Edge デバイスにAzure Stream Analytics ジョブをデプロイする準備ができました。

このセクションでは、Azure ポータルの Set Modules ウィザードを使用して、deployment マニフェストを作成します。 配置マニフェストは、デバイスにデプロイされるすべてのモジュールを記述する JSON ファイルです。 マニフェストには、モジュール イメージが格納されるコンテナー レジストリ、モジュールの管理方法、モジュール間の通信方法も示されます。 IoT Edge デバイスは、IoT Hubから配置マニフェストを取得し、その中の情報を使用して、割り当てられているすべてのモジュールをデプロイおよび構成します。

このチュートリアルでは、2 つのモジュールをデプロイします。 1 つ目は、SimulatedTemperatureSensor です。これは、温度と湿度のセンサーをシミュレートするモジュールです。 2 つ目は、Stream Analytics ジョブです。 センサー モジュールでは、ジョブ クエリで分析されるデータのストリームが提供されます。

  1. Azure ポータルで、IoT ハブに移動します。

  2. Device management メニューの下にある Devices を選択し、IoT Edge デバイスを選択して開きます。

  3. [Set modules](モジュールの設定) を選びます。

  4. 以前、このデバイスに SimulatedTemperatureSensor モジュールをデプロイしたことがある場合は、自動入力されている可能性があります。 そうでない場合は、次の手順でモジュールを追加します。

    1. + Add を選択し、IoT Edge Module を選択します。
    2. 名前は、「SimulatedTemperatureSensor」と入力します。
    3. イメージ URI として「mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5」と入力します。
    4. 他の設定については既定値のままにし、[追加] を選択します。
  5. 次の手順で Azure Stream Analytics Edge ジョブを追加します。

    1. + Add を選択し、Azure Stream Analytics Module を選択します。
    2. サブスクリプションと、作成した Azure Stream Analytics Edge ジョブを選択します。
    3. 保存を選びます。

    変更を保存すると、Stream Analytics ジョブの詳細が、作成したストレージ コンテナーに発行されます。

  6. Stream Analytics の追加でデプロイが完了したら、[モジュールの設定] ページに 2 つの新しいモジュールが表示されることを確認します。

    2 つの新しいモジュールがデバイス上にあることを確認するスクリーンショット。スクリーンショットには、[確認と作成] ボタンの場所も示されています。

  7. [Review + create](レビュー + 作成) を選択します。 配置マニフェストが表示されます。

  8. を選択してを作成します。

  9. デバイスの [モジュールの設定] ページで、数分後にモジュールが一覧表示され、実行されていることを確認できます。 モジュールが表示されない場合はページを更新するか、数分待ってからもう一度更新してください。

2 つの新しいモジュールを理解する

  1. デバイスの Set modules タブから Stream Analytics モジュール名を選択して、Update IoT Edge Module ページに移動します。 ここで、設定を更新できます。

    Settings タブには、標準のAzure Stream Analytics イメージを指す Image URI があります。 この 1 つのイメージは、IoT Edge デバイスにデプロイされるすべての Stream Analytics モジュールに使用されます。

    Module Twin Settings タブには、ASAJobInfo と呼ばれるAzure Stream Analytics (ASA) プロパティを定義する JSON が表示されます。 そのプロパティの値は、ストレージ コンテナー内のジョブ定義を指しています。 このプロパティによって、特定のジョブの詳細で Stream Analytics イメージが構成されます。

    既定では、Stream Analytics モジュールは、基になるジョブと同じ名前になります。 必要に応じて、このページでモジュール名を変更できますが、必須ではありません。

  2. 変更を加えた場合は [適用] を、変更しなかった場合は [キャンセル] を選択します。

モジュールにルートを割り当てる

  1. [デバイスにモジュールを設定してください:<your-device-name>] ページで、[Next: Routes](次へ: ルート) を選択します。

  2. Routes タブでは、モジュールとIoT Hubの間でメッセージを渡す方法を定義します。 メッセージは、名前と値のペアを使って作成されます。

    次の表に示すペアでルートの名前と値を追加します。 {moduleName} のインスタンスを、Azure Stream Analytics モジュールの名前に置き換えます。 このモジュールは、Azure ポータルに示すように、Set モジュール ページのデバイスのモジュール一覧に表示される名前と同じである必要があります。

    Azure portal の IoT Edge デバイス内の Stream Analytics モジュールの名前を示すスクリーンショット。

    名前
    テレメトリーデータをクラウドへ FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
    クラウドへのアラート FROM /messages/modules/{moduleName}/* INTO $upstream
    alertsToReset FROM /messages/modules/{moduleName}/* INTO BrokeredEndpoint("/modules/SimulatedTemperatureSensor/inputs/control")
    telemetryToAsa FROM /messages/modules/SimulatedTemperatureSensor/* INTO BrokeredEndpoint("/modules/{moduleName}/inputs/temperature")

    ここで宣言するルートは、IoT Edge デバイスを介したデータフローを定義します。 SimulatedTemperatureSensor からのテレメトリ データは、Stream Analytics ジョブで構成された IoT Hub および temperature 入力に送信されます。 alert出力メッセージはIoT Hubおよび SimulatedTemperatureSensor モジュールに送信され、リセット コマンドがトリガーされます。

  3. [ 次へ: 確認と作成] を選択します。

  4. [確認と作成] タブでは、ウィザードで指定した情報がどのように JSON 配置マニフェストに変換されるかを確認できます。

  5. マニフェストの確認が完了したら、[作成] を選択してモジュールの設定を完了します。

データの表示

IoT Edge デバイスに移動して、Azure Stream Analytics モジュールと SimulatedTemperatureSensor モジュールの間の相互作用を確認します。

注意

デバイスに仮想マシンを使用している場合は、Azure Cloud Shell を使用して、認証されたすべてのサービスAzure直接アクセスします。

  1. すべてのモジュールが Docker で実行されていることを確認します。

    iotedge list  
    
  2. すべてのシステム ログとメトリック データを表示します。 {moduleName} をAzure Stream Analytics モジュールの名前に置き換えます。

    iotedge logs -f {moduleName}  
    
  3. センサー ログを表示して、リセット コマンドの SimulatedTemperatureSensor への影響を表示します。

    iotedge logs SimulatedTemperatureSensor
    

    マシンの温度が徐々に上昇し、70 度に達して 30 秒間経過するのを観察できます。 次に、Stream Analytics モジュールによってリセットがトリガーされ、マシンの温度が 21 度まで下降します。

    モジュール ログ出力の reset コマンドのスクリーンショット。

リソースをクリーンアップする

次の推奨記事に進む場合は、作成したリソースと構成を保持し、再利用します。 テスト デバイスと同じIoT Edge デバイスを使用し続けることもできます。

それ以外の場合は、課金を回避するために、この記事で使用したローカル構成とAzureリソースを削除します。

Azure リソースを削除する

Azureリソースとリソース グループの削除を元に戻すことはできません。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 保持するリソースがある既存のリソース グループ内にIoT Hubを作成した場合は、リソース グループではなく、IoT Hub リソース自体のみを削除します。

リソースを削除するには、次の手順に従います。

  1. Azure ポータルにサインインし、Resource グループ を選択します。
  2. IoT Edgeテスト リソースを含むリソース グループの名前を選択します。
  3. リソース グループに含まれているリソースの一覧を確認します。 それらすべてを削除する場合は、[ リソース グループの削除] を選択できます。 一部のみを削除する場合は、各リソースを選択して個別に削除します。

次のステップ

このチュートリアルでは、IoT Edge デバイスからのデータを分析するAzure Stream Analytics ジョブを設定します。 IoT Edge デバイスにAzure Stream Analytics モジュールを読み込んで、温度の上昇をローカルで処理して対応し、集計されたデータ ストリームをクラウドに送信しました。 Azure IoT Edgeソリューションの構築に役立つ方法については、次のチュートリアルに進んでください。