Utiliser le Registre de schémas avec des modules WASM

Le registre de schémas vous permet de valider les formats de message et de garantir la cohérence des données dans le traitement de votre flux de données. Cet article montre comment utiliser le registre de schémas avec des modules WASM dans le Opérations Azure IoT environnement de développement local.

Avant de suivre les étapes décrites dans cet article, configurez votre environnement de développement local et générez et exécutez une application de graphe localement. Pour plus d’informations, consultez Générer des modules WASM pour les flux de données.

Prerequisites

Remplissez les conditions préalables répertoriées dans les modules BUILD WASM pour les flux de données.

Ouvrir l’exemple d’espace de travail du Registre de schémas

Clonez le référentiel Explore IoT Operations si ce n'est déjà fait.

Ouvrez le dossier samples/wasm/schema-registry-scenario. Ce dossier contient les ressources suivantes :

  • graph.dataflow.yaml - Configuration du graphe de flux de données.
  • tk_schema_config.json - Schéma JSON que l’application hôte utilise localement pour valider les charges utiles de message entrantes avant d’atteindre les opérateurs en aval. Conservez ce fichier synchronisé avec tout schéma que vous publiez dans votre environnement de Microsoft Azure.
  • data/ - Exemples de données d’entrée avec différents formats de message à tester.
  • operators/filter/ - Code source de l’opérateur de filtre.
  • (Facultatif) hostapp.env.list - L’extension VS Code génère automatiquement une configuration à l’exécution en ajoutant TK_SCHEMA_CONFIG_PATH=tk_schema_config.json. Si vous fournissez votre propre fichier de schéma, assurez-vous que la variable pointe vers celle-ci.

Comprendre la configuration du schéma

Ouvrez le tk_schema_config.json fichier pour afficher la définition du schéma :

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "humidity": {
      "type": "integer"
    },
    "temperature": {
      "type": "number"
    }
  }
}

Ce schéma définit un objet JSON de niveau supérieur qui peut contenir deux propriétés numériques : humidity (entier) et temperature (nombre). Ajoutez un tableau "required": ["humidity", "temperature"] si vous devez les rendre obligatoires, ou élargissez la section properties à mesure que votre format de charge évolue.

Les limitations suivantes s’appliquent au fichier de schéma local (tk_schema_config.json). Fichier de schéma :

  • Utilise la syntaxe standard de JSON Schema draft-07, qui est également pris en charge par le registre de schémas Opérations Azure IoT.
  • Est fonctionnellement le même contenu que celui que vous inscrivez dans le registre de schémas cloud. Vous pouvez copier et coller entre les deux pour rester cohérent.
  • Est référencé par l’application hôte via la variable TK_SCHEMA_CONFIG_PATHd’environnement.

Actuellement, les limitations suivantes s’appliquent dans le runtime de développement local :

  • Un seul fichier de configuration de schéma est chargé. Aucune inclusion multi-fichiers ni analyse de répertoire n’est prise en charge.
  • $ref vers les fichiers externes ou les URL n’est pas pris en charge localement. Maintenez le schéma indépendant. Vous pouvez utiliser des références de pointeur JSON internes comme {"$ref":"#/components/..."}.
  • Les mots clés draft-07 couramment utilisés comme type, properties, required, enum, minimum, maximum, allOf, anyOf, oneOf, not et items fonctionnent tous. Le validateur sous-jacent peut ignorer les fonctionnalités moins courantes ou avancées comme contentEncoding et contentMediaType.
  • Conservez la taille de vos schémas à moins de ~1 Mo pour les démarrages à froid rapides.
  • Les stratégies d’évolution de version et de schéma ne sont pas appliquées localement. Vous êtes responsable de rester aligné sur le registre cloud.

Si vous vous appuyez sur des constructions avancées qui échouent localement, validez le même schéma sur le registre cloud après la publication pour garantir la parité.

Pour plus d'informations, consultez les concepts du registre de schémas Opérations Azure IoT.

Passer en revue les données de test

Le data/ dossier contient trois fichiers de test :

  • temperature_humidity_payload_1.json - Contient à la fois les données de température et d’humidité. Toutefois, la valeur d’humidité (175.1) n’est pas un entier tel que spécifié dans le schéma, de sorte que les données échouent à la validation du schéma et sont filtrées.
  • temperature_humidity_payload_2.json - Contient uniquement les données d’humidité et est filtré.
  • temperature_humidity_payload_3.json - Contient à la fois les données de température et d’humidité et passe la validation.

Générer et exécuter le scénario de Registre de schémas

Si vous avez précédemment arrêté l’environnement d’exécution local, appuyez sur Ctrl+Shift+P pour ouvrir la palette de commandes et rechercher Opérations Azure IoT : Démarrer l’environnement de développement. Sélectionnez la mise en production comme mode d’exécution.

  1. Appuyez sur Ctrl+Shift+P pour ouvrir la palette de commandes et rechercher Opérations Azure IoT : Générer tous les opérateurs Data Flow.

  2. Sélectionnez la mise en production en tant que mode de génération. Attendez la fin de la génération.

  3. Appuyez à nouveau sur Ctrl+Shift+P et recherchez Opérations Azure IoT : Exécuter Application Graph.

  4. Sélectionnez le graph.dataflow.yaml fichier de graphique.

  5. Sélectionnez la mise en production comme mode d’exécution.

  6. Sélectionnez le data dossier dans votre espace de travail VS Code pour vos données d’entrée. Le conteneur DevX démarre pour exécuter le graphique avec l’exemple d’entrée.

Vérifier la validation du schéma

Une fois le traitement terminé :

  1. Vérifiez le dossier data/output/ contenant les résultats.

  2. La sortie contient uniquement la version traitée du temperature_humidity_payload_3.json message, car elle est conforme au schéma.

  3. Le data/output/logs/host-app.log fichier contient des entrées de journal indiquant quels messages sont acceptés ou rejetés en fonction de la validation du schéma.

Cet exemple montre comment le registre de schéma valide les messages entrants et filtre les messages qui ne sont pas conformes au schéma défini.

Arrêtez l'environnement d'exécution local lorsque vous avez terminé le test en mode mise en production en appuyant sur Ctrl+Shift+P et en recherchant Opérations Azure IoT : Arrêter l'environnement de développement.