Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med schemaregistret kan du verifiera meddelandeformat och säkerställa datakonsekvens i dataflödesbearbetningen. Den här artikeln visar hur du använder schemaregistret med WASM-moduler i den Azure IoT Operations lokala utvecklingsmiljön.
Innan du slutför stegen i den här artikeln konfigurerar du din lokala utvecklingsmiljö och skapar och kör ett grafprogram lokalt. Mer information finns i Skapa WASM-moduler för dataflöden.
Förutsättningar
Slutför de krav som anges i Skapa WASM-moduler för dataflöden.
Öppna schemaregistrets exempelarbetsyta
Klona lagringsplatsen Explore IoT Operations om du inte redan har gjort det.
Öppna mappen samples/wasm/schema-registry-scenario. Den här mappen innehåller följande resurser:
-
graph.dataflow.yaml– Konfiguration av dataflödesdiagram. -
tk_schema_config.json– JSON-schemat som värdappen använder lokalt för att verifiera inkommande meddelandenyttolaster innan de når nedströmsoperatorer. Håll den här filen synkroniserad med alla scheman som du publicerar i din Microsoft Azure miljö. -
data/– Exempel på indata med olika meddelandeformat för testning. -
operators/filter/– Källkod för filteroperatorn. - (Valfritt)
hostapp.env.list– VS Code-tillägget autogenererar en vid körning och lägger sedan tillTK_SCHEMA_CONFIG_PATH=tk_schema_config.json. Om du anger en egen schemafil kontrollerar du att variabeln pekar på den.
Förstå schemakonfigurationen
tk_schema_config.json Öppna filen för att visa schemadefinitionen:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"humidity": {
"type": "integer"
},
"temperature": {
"type": "number"
}
}
}
Det här schemat definierar ett JSON-objekt på den översta nivån som kan innehålla två numeriska egenskaper: humidity (heltal) och temperature (tal). Lägg till en "required": ["humidity", "temperature"] matris om du behöver göra dem båda obligatoriska, eller utöka properties avsnittet allt eftersom nyttolastformatet utvecklas.
Följande begränsningar gäller för den lokala schemafilen (tk_schema_config.json). Schemafilen:
- Använder JSON Schema draft-07-standardsyntax, samma utkast som stöds av Azure IoT Operations schemaregistret.
- Är funktionellt samma innehåll som du registrerar i molnschemaregistret. Du kan kopiera och klistra in mellan de två för att hålla dig konsekvent.
- Refereras av värdappen via miljövariabeln
TK_SCHEMA_CONFIG_PATH.
För närvarande gäller följande begränsningar i den lokala utvecklingsmiljön:
- Endast en schema-konfigurationsfil läses in. Det går inte att inkludera flera filer eller genomsöka kataloger.
-
$reftill externa filer eller URL:er stöds inte lokalt. Behåll schemat fristående. Du kan använda interna JSON-pekarreferenser som{"$ref":"#/components/..."}. - Vanliga nyckelord för draft-07 som
type,properties,required,enum,minimum,maximum,allOf,anyOf,oneOf,notochitemsfungerar alla. Den underliggande valideraren kan ignorera mindre vanliga eller avancerade funktioner somcontentEncodingochcontentMediaType. - Begränsa storleken på dina scheman till mindre än ~1 MB för snabb kallstart.
- Versions- och schemautvecklingsprinciper tillämpas inte lokalt. Du ansvarar för att hålla dig i linje med molnregistret.
Om du förlitar dig på avancerade konstruktioner som misslyckas med valideringen lokalt validerar du samma schema mot molnregistret efter publiceringen för att säkerställa paritet.
Mer information finns i Azure IoT Operations schemaregisterbegrepp.
Granska testdata
Mappen data/ innehåller tre testfiler:
-
temperature_humidity_payload_1.json– Innehåller både temperatur- och luftfuktighetsdata. Fuktighetsvärdet (175.1) är dock inte ett heltal som anges i schemat, så data misslyckas med schemavalidering och filtreras bort. -
temperature_humidity_payload_2.json– Innehåller endast fuktighetsdata och filtreras bort. -
temperature_humidity_payload_3.json– Innehåller både temperatur- och fuktighetsdata och klarar valideringen.
Skapa och köra schemaregisterscenariot
Om du tidigare stoppade den lokala körningsmiljön trycker du på Ctrl+Shift+P för att öppna kommandopaletten och söka efter Azure IoT Operations: Starta utvecklingsmiljön. Välj släpp som körningsläge.
Tryck på
Ctrl+Shift+Pför att öppna kommandopaletten och sök efter Azure IoT Operations: Bygg alla dataflödesoperatörer.Välj version som byggläge. Vänta tills bygget har slutförts.
Tryck på
Ctrl+Shift+Pigen och sök efter Azure IoT Operations: Kör Application Graph.Välj
graph.dataflow.yamlgraffilen.Välj släpp som körningsläge.
dataVälj mappen i VS Code-arbetsytan för dina indata. DevX-containern startas för att köra grafen med exempelindata.
Verifiera schemavalidering
När bearbetningen är klar:
Kontrollera om det finns resultat i
data/output/mappen.Utdata innehåller endast den bearbetade versionen av
temperature_humidity_payload_3.jsonmeddelandet eftersom det överensstämmer med schemat.Filen
data/output/logs/host-app.loginnehåller loggposter som anger vilka meddelanden som godkänns eller avvisas baserat på schemaverifiering.
Det här exemplet visar hur schemaregistret validerar inkommande meddelanden och filtrerar bort meddelanden som inte överensstämmer med det definierade schemat.
Stoppa den lokala körningsmiljön när du är klar med testningen i versionsläge genom att trycka på Ctrl+Shift+P och söka efter Azure IoT Operations: Stoppa utvecklingsmiljön.