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.
Azure IoT Operations dataflödesdiagram stöder WebAssembly-moduler (WASM) för anpassad databearbetning vid gränsen. Du kan distribuera anpassad affärslogik och datatransformeringar som en del av dina dataflödespipelines.
Viktigt!
Dataflödesdiagram stöder för närvarande endast MQTT-, Kafka- och OpenTelemetry-slutpunkter. Andra slutpunktstyper som Data Lake, Microsoft Fabric OneLake, Azure Data Explorer och Local Storage stöds inte.
Viktigt!
För närvarande är HTTP/REST-anslutningsappen den enda anslutningsappen som stöder grafdefinitioner för anpassad bearbetning.
Viktigt!
För närvarande stödjer webbgränssnittet för operationsupplevelsen endast skapande och visning av dataflödesgrafartefakter hämtade från Azure Container Registry (ACR) och, för inbyggda transformationer, mcr.microsoft.com. För att lära dig mer, se Operations experience web UI visar endast dataflödesgrafartefakter hämtade från Azure Container Registry (ACR) och mcr.microsoft.com.
Förutsättningar
- En instans av Azure IoT Operations distribuerad i ett Kubernetes-kluster. Mer information finns i Deploy Azure IoT Operations.
- En registerslutpunkt som pekar på det containerregister som du vill hämta moduler och grafer från. Mer information finns i Konfigurera registerslutpunkter. Kom igång utan att konfigurera ditt eget register genom att använda den offentliga
ghcr.ioexempelslutpunkten som beskrivs i Använda fördefinierade moduler från ett offentligt register.
Om du vill push-överföra dina egna moduler och grafer till ett privat register som Azure Container Registry (ACR) behöver du också:
- Åtkomst till ett containerregister som ACR för att lagra WASM-moduler och diagram.
- OCI Registry As Storage (ORAS) CLI för att skicka WASM-moduler till registret.
De Azure CLI exemplen i denna artikel använder miljövariabler så att du kan sätta varje värde en gång och sedan kopiera och klistra in kommandona as-is. Om du använder Azure IoT Operations Codespaces-miljön från quickstart är dessa variabler redan inställda för dig och du kan hoppa över detta steg. Annars, ställ in följande miljövariabler i ditt skal innan du kör kommandona.
Följande skript anger de mest använda miljövariablerna:
| Miljövariabel | Description |
|---|---|
SUBSCRIPTION_ID |
ID:t för prenumerationen som innehåller din Azure IoT Operations-instans. |
RESOURCE_GROUP |
Namnet på resursgruppen som innehåller din Azure IoT Operations-instans. |
AIO_INSTANCE_NAME |
Namnet på din Azure IoT Operations-instans. För att lista dina instanser, kör az iot ops list -o table. |
CLUSTER_NAME |
Namnet på det Azure Arc-aktiverade Kubernetes-klustret som hostar din instans. |
LOCATION |
Azure-regionen att använda för nya resurser, till exempel eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Du behöver bara ställa in de variabler som denna artikel använder. Den här artikeln kan använda ytterligare miljövariabler för resursnamn som du väljer. Artikeln förklarar hur man placerar dem där de introduceras.
Översikt
MED WASM-moduler i Azure IoT Operations dataflödesdiagram och anslutningsappar kan du bearbeta data vid gränsen med hög prestanda och säkerhet. WASM körs i en sandbox-miljö och stöder Rust och Python.
Använda fördefinierade moduler från ett offentligt register
Du kan använda de förbyggda exempelmodulerna för WASM och grafdefinitioner som publiceras i det publika GitHub Container Registry (ghcr.io) under azure-samples/explore-iot-operations.
Anmärkning
ghcr.iokräver ett autentiserat tokenutbyte innan det ens betjänar publika artefakter, och den nuvarande Azure IoT Operations-runtimen utför inte det anonyma utbytet. Konfigurera slutpunkten public-ghcr med en pull-hemlighet för artefakter som använder en personlig åtkomsttoken (PAT) för GitHub med omfånget read:packages, i stället för anonym autentisering. För slutpunkts- och hemlighetsstegen, se Använd ett publikt register.
Tillgängliga exempelartefakter
När du har skapat public-ghcr registerslutpunkten refererar du till den i dina dataflödesdiagram med hjälp registryEndpointRef: public-ghcrav . Eftersom värden för registerslutpunkten är ghcr.io, ska lagringsplatssökvägen azure-samples/explore-iot-operations inkluderas i artefaktreferenser. Följande exempelmoduler och grafdefinitioner är tillgängliga:
| Artifact | Description |
|---|---|
azure-samples/explore-iot-operations/graph-simple:1.0.0 |
Enkel definition av temperaturkonverteringsdiagram |
azure-samples/explore-iot-operations/graph-complex:1.0.0 |
Diagramdefinition för bearbetning av flera sensorer |
azure-samples/explore-iot-operations/temperature:1.0.0 |
Modul för temperaturkonvertering (Fahrenheit till Celsius) |
azure-samples/explore-iot-operations/window:1.0.0 |
Tidsbaserad fönstermodul |
azure-samples/explore-iot-operations/snapshot:1.0.0 |
Modul för bildbearbetning och objektidentifiering |
azure-samples/explore-iot-operations/format:1.0.0 |
Modul för konvertering av bildformat |
azure-samples/explore-iot-operations/humidity:1.0.0 |
Modul för bearbetning av fuktighetsdata |
azure-samples/explore-iot-operations/collection:1.0.0 |
Modul för datasammansättning med flera sensorer |
azure-samples/explore-iot-operations/enrichment:1.0.0 |
Modul för metadataberikning |
azure-samples/explore-iot-operations/filter:1.0.0 |
Modul för datafiltrering |
Anmärkning
De offentliga exempeldiagramdefinitionerna använder modulreferenser som innehåller azure-samples/explore-iot-operations lagringsplatsens sökväg, till exempel azure-samples/explore-iot-operations/temperature:1.0.0. Den här sökvägen krävs eftersom värdnamnet för registerslutpunkten är ghcr.io. Om du kopierar artefakterna till ditt eget register, se till att modulreferenserna i din grafdefinition stämmer överens med sökvägarna där du publicerar modulartefakterna.
Om du vill använda det enkla diagrammet med det offentliga registret kan du läsa Exempel 1: Grundläggande distribution med en WASM-modul och använda public-ghcr som registerslutpunktsnamn.
Använda ett privat register
Om du behöver använda anpassade moduler eller vill vara värd för dina egna kopior av exempelmodulerna konfigurerar du ett privat containerregister som Azure Container Registry (ACR).
Konfigurera containerregister
Azure IoT Operations behöver ett containerregister för att hämta WASM-moduler och grafdefinitioner. Du kan använda Azure Container Registry (ACR) eller ett annat OCI-kompatibelt register. Information om hur du skapar en ACR-instans finns i Distribuera Azure Container Registry. När registret finns skapar du en registerslutpunkt som pekar på det – se Skapa en registerslutpunkt.
Installera ORAS CLI
Använd ORAS CLI för att push-överföra WASM-moduler och grafdefinitioner till containerregistret. Installationsinstruktioner finns i Installera ORAS.
Hämta exempelmoduler från det offentliga registret
Använd fördefinierade exempelmoduler:
# 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
Skicka moduler till ditt register
När du har exempelmoduler och grafer skickar du dem till containerregistret. Ställ in miljövariabeln ACR_NAME till namnet på din Azure Container Registry.
Viktigt!
Driftupplevelsen identifierar artefakter efter deras OCI-konfigurationsmedietyp, inte lagermedietypen. När du skickar artefakter till ett register måste du ange rätt medietyper, annars visas inte artefakterna i användargränssnittet för driftsupplevelsen:
| Typ av artefakt | Nödvändig OCI-konfigurationsmediatyp | Nödvändig lagermedietyp |
|---|---|---|
| Grafdefinition | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| WASM-modul | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Om du använder en CI/CD-pipeline eller andra verktyg för att kopiera artefakter mellan register kontrollerar du att den bevarar dessa medietyper. Vissa verktyg tar bort eller ersätter artefaktmetadata under överföringen, vilket gör att artefakterna tyst försvinner från driftupplevelsen. Mer information finns i Krav för registerartefakt.
Välj en layout för artefakter
De artefaktnamn som du använder när du push-överför grafer och moduler avgör vilka modulreferenser du behöver i grafdefinitionen. Mer information om hur värdnamnet för registerslutpunkten, artefaktsökvägen och modulreferensen hänger ihop finns i Artefaktsökvägar och grafmodulreferenser.
För Azure-exempelgraferna ska du bevara sökvägen till exempellagringsplatsen när du kopierar artefakter till ditt eget register. Grafdefinitionerna hänvisar till moduler via den sökvägen:
<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
Använd artifact: azure-samples/explore-iot-operations/graph-simple:1.0.0 i dataflödesdiagrammet. Grafdefinitionen använder module: "azure-samples/explore-iot-operations/temperature:1.0.0".
För dina egna grafer kan du välja en plan layout:
<YOUR_ACR_NAME>.azurecr.io/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0
Använd artifact: graph-simple:1.0.0 i dataflödesdiagrammet och module: "temperature:1.0.0" inuti grafdefinitionen.
Eller välj din egen kapslade layout:
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/temperature:1.0.0
Använd artifact: factory/graphs/graph-simple:1.0.0 i dataflödesdiagrammet och module: "factory/graphs/temperature:1.0.0" inuti grafdefinitionen.
För att säkerställa att diagram och moduler visas i webbgränssnittet för driftupplevelse lägger du till flaggorna --config och --artifact-type som visas i följande exempel:
# 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
Tips/Råd
Du kan också push-överföra dina egna moduler och skapa anpassade grafer, se Konfiguration av anpassade dataflödesdiagram.
Uppdatera en modul i ett diagram som körs
Du kan uppdatera en WASM-modul i ett diagram som körs utan att stoppa grafen. Detta är användbart när du vill uppdatera logiken för en operator utan att stoppa dataflödet. Om du till exempel vill uppdatera temperaturkonverteringsmodulen från version 1.0.0 till 2.0.0 i Azure artefaktlayout laddar du upp den nya versionen på följande sätt:
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
Anmärkning
Om du skickar nytt innehåll till samma tagg (till exempel överskrivning azure-samples/explore-iot-operations/temperature:1.0.0) hämtar dataflödesdiagrammet automatiskt den uppdaterade modulen utan ytterligare konfiguration. Men om du push-överför till en ny tagg (till exempel azure-samples/explore-iot-operations/temperature:2.0.0), måste du också uppdatera grafdefinitionen YAML för att referera till den nya versionen och push-överföra grafartefakten igen.
Utveckla anpassade WASM-moduler
Om du vill skapa anpassad databearbetningslogik för dina dataflödesdiagram utvecklar du WebAssembly-moduler i Rust eller Python. Med anpassade moduler kan du implementera specialiserad affärslogik, datatransformering och analys som inte är tillgängliga i de inbyggda operatorerna.
För omfattande utvecklingsvägledning, inklusive:
- Konfigurera utvecklingsmiljön
- Skapa operatorer i Rust och Python
- Förstå datamodellen och gränssnitten
- Skapa och testa dina moduler
Se Utveckla WebAssembly-moduler för dataflödesdiagram.
Detaljerad information om hur du skapar och konfigurerar YAML-grafdefinitioner som definierar dina arbetsflöden för databearbetning finns i Konfigurera WebAssembly-grafdefinitioner.
Krav för registerartefakt
Driftupplevelsen använder OCI-artefaktmetadata för att identifiera och visa grafer och moduler. Att förstå dessa krav är viktigt när du skapar anpassade CI/CD-pipelines, kopierar artefakter mellan register eller felsöker saknade artefakter i användargränssnittet.
Så här fungerar artefaktidentifiering
När du skickar en artefakt till ett register med ORAS innehåller OCI-manifestet två relevanta fält:
- Typ av konfigurationsmedium: Identifierar vilken typ av artefakt det här är. Driftupplevelsen filtrerar det här fältet för att hitta grafer och moduler.
- Lagermedietyp: Beskriver innehållsformatet för den faktiska filen (YAML eller WASM).
Driftupplevelsen använder konfigmediatypen för identifiering, inte layermediatypen. Om konfigurationsmedietypen saknas eller är felaktig finns artefakten i registret men visas inte i användargränssnittet.
Nödvändiga medietyper
| Typ av artefakt | Konfigurationsmedietyp (--config eller --artifact-type) |
Medietyp för lager |
|---|---|---|
| Grafdefinition | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| WASM-modul | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
För grafdefinitioner, skicka konfigurationsmediatypen med flaggan --config . Ställ in miljövariabeln REGISTRY till din registervärd (till exempel, <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
För WASM-moduler skickar du det med --artifact-type flaggan:
oras push $REGISTRY/my-module:1.0.0 \
--artifact-type application/vnd.module.wasm.content.layer.v1+wasm \
module.wasm:application/wasm
Överväganden för CI/CD-pipeline
Om du använder automatiserade pipelines för att kopiera eller flytta upp artefakter mellan register (till exempel från ett mellanlagringsregister till ett produktionsregister) kontrollerar du att pipelinen bevarar OCI-artefaktmetadata. Vissa verktyg tar bort eller ersätter config-medietypen under överföringen, vilket gör att artefakter tyst försvinner från driftupplevelsen.
Kontrollera att en artefakt har rätt metadata efter överföringen genom att granska dess manifest:
oras manifest fetch $REGISTRY/my-graph:1.0.0 | jq '{mediaType, configMediaType: .config.mediaType}'
Utdata ska visa:
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"configMediaType": "application/vnd.microsoft.aio.graph.v1+yaml"
}
Om configMediaType visar ett generiskt värde som application/vnd.oci.empty.v1+json, har metadatan tagits bort och artefakten måste pushas igen med rätt flaggor.
Relaterat innehåll
- Develop WebAssembly-moduler för att skriva operatorer i Rust och Python (inklusive snabbstart från slutpunkt till slutpunkt)
- Konfigurera WebAssembly-grafdefinitioner för yaml-grafstruktur och konfigurationsparametrar
- Använd WebAssembly med dataflödesgraf för DataflowGraph-resurskonfiguration och exempel
- Skapa WASM-moduler med VS Code-tillägget för IDE-baserad utveckling
- Konfigurera registerslutpunkter