Azure Functions を使用してエッジでデータをフィルター処理する

完了

IoT Central アプリケーションに送信されるテレメトリの量を減らすため、あなたは送信前に IoT Edge デバイス上でデータをフィルター処理する必要があります。

店舗からアプリケーションへのテレメトリの送信に関連するコストを削減し、オペレーターに重要なデータのみが表示されるようにするため、IoT Edge デバイス上でデータをフィルター処理する必要があります。 あなたは、オペレーターは環境温度が 21°C を超えた場合にのみテレメトリを表示する必要があると判断しました。

ここでは、IoT Edge デバイス上のモジュールとして Azure Functions を使用して、フィルターを実装する方法について学習します。 また、IoT Central アプリケーションに接続されている IoT Edge デバイスでデプロイ マニフェストがダウンロードされ、デバイス上のモジュールが更新されるよう、IoT Central アプリケーションでマニフェストを更新する方法を確認します。

Azure Functions とは

Azure Functions は、アプリケーションのインフラストラクチャを気にすることなく、"関数" と呼ばれる小さなコードを実行できるサービスです。 Azure Functions では、アプリケーションを大規模に実行し続けるために必要な最新のサーバーがすべて、クラウド インフラストラクチャによって提供されます。

Azure Functions を使用すると、IoT Edge デバイスにモジュールとして関数を展開し、クラウドではなくエッジのローカル環境で関数を実行することもできます。

あなたは、Azure Functions を使用し、IoT Edge デバイス上のモジュールの 1 つとして実行するようにフィルターを実装することを計画しています。 このフィルターにより、IoT Central アプリケーションに送信されるマシン温度テレメトリの量が制限されます。

関数が含まれる IoT Edge モジュールを作成する方法

複数の言語を使用して、Azure Functions 用の関数を作成できます。 次の手順では、C# で実装された関数を含む IoT Edge モジュールを構築する方法の概要について説明します。

  1. Azure 関数モジュールのスキャフォールディングが含まれるプロジェクトを作成します。 そのようなプロジェクトは、Visual Studio Code を使用するか、コマンド ラインで dotnet コマンドを使用して作成できます。
  2. C# で関数のビジネス ロジックを実装します。
  3. プロジェクトをビルドして、関数と必要な Azure Functions ランタイムが含まれる Docker イメージを生成します。
  4. Docker イメージをコンテナー レジストリにアップロードします。
  5. 新しいモジュールが含まれるように IoT Edge デバイスの配置マニフェストを変更します。 構成には、Docker イメージのアドレスと、関数モジュールが IoT Edge ランタイム内の他のモジュールとやり取りする方法が含まれます。

次のスニペットでは、更新された配置マニフェストの新しい filterfunction モジュールが含まれる modules セクションを示します。

"modules": {
  "SimulatedTemperatureSensor": {
    "version": "1.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
      "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
      "createOptions": "{}"
    }
  },
  "filterfunction": {
    "version": "1.0",
    "type": "docker",
    "status": "running",
    "restartPolicy": "always",
    "settings": {
      "image": "<YOUR CONTAINER REGISTRY NAME>.azurecr.io/filterfunction:v1",
      "createOptions": ""
    }
  }
}

使用するコンテナー レジストリとその構成によっては、レジストリにアクセスするための資格情報を配置マニフェストに含めることが必要な場合があります。

次のスニペットでは、更新された配置マニフェスト内のモジュール間でテレメトリがどのようにルーティングされるのかを示します。

"routes": {
    "FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
    "sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
  },

IoT Central で配置マニフェストを更新する

新しいモジュールを IoT Edge デバイスに展開するには、IoT Central アプリケーションに対する配置マニフェストを更新します。 このように配置マニフェストを更新すると、IoT Central アプリケーションに接続されている IoT Edge デバイスによってそれがダウンロードされて、デバイス上のモジュールが更新されます。

エッジで Azure Functions を使用する

1.

Azure 関数はどこで実行できますか?

2.

配置マニフェストでのルーティングの役割は何ですか?