次の方法で共有


WebAssembly (WASM) モジュールとグラフ定義をデプロイする

Azure IoT Operations のデータ フロー グラフは、エッジでのカスタム データ処理用 WebAssembly (WASM) モジュールをサポートします。 データ フロー パイプラインの一部として、カスタム ビジネス ロジックとデータ変換をデプロイできます。

Important

現在、データ フロー グラフは MQTT、Kafka、OpenTelemetry エンドポイントのみをサポートしています。 Data Lake、Microsoft Fabric OneLake、Azure Data Explorer、Local Storage などの他のエンドポイントの種類はサポートされていません。 詳細については、「既知の問題の」を参照してください。

Important

現在、カスタム処理のグラフ定義をサポートする唯一のコネクタは、HTTP/REST コネクタです。

[前提条件]

概要

Azure IoT Operations データ フロー グラフとコネクタの WASM モジュールを使用すると、高パフォーマンスとセキュリティでエッジでデータを処理できます。 WASM はサンドボックス環境で実行され、Rust と Python をサポートします。

コンテナー レジストリを設定する

Azure IoT Operations では、WASM モジュールとグラフ定義をプルするためのコンテナー レジストリが必要です。 Azure Container Registry (ACR) または他の OCI 互換レジストリを使用できます。

Azure Container Registry を作成して構成するには、Azure Container Registry のデプロイに関する記事を参照してください。

ORAS CLI をインストールする

ORAS CLI を使用して、WASM モジュールとグラフ定義をコンテナー レジストリにプッシュします。 インストール手順については、ORAS のインストールに関する記事を参照してください。

パブリック レジストリからサンプル モジュールをプルする

事前構築済みのサンプル モジュールを使用します。

# Pull sample modules and graphs
oras pull ghcr.io/azure-samples/explore-iot-operations/graph-simple:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/graph-complex:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/temperature:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/window:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/snapshot:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/format:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/humidity:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/collection:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/enrichment:1.0.0
oras pull ghcr.io/azure-samples/explore-iot-operations/filter:1.0.0

モジュールをレジストリにプッシュする

サンプル モジュールとグラフを取得したら、コンテナー レジストリにプッシュします。 <YOUR_ACR_NAME>を Azure Container Registry の名前に置き換えます。 操作エクスペリエンス Web UI にグラフとモジュールが確実に表示されるようにするには、次の例に示すように、 --config フラグと --artifact-type フラグを追加します。

# Log in to your ACR
az acr login --name <YOUR_ACR_NAME>

# Push modules to your registry
oras push <YOUR_ACR_NAME>.azurecr.io/graph-simple:1.0.0 --config /dev/null:application/vnd.microsoft.aio.graph.v1+yaml graph-simple.yaml:application/yaml --disable-path-validation
oras push <YOUR_ACR_NAME>.azurecr.io/graph-complex:1.0.0 --config /dev/null:application/vnd.microsoft.aio.graph.v1+yaml graph-complex.yaml:application/yaml --disable-path-validation
oras push <YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/window:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm window-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/snapshot:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm snapshot-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/format:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm format-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/humidity:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm humidity-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/collection:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm collection-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/enrichment:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm enrichment-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/filter:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm filter-1.0.0.wasm:application/wasm

ヒント

独自のモジュールをプッシュしてカスタム グラフを作成することもできます。「 カスタム データ フロー グラフの構成」を参照してください。

実行中のグラフでモジュールを更新する

実行中のグラフの WASM モジュールは、グラフを停止せずに更新できます。 これは、データフローを停止せずに演算子のロジックを更新する場合に便利です。 たとえば、温度変換モジュールをバージョン 1.0.0 から 2.0.0 に更新するには、次のように新しいバージョンをアップロードします。

oras push <YOUR_ACR_NAME>.azurecr.io/temperature:2.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature-2.0.0.wasm:application/wasm

データ フロー グラフは、追加の構成なしでモジュールの新しいバージョンを自動的に取得します。 グラフは中断することなく引き続き実行され、新しいモジュール バージョンは後続のデータ処理に使用されます。

カスタム WASM モジュールを開発する

データ フロー グラフのカスタム データ処理ロジックを作成するには、Rust または Python で WebAssembly モジュールを開発します。 カスタム モジュールを使用すると、組み込みの演算子では使用できない特殊なビジネス ロジック、データ変換、分析を実装できます。

以下のような包括的な開発ガイダンスが必要な場合:

  • 開発環境を設定する
  • Rust と Python で演算子を作成する
  • データ モデルとインターフェイスを理解する
  • モジュールのビルドとテスト

データ フロー グラフ用 WebAssembly モジュールの開発に関する記事を参照してください。

データ処理ワークフローを定義する YAML グラフ定義の作成と構成の詳細については、WebAssembly グラフ定義の構成に関する記事を参照してください。