Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les graphiques de flux de données d'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 lac de données, Microsoft Fabric OneLake, Azure Data Explorer et stockage local ne sont pas pris en charge.
Important
Actuellement, le seul connecteur qui prend en charge les définitions de graphiques pour le traitement personnalisé est le connecteur HTTP/REST.
Important
Actuellement, l’interface web d’expérience d’opérations ne supporte que la création et la visualisation d’artefacts de graphes de flux de données provenant de Azure Container Registry (ACR) et, pour les transformations intégrées, de mcr.microsoft.com. Pour en savoir plus, consultez l’interface utilisateur web Operations Experience n’affiche que les artefacts de graphe de flux de données provenant d’Azure Container Registry (ACR) et de mcr.microsoft.com.
Prerequisites
- Instance de Opérations Azure IoT déployée dans un cluster Kubernetes. Pour plus d’informations, consultez Deploy Opérations Azure IoT.
- Point de terminaison de Registre qui pointe vers le registre de conteneurs à partir duquel vous souhaitez extraire des modules et des graphiques. Pour plus d’informations, consultez Configurer des points de terminaison de Registre. Pour commencer sans configurer votre propre registre, utilisez l’exemple de point de terminaison public
ghcr.iodécrit dans Utiliser des modules prédéfinis à partir d’un registre public.
Pour envoyer (push) vos propres modules et graphiques à un registre privé comme Azure Container Registry (ACR), vous avez également besoin des éléments suivants :
- Accès à un registre de conteneurs tel qu’ACR pour stocker des modules et des graphiques WASM.
- L’interface de ligne de commande OCI Registry As Storage (ORAS) permet de pousser des modules WASM vers le registre.
Les exemples Azure CLI de cet article utilisent des variables d’environnement afin de pouvoir définir chaque valeur une fois puis copier-coller les commandes as-is. Si vous utilisez l'environnement Opérations Azure IoT Codespaces du quickstart, ces variables sont déjà définies pour vous et vous pouvez sauter cette étape. Sinon, définissez les variables d’environnement suivantes dans votre shell avant d’exécuter les commandes.
Les scripts suivants définissent les variables d’environnement les plus couramment utilisées :
| Variable d'environnement | Descriptif |
|---|---|
SUBSCRIPTION_ID |
L’identifiant de l’abonnement contenant votre instance Opérations Azure IoT. |
RESOURCE_GROUP |
Le nom du groupe de ressources contenant votre instance Opérations Azure IoT. |
AIO_INSTANCE_NAME |
Le nom de votre instance Opérations Azure IoT. Pour lister vos instances, exécutez az iot ops list -o table. |
CLUSTER_NAME |
Le nom du cluster Kubernetes compatible Azure Arc qui héberge votre instance. |
LOCATION |
La région Azure à utiliser pour de nouvelles ressources, par exemple eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Vous n’avez qu’à définir les variables utilisées dans cet article. Cet article peut utiliser des variables d’environnement supplémentaires pour les noms de ressources que vous choisissez. L’article explique comment les placer là où ils sont introduits.
Aperçu
Les modules WASM dans Opérations Azure IoT graphiques et connecteurs de flux de données 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 bac à sable et prend en charge Rust et Python.
Utiliser des modules prédéfinis à partir d’un registre public
Vous pouvez utiliser les modules WASM d’exemple préconstruits et les définitions de graphes publiés dans le registre public GitHub Container Registry (ghcr.io) sous azure-samples/explore-iot-operations.
Note
ghcr.ionécessite un échange de jetons authentifié avant même de servir les artefacts publics, et l'exécution actuelle d'Opérations Azure IoT n'effectue pas l'échange anonyme. Configurez le terminal public-ghcr avec un secret d’extraction d’artefacts reposant sur un jeton d’accès personnel GitHub (PAT) avec la portée read:packages, plutôt qu’avec une authentification anonyme. Pour les étapes de terminaison et de secret, voir Utiliser un registre public.
Exemples d’artefacts disponibles
Après avoir créé le point de terminaison du registre public-ghcr, faites-y référence dans vos graphiques de flux de données à l’aide de registryEndpointRef: public-ghcr. Étant donné que l’hôte du point de terminaison du registre est ghcr.io, incluez le chemin du dépôt azure-samples/explore-iot-operations dans les références d’artefacts. Les exemples de modules et de définitions de graphique suivants sont disponibles :
| Artéfact | Descriptif |
|---|---|
azure-samples/explore-iot-operations/graph-simple:1.0.0 |
Définition de graphique de conversion de température simple |
azure-samples/explore-iot-operations/graph-complex:1.0.0 |
Définition de graphique de traitement multi-capteur |
azure-samples/explore-iot-operations/temperature:1.0.0 |
Module de conversion de température (Fahrenheit en Celsius) |
azure-samples/explore-iot-operations/window:1.0.0 |
Module de fenêtrage basé sur le temps |
azure-samples/explore-iot-operations/snapshot:1.0.0 |
Module de traitement d’images et de détection d’objets |
azure-samples/explore-iot-operations/format:1.0.0 |
Module de conversion de format d’image |
azure-samples/explore-iot-operations/humidity:1.0.0 |
Module de traitement des données d’humidité |
azure-samples/explore-iot-operations/collection:1.0.0 |
Module d’agrégation de données multi-capteurs |
azure-samples/explore-iot-operations/enrichment:1.0.0 |
Module d’enrichissement des métadonnées |
azure-samples/explore-iot-operations/filter:1.0.0 |
Module de filtrage des données |
Note
Les définitions d’exemples de graphiques publics utilisent des références de module qui incluent le chemin du azure-samples/explore-iot-operations référentiel, par exemple azure-samples/explore-iot-operations/temperature:1.0.0. Ce chemin d’accès est requis, car l’hôte de point de terminaison du Registre est ghcr.io. Si vous copiez les artefacts dans votre propre registre, assurez-vous que les références du module dans votre définition de graphe correspondent aux chemins vers lesquels vous publiez les artefacts du module.
Pour utiliser le graphique simple avec le registre public, consultez l’exemple 1 : Déploiement de base avec un module WASM et utiliser public-ghcr comme nom de point de terminaison du Registre.
Utiliser un registre privé
Si vous devez utiliser des modules personnalisés ou souhaitez héberger vos propres copies des exemples de modules, configurez un registre de conteneurs privé tel que Azure Container Registry (ACR).
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 graphe. Vous pouvez utiliser Azure Container Registry (ACR) ou un autre registre compatible OCI. Pour créer une instance ACR, consultez Déployer Azure Container Registry. Une fois le Registre créé, créez un point de terminaison de Registre qui pointe vers celui-ci : consultez Créer un point de terminaison de Registre.
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. Définissez la ACR_NAME variable environnement au nom de votre Azure Container Registry.
Important
L’expérience des opérations découvre les artefacts par leur type de média OCI config , et non par le type de média de la couche. Lorsque vous envoyez des artefacts à un registre, vous devez définir les types de supports appropriés ou les artefacts n’apparaissent pas dans l’interface utilisateur de l’expérience des opérations :
| Type d’artefact | Type de média de configuration OCI requis | Type de média de couche requis |
|---|---|---|
| Définition de graphique | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| Module WASM | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Si vous utilisez un pipeline CI/CD ou d’autres outils pour copier des artefacts entre des registres, vérifiez qu’il conserve ces types de supports. Certains outils suppriment ou remplacent les métadonnées d’artefact pendant le transfert, ce qui entraîne la disparition silencieuse des artefacts de l’expérience des opérations. Pour plus d’informations, consultez Exigences relatives aux artefacts du registre.
Choisir une disposition d’artefact
Les noms d’artefacts que vous utilisez lorsque vous envoyez des graphiques et des modules déterminent les références de module dont vous avez besoin dans la définition de graphique. Pour en savoir plus sur la relation entre l’hôte du point de terminaison du registre, le chemin d’accès de l’artefact et la référence de module, consultez Chemins d’accès des artefacts et références de module Graph.
Pour les graphiques d’exemple Azure, conservez le chemin du référentiel d’exemple lorsque vous copiez des artefacts dans votre propre registre. Les définitions de graphique référencent les modules à l’aide de ce chemin d’accès :
<YOUR_ACR_NAME>.azurecr.io/azure-samples/explore-iot-operations/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/azure-samples/explore-iot-operations/temperature:1.0.0
Utiliser artifact: azure-samples/explore-iot-operations/graph-simple:1.0.0 dans le graphique de flux de données. La définition de graphique utilise module: "azure-samples/explore-iot-operations/temperature:1.0.0".
Pour vos propres graphiques, vous pouvez choisir une disposition plate :
<YOUR_ACR_NAME>.azurecr.io/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0
Utiliser artifact: graph-simple:1.0.0 dans le graphique de flux de données et module: "temperature:1.0.0" dans la définition du graphique.
Ou choisissez votre propre mise en page imbriquée :
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/temperature:1.0.0
Utiliser artifact: factory/graphs/graph-simple:1.0.0 dans le graphique de flux de données et module: "factory/graphs/temperature:1.0.0" dans la définition du graphique.
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 $ACR_NAME
# Push modules to your registry
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/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 $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/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 $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/temperature:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/window:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm window.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/snapshot:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm snapshot.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/format:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm format.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/humidity:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm humidity.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/collection:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm collection.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/enrichment:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm enrichment.wasm:application/wasm
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/filter:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm filter.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 dans l’exemple de disposition d’artefact Azure, chargez la nouvelle version comme suit :
oras push $ACR_NAME.azurecr.io/azure-samples/explore-iot-operations/temperature:2.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature.wasm:application/wasm
Note
Si vous envoyez un nouveau contenu à la même balise (par exemple, remplacement azure-samples/explore-iot-operations/temperature:1.0.0), le graphe de flux de données récupère automatiquement le module mis à jour sans configuration supplémentaire. Toutefois, si vous effectuez un envoi vers une nouvelle balise (par exemple, azure-samples/explore-iot-operations/temperature:2.0.0), vous devez également mettre à jour la définition du graphique YAML pour référencer la nouvelle version et renvoyer l’artefact du graphique.
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.
Configurations requises pour les artefacts du Registre
L’expérience des opérations utilise les métadonnées d’artefact OCI pour découvrir et afficher des graphiques et des modules. Comprendre ces exigences est importante lorsque vous créez des pipelines CI/CD personnalisés, copiez des artefacts entre des registres ou résolvez les artefacts manquants dans l’interface utilisateur.
Fonctionnement de la découverte d’artefacts
Lorsque vous envoyez un artefact à un registre avec ORAS, le manifeste OCI inclut deux champs pertinents :
- Type de média de configuration : identifie le type d’artefact. L’expérience des opérations filtre sur ce champ pour rechercher des graphiques et des modules.
- Type de média de couche : décrit le format de contenu du fichier réel (YAML ou WASM).
L’expérience des opérations utilise le type de média de configuration pour la découverte, et non le type de média de couche. Si le type de média de configuration est manquant ou incorrect, l’artefact existe dans le Registre, mais n’apparaît pas dans l’interface utilisateur.
Types de supports requis
| Type d’artefact | Type de média de configuration (--config ou --artifact-type) |
Type de média de couche |
|---|---|---|
| Définition de graphique | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| Module WASM | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Pour les définitions de graphiques, transmettez le type de média de configuration avec l’indicateur --config. Définissez la variable d’environnement REGISTRY sur votre hôte de registre (par exemple, <your-registry>.azurecr.io) :
oras push $REGISTRY/my-graph:1.0.0 \
--config /dev/null:application/vnd.microsoft.aio.graph.v1+yaml \
graph.yaml:application/yaml \
--disable-path-validation
Pour les modules WASM, transmettez-le avec l’indicateur --artifact-type :
oras push $REGISTRY/my-module:1.0.0 \
--artifact-type application/vnd.module.wasm.content.layer.v1+wasm \
module.wasm:application/wasm
Considérations relatives au pipeline CI/CD
Si vous utilisez des pipelines automatisés pour copier ou promouvoir des artefacts entre des registres (par exemple, d’un registre intermédiaire à un registre de production), vérifiez que le pipeline conserve les métadonnées d’artefact OCI. Certains outils suppriment ou remplacent le type de support de configuration pendant le transfert, ce qui entraîne la disparition silencieuse des artefacts de l’expérience des opérations.
Pour vérifier qu’un artefact a les métadonnées correctes après le transfert, inspectez son manifeste :
oras manifest fetch $REGISTRY/my-graph:1.0.0 | jq '{mediaType, configMediaType: .config.mediaType}'
La sortie doit afficher :
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"configMediaType": "application/vnd.microsoft.aio.graph.v1+yaml"
}
Si configMediaType affiche une valeur générique telle que application/vnd.oci.empty.v1+json, les métadonnées ont été supprimées et l’artefact doit être repoussé avec les indicateurs corrects.
Contenu connexe
- modules Develop WebAssembly pour écrire des opérateurs dans Rust et Python (inclut un guide de démarrage rapide de bout en bout)
- Configurer les définitions de graphe WebAssembly pour la structure YAML et les paramètres de configuration de graphe
- Utiliser WebAssembly avec des graphiques de flux de données pour la configuration des ressources DataflowGraph et des exemples
- Créer des modules WASM avec l’extension VS Code pour le développement basé sur l’IDE
- Configurer des points de terminaison de Registre