Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 aggiungendoTK_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.
-
$refper 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,noteitemsfunzionano tutte. Il validator sottostante potrebbe ignorare funzionalità meno comuni o avanzate comecontentEncodingecontentMediaType. - 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.
Premere
Ctrl+Shift+Pper aprire la palette comandi e cercare Azure IoT Operations: Costruisci tutti gli operatori Data Flow.Selezionare Release (Versione ) come modalità di compilazione. Attendere il completamento del processo di compilazione.
Premere di nuovo
Ctrl+Shift+Pe cercare Azure IoT Operations: Esegui il Grafico dell'Applicazione.Selezionare il file del
graph.dataflow.yamlgrafico.Selezionare release come modalità di esecuzione.
Selezionare la cartella nell'area
datadi 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:
Controllare la
data/output/cartella per i risultati.L'output contiene solo la versione elaborata del
temperature_humidity_payload_3.jsonmessaggio perché è conforme allo schema.Il
data/output/logs/host-app.logfile 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.
Contenuti correlati
- Compilare moduli WASM per i flussi di dati
- Creare grafici WASM con stato incorporato utilizzando l'archivio degli stati
- Eseguire il debug di moduli WASM
- Testare i moduli WASM
- Informazioni sui moduli WebAssembly (WASM) e sulle definizioni di grafo per i grafici del flusso di dati
- Concetti del registro degli schemi di Azure IoT Operations