Condividi tramite


Usare il registro degli schemi con i moduli WASM

Il Registro di sistema dello schema consente di convalidare i formati dei messaggi e garantire la coerenza dei dati nell'elaborazione del flusso di dati. Questo articolo illustra come usare il Registro di sistema dello schema con i moduli WASM nell'ambiente di sviluppo locale Azure IoT Operations.

Prima di completare i passaggi descritti in questo articolo, configurare l'ambiente di sviluppo locale ed eseguire un'applicazione graph in locale. Per altre informazioni, vedere Creare moduli WASM per i flussi di dati.

Prerequisiti

Completare i prerequisiti elencati in Compilare moduli WASM per i flussi di dati.

Apri l'area di lavoro di esempio del registro di schemi

Clonare il repository Explore IoT Operations se non è già stato fatto.

Aprire la cartella samples/wasm/schema-registry-scenario. Questa cartella contiene le risorse seguenti:

  • graph.dataflow.yaml - Configurazione del grafico del flusso di dati.
  • tk_schema_config.json - Schema JSON usato dall'app host in locale per convalidare i payload dei messaggi in ingresso prima di raggiungere gli operatori downstream. Mantenere il file sincronizzato con qualsiasi schema pubblicato nell'ambiente Microsoft Azure.
  • data/ - Dati di input di esempio con formati di messaggio diversi per il test.
  • operators/filter/ - Codice sorgente per l'operatore filter.
  • (Facoltativo) hostapp.env.list - L'estensione VS Code genera automaticamente una in fase di esecuzione aggiungendo TK_SCHEMA_CONFIG_PATH=tk_schema_config.json. Se si specifica un file di schema personalizzato, assicurarsi che la variabile punti a tale file.

Informazioni sulla configurazione dello schema

Aprire il tk_schema_config.json file per visualizzare la definizione dello schema:

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

Questo schema definisce un oggetto JSON di primo livello che può contenere due proprietà numeriche: humidity (integer) e temperature (numero). Aggiungere una "required": ["humidity", "temperature"] matrice se è necessario renderle entrambe necessarie o estendere la properties sezione man mano che il formato del payload si evolve.

Le limitazioni seguenti si applicano al file di schema locale (tk_schema_config.json). File di schema:

  • Usa la sintassi standard dello schema JSON draft-07, la stessa bozza supportata dal Registro di sistema dello schema Azure IoT Operations.
  • È funzionalmente lo stesso del contenuto che registri nel Registro degli schemi cloud. È possibile copiare e incollare tra i due elementi per mantenere la coerenza.
  • Viene fatto riferimento dall'app host tramite la variabile TK_SCHEMA_CONFIG_PATHdi ambiente .

Attualmente, nel runtime di sviluppo locale si applicano le limitazioni seguenti:

  • Viene caricato un solo file di configurazione dello schema. Non è supportata l'inclusione di più file o la scansione della directory.
  • $ref per i file o gli URL esterni non è supportato in locale. Mantenere lo schema autonomo. È possibile usare riferimenti a puntatori JSON interni, ad {"$ref":"#/components/..."}esempio .
  • Parole chiave draft-07 comunemente usate, come type, properties, required, enum, minimum, maximum, allOf, anyOf, oneOf, not e items funzionano tutte. Il validator sottostante potrebbe ignorare funzionalità meno comuni o avanzate come contentEncoding e contentMediaType.
  • Mantenere le dimensioni degli schemi inferiori a ~1 MB per l'avvio rapido a freddo.
  • Il controllo delle versioni e i criteri di evoluzione dello schema non vengono applicati in locale. È tua responsabilità rimanere allineato al registro cloud.

Se ci si basa su costrutti avanzati che non superano la convalida in locale, convalidare lo stesso schema nel Registro di sistema cloud dopo la pubblicazione per garantire la parità.

Per ulteriori informazioni, vedere i concetti del registro degli schemi di Azure IoT Operations.

Esaminare i dati di test

La data/ cartella contiene tre file di test:

  • temperature_humidity_payload_1.json - Contiene dati relativi sia alla temperatura che all'umidità. Tuttavia, il valore di umidità (175,1) non è un numero intero come specificato nello schema, quindi i dati non riescono a convalidare lo schema e vengono filtrati.
  • temperature_humidity_payload_2.json - Contiene solo i dati di umidità e viene filtrato.
  • temperature_humidity_payload_3.json - Contiene sia i dati relativi alla temperatura che all'umidità e supera la convalida.

Costruire ed eseguire lo scenario del registro di schemi.

Se in precedenza è stato arrestato l'ambiente di esecuzione locale, premere Ctrl+Shift+P per aprire il riquadro comandi e cercare Azure IoT Operations: Avvia ambiente di sviluppo. Selezionare release come modalità di esecuzione.

  1. Premere Ctrl+Shift+P per aprire la palette comandi e cercare Azure IoT Operations: Costruisci tutti gli operatori Data Flow.

  2. Selezionare Release (Versione ) come modalità di compilazione. Attendere il completamento del processo di compilazione.

  3. Premere di nuovo Ctrl+Shift+P e cercare Azure IoT Operations: Esegui il Grafico dell'Applicazione.

  4. Selezionare il file del graph.dataflow.yaml grafico.

  5. Selezionare release come modalità di esecuzione.

  6. Selezionare la cartella nell'area data di lavoro di VS Code per i dati di input. Il contenitore DevX si avvia per eseguire il grafico con l'input di esempio.

Verificare la convalida dello schema

Al termine dell'elaborazione:

  1. Controllare la data/output/ cartella per i risultati.

  2. L'output contiene solo la versione elaborata del temperature_humidity_payload_3.json messaggio perché è conforme allo schema.

  3. Il data/output/logs/host-app.log file contiene voci di log che indicano quali messaggi vengono accettati o rifiutati in base alla convalida dello schema.

Questo esempio mostra come il Registro di sistema dello schema convalida i messaggi in ingresso e filtra i messaggi che non sono conformi allo schema definito.

Arrestare l'ambiente di esecuzione locale al termine del test in modalità di rilascio premendo Ctrl+Shift+P e cercando Azure IoT Operations: Arresta ambiente di sviluppo.