Azure Functions を使用してエッジでデータをフィルター処理する
Azure IoT Central アプリケーションに送信されるテレメトリの量を減らすため、あなたは送信前に IoT Edge デバイス上でデータをフィルター処理する必要があります。
ストアからアプリケーションへのテレメトリの送信に関連付けられたコストを削減するため、IoT Edge デバイス上のデータをフィルター処理する必要があります。 そうすることで、オペレーターは重要なデータのみを確認できるようになります。 あなたは、オペレーターは環境温度が 21°C を超えた場合にのみテレメトリを表示する必要があると判断しました。
ここでは、IoT Edge デバイス上のモジュールとして Azure Functions を使用して、フィルターを実装する方法について学習します。 また、Azure IoT Central アプリケーションに対する配置マニフェストを更新する方法も確認します。 次に、Azure IoT Central アプリケーションに接続されている IoT Edge デバイスでそれをダウンロードし、デバイス上のモジュールを更新します。
Azure Functions とは
Azure Functions は、アプリケーションのインフラストラクチャを気にすることなく、"関数" と呼ばれる小さなコードを実行できるサービスです。 Azure Functions では、アプリケーションを大規模に実行し続けるために必要な最新のサーバーがすべて、クラウド インフラストラクチャによって提供されます。
Azure Functions を使用すると、IoT Edge デバイスにモジュールとして関数を展開し、クラウドではなくエッジのローカル環境で関数を実行することもできます。
あなたは、Azure Functions を使用し、IoT Edge デバイス上のモジュールの 1 つとして実行するようにフィルターを実装することを計画しています。 このフィルターにより、Azure IoT Central アプリケーションに送信されるマシン温度テレメトリの量が制限されます。
関数が含まれる IoT Edge モジュールを作成する方法
複数の言語を使用して、Azure Functions 用の関数を作成できます。 次の手順では、C# で実装された関数を含む IoT Edge モジュールを構築する方法の概要について説明します。
- Azure 関数モジュールのスキャフォールディングが含まれるプロジェクトを作成します。 そのようなプロジェクトは、Visual Studio Code を使用するか、コマンド ラインで
dotnet
コマンドを使用して作成できます。 - C# で関数のビジネス ロジックを実装します。
- プロジェクトをビルドして、関数と必要な Azure Functions ランタイムが含まれる Docker イメージを生成します。
- Docker イメージをコンテナー レジストリにアップロードします。
- 新しいモジュールが含まれるように 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\")"
},
Azure IoT Central で配置マニフェストを更新する
新しいモジュールを IoT Edge デバイスに展開するには、Azure IoT Central アプリケーションに対する配置マニフェストを更新します。 このように配置マニフェストを更新すると、Azure IoT Central アプリケーションに接続されている IoT Edge デバイスによってそれがダウンロードされて、デバイス上のモジュールが更新されます。