Partager via


Déployer des modules WebAssembly (WASM) et des définitions de graphique

Les graphiques de flux de données Opérations Azure IoT prennent en charge les modules WebAssembly (WASM) pour le traitement des données personnalisées en périphérie. Vous pouvez déployer des transformations de données et de logique métier personnalisées dans le cadre de vos pipelines de flux de données.

Important

Actuellement, les graphiques de flux de données prennent uniquement en charge les points de terminaison MQTT, Kafka et OpenTelemetry. D’autres types de points de terminaison tels que Data Lake, Microsoft Fabric OneLake, Azure Data Explorer et Stockage local ne sont pas pris en charge. Pour plus d’informations, consultez la section Problèmes connus.

Important

Actuellement, le seul connecteur qui prend en charge les définitions de graphiques pour le traitement personnalisé est le connecteur HTTP/REST.

Prerequisites

Aperçu

Les modules WASM dans les graphiques et connecteurs de flux de données Azure IoT Operations vous permettent de traiter les données à la périphérie avec des performances et une sécurité élevées. WASM s’exécute dans un environnement de bac à sable et prend en charge Rust et Python.

Configurer un registre de conteneurs

Opérations Azure IoT a besoin d’un registre de conteneurs pour extraire des modules WASM et des définitions de graphiques. Vous pouvez utiliser Azure Container Registry (ACR) ou un autre registre compatible avec OCI.

Pour créer et configurer une instance Azure Container Registry, consultez Déployer Azure Container Registry.

Installer l’interface CLI ORAS

Utilisez l’interface CLI ORAS pour envoyer (push) des modules WASM et des définitions de graphiques vers votre registre de conteneurs. Pour obtenir des instructions d’installation, consultez Installer ORAS.

Extraire des exemples de modules à partir d’un registre public

Utilisez des exemples de modules prédéfinis :

# 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

Envoyer (push) des modules vers votre registre

Une fois que vous avez les exemples de modules et de graphiques, envoyez-les à votre registre de conteneurs. Remplacez <YOUR_ACR_NAME> par le nom de votre Registre de conteneurs Azure. Pour vous assurer que les graphiques et les modules sont visibles dans l’interface utilisateur web de l’expérience des opérations, ajoutez les indicateurs --config et --artifact-type comme indiqué dans l’exemple suivant :

# 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

Conseil / Astuce

Vous pouvez également envoyer (push) vos propres modules et créer des graphiques personnalisés, consultez Configuration des graphiques de flux de données personnalisés.

Mettre à jour un module dans un graphique en cours d’exécution

Vous pouvez mettre à jour un module WASM dans un graphique en cours d’exécution sans arrêter le graphique. Cela est utile lorsque vous souhaitez mettre à jour la logique d’un opérateur sans arrêter le flux de données. Par exemple, pour mettre à jour le module de conversion de température de la version 1.0.0 vers 2.0.0, chargez la nouvelle version comme suit :

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

Le graphique de flux de données récupère automatiquement la nouvelle version du module sans aucune configuration supplémentaire. Le graphique continue à s’exécuter sans interruption, et la nouvelle version du module est utilisée pour le traitement des données ultérieur.

Développer des modules WASM personnalisés

Pour créer une logique de traitement des données personnalisée pour vos graphiques de flux de données, développez des modules WebAssembly dans Rust ou Python. Les modules personnalisés vous permettent d’implémenter une logique métier spécialisée, des transformations de données et des analyses qui ne sont pas disponibles dans les opérateurs intégrés.

Pour obtenir des conseils complets en développement, notamment :

  • Configuration de votre environnement de développement
  • Création d’opérateurs dans Rust et Python
  • Présentation du modèle de données et des interfaces
  • Génération et test de vos modules

Consultez Développer des modules WebAssembly pour les graphiques de flux de données.

Pour découvrir plus d’informations sur la création et la configuration des définitions de graphique YAML qui définissent vos workflows de traitement des données, consultez Configurer les définitions de graphique WebAssembly.