Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure IoT-bewerkingen gegevensstroomgrafieken ondersteunen WEBAssembly-modules (WASM) voor aangepaste gegevensverwerking aan de rand. U kunt aangepaste bedrijfslogica en gegevenstransformaties implementeren als onderdeel van uw gegevensstroompijplijnen.
Belangrijk
Gegevensstroomgrafieken ondersteunen momenteel alleen MQTT-, Kafka- en OpenTelemetry-eindpunten. Andere eindpunttypen, zoals Data Lake, Microsoft Fabric OneLake, Azure Data Explorer en Lokale opslag, worden niet ondersteund.
Belangrijk
Momenteel is de enige connector die ondersteuning biedt voor grafiekdefinities voor aangepaste verwerking de HTTP/REST-connector.
Belangrijk
Momenteel ondersteunt de operations experience webinterface alleen het creëren en bekijken van datastroomgrafiekartefacten afkomstig van Azure Container Registry (ACR) en, voor ingebouwde transformaties, mcr.microsoft.com. Voor meer informatie, zie Operations experience webUI toont alleen artefacten van datastroomgrafieken afkomstig van Azure Container Registry (ACR) en mcr.microsoft.com.
Vereiste voorwaarden
- Een exemplaar van Azure IoT-bewerkingen geïmplementeerd in een Kubernetes-cluster. Zie Deploy Azure IoT-bewerkingen voor meer informatie.
- Een registereindpunt dat verwijst naar het containerregister waaruit u modules en grafieken wilt ophalen. Zie Registereindpunten configureren voor meer informatie. Als u aan de slag wilt gaan zonder uw eigen register in te stellen, gebruikt u het openbare
ghcr.iovoorbeeldeindpunt dat wordt beschreven in Vooraf gedefinieerde modules gebruiken vanuit een openbaar register.
Als u uw eigen modules en grafieken wilt pushen naar een privéregister zoals Azure Container Registry (ACR), hebt u ook het volgende nodig:
- Toegang tot een containerregister, zoals ACR, om WASM-modules en -grafieken op te slaan.
- De ORAS-CLI (OCI Registry As Storage) om WASM-modules naar het register te pushen.
De Azure CLI voorbeelden in dit artikel gebruiken omgevingsvariabelen zodat je elke waarde één keer kunt instellen en vervolgens de commando's kunt kopiëren en plakken as-is. Als je de Azure IoT-bewerkingen Codespaces-omgeving vanuit de quickstart gebruikt, zijn deze variabelen al voor je ingesteld en kun je deze stap overslaan. Anders stel je de volgende omgevingsvariabelen in je shell voordat je de commando's uitvoert.
De volgende scripts stellen de meest gebruikte omgevingsvariabelen in:
| Omgevingsvariabele | Description |
|---|---|
SUBSCRIPTION_ID |
De ID van het abonnement dat je Azure IoT-bewerkingen-instantie bevat. |
RESOURCE_GROUP |
De naam van de resourcegroep die je Azure IoT-bewerkingen-instantie bevat. |
AIO_INSTANCE_NAME |
De naam van je Azure IoT-bewerkingen instance. Voer az iot ops list -o table uit om je instanties weer te geven. |
CLUSTER_NAME |
De naam van de Azure Arc-enabled Kubernetes-cluster die jouw instantie host. |
LOCATION |
De Azure-regio om te gebruiken voor nieuwe bronnen, bijvoorbeeld eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Je hoeft alleen de variabelen in te stellen die dit artikel gebruikt. Dit artikel kan extra omgevingsvariabelen gebruiken voor de bronnamen die je kiest. Het artikel legt uit hoe je ze op de plek kunt plaatsen waar ze worden geïntroduceerd.
Overzicht
U kunt met de WASM-modules in Azure IoT-bewerkingen gegevens aan de rand van het netwerk verwerken met hoge prestaties en beveiliging door gebruik te maken van gegevensstroomgrafieken en -connectors. WASM wordt uitgevoerd in een sandbox-omgeving en ondersteunt Rust en Python.
Vooraf samengestelde modules uit een openbaar register gebruiken
Je kunt de vooraf gebouwde voorbeeldmodules van WASM en grafiekdefinities gebruiken die worden gepubliceerd in het publieke GitHub Container Registry (ghcr.io) onder azure-samples/explore-iot-operations.
Opmerking
ghcr.iovereist een geauthenticeerde tokenuitwisseling voordat het zelfs publieke artefacten bedient, en de huidige Azure IoT-bewerkingen-runtime voert de anonieme uitwisseling niet uit. Configureer het public-ghcr eindpunt met een artefact pull secret ondersteund door een GitHub personal access token (PAT) met de read:packages scope, in plaats van anonieme authenticatie. Voor de endpoint- en secret-stappen, zie Gebruik een openbaar register.
Beschikbare voorbeeldartefacten
Nadat u het public-ghcr registereindpunt hebt gemaakt, raadpleegt u het in uw gegevensstroomgrafieken met behulp van registryEndpointRef: public-ghcr. Omdat de registereindpunthost is ghcr.io, neemt u het opslagplaatspad azure-samples/explore-iot-operations op in artefactverwijzingen. De volgende voorbeeldmodules en grafiekdefinities zijn beschikbaar:
| Artifact | Description |
|---|---|
azure-samples/explore-iot-operations/graph-simple:1.0.0 |
Eenvoudige definitie van temperatuurconversiegrafiek |
azure-samples/explore-iot-operations/graph-complex:1.0.0 |
Grafiekdefinitie voor multisensorverwerking |
azure-samples/explore-iot-operations/temperature:1.0.0 |
Temperatuurconversiemodule (Fahrenheit naar Celsius) |
azure-samples/explore-iot-operations/window:1.0.0 |
Tijdgebaseerde venstermodule |
azure-samples/explore-iot-operations/snapshot:1.0.0 |
Module afbeeldingsverwerking en objectdetectie |
azure-samples/explore-iot-operations/format:1.0.0 |
Conversiemodule voor afbeeldingsformaat |
azure-samples/explore-iot-operations/humidity:1.0.0 |
Module voor gegevensverwerking van vochtigheid |
azure-samples/explore-iot-operations/collection:1.0.0 |
Module voor gegevensaggregatie met meerdere sensoren |
azure-samples/explore-iot-operations/enrichment:1.0.0 |
Module voor metagegevensverrijking |
azure-samples/explore-iot-operations/filter:1.0.0 |
Module voor gegevensfiltering |
Opmerking
De openbare voorbeeldgrafiekdefinities maken gebruik van moduleverwijzingen die bijvoorbeeld azure-samples/explore-iot-operationshet pad naar de azure-samples/explore-iot-operations/temperature:1.0.0 opslagplaats bevatten. Dit pad is vereist omdat de host van het registereindpunt is ghcr.io. Als u de artefacten naar uw eigen register kopieert, moet u ervoor zorgen dat de moduleverwijzingen in de grafiekdefinitie overeenkomen met de paden waar u de moduleartefacten pusht.
Als u de eenvoudige grafiek met het openbare register wilt gebruiken, raadpleegt u voorbeeld 1: Basisimplementatie met één WASM-module en gebruikt public-ghcr u deze als de naam van het registereindpunt.
Een privéregister gebruiken
Als u aangepaste modules wilt gebruiken of uw eigen kopieën van de voorbeeldmodules wilt hosten, stelt u een privécontainerregister in, zoals Azure Container Registry (ACR).
Containerregister instellen
Azure IoT-bewerkingen heeft een containerregister nodig om WASM-modules en grafiekdefinities op te halen. U kunt Azure Container Registry (ACR) of een ander OCI-compatibel register gebruiken. Zie Azure Container Registry implementeren om een ACR-exemplaar te maken. Nadat het register bestaat, maakt u een registereindpunt dat ernaar verwijst. Zie Een registereindpunt maken.
ORAS CLI installeren
Gebruik de ORAS CLI om WASM-modules en grafiekdefinities naar uw containerregister te pushen. Zie ORAS installeren voor installatie-instructies.
Voorbeeldmodules ophalen uit het openbare register
Vooraf gemaakte voorbeeldmodules gebruiken:
# 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
Modules naar uw register pushen
Zodra u de voorbeeldmodules en grafieken hebt, pusht u ze naar uw containerregister. Stel de omgevingsvariabele ACR_NAME in op de naam van je Azure Container Registry.
Belangrijk
De operationele ervaring ontdekt artefacten door hun OCI-configuratie media type, niet het media type van de laag. Wanneer u artefacten naar een register pusht, moet u de juiste mediatypen instellen of worden de artefacten niet weergegeven in de gebruikersinterface van de bewerkingservaring:
| Artefactentype | Vereist OCI-configuratiemediatype | Vereiste mediumtype voor de laag |
|---|---|---|
| Grafiekdefinitie | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| WASM-module | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Als u een CI/CD-pijplijn of andere hulpprogramma's gebruikt om artefacten tussen registers te kopiëren, controleert u of deze mediatypen behouden blijven. Sommige hulpprogramma's stripen of vervangen metagegevens van artefacten tijdens de overdracht, waardoor de artefacten op de achtergrond verdwijnen uit de bewerkingservaring. Zie Vereisten voor registerartefacten voor meer informatie.
Een artefactindeling kiezen
De artefactnamen die u gebruikt wanneer u grafieken en modules pusht, bepalen welke moduleverwijzingen u nodig hebt in de grafiekdefinitie. Zie Artefactpaden en grafiekmoduleverwijzingen voor achtergrondinformatie over hoe de hostnaam van het registereindpunt, het artefactpad en de moduleverwijzing zich tot elkaar verhouden.
Bewaar voor de Azure voorbeeldgrafieken het pad naar de voorbeeldopslagplaats wanneer u artefacten naar uw eigen register kopieert. De grafiekdefinities verwijzen naar modules met behulp van dat pad:
<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
Gebruiken artifact: azure-samples/explore-iot-operations/graph-simple:1.0.0 in de gegevensstroomgrafiek. De grafiekdefinitie maakt gebruik van module: "azure-samples/explore-iot-operations/temperature:1.0.0".
Voor uw eigen grafieken kunt u een platte indeling kiezen:
<YOUR_ACR_NAME>.azurecr.io/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0
Gebruik artifact: graph-simple:1.0.0 in de gegevensstroomgrafiek en module: "temperature:1.0.0" binnen de grafiekdefinitie.
Of kies uw eigen geneste indeling:
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/temperature:1.0.0
Gebruik artifact: factory/graphs/graph-simple:1.0.0 in de gegevensstroomgrafiek en module: "factory/graphs/temperature:1.0.0" binnen de grafiekdefinitie.
Als u ervoor wilt zorgen dat de grafieken en modules zichtbaar zijn in de webinterface van de operations-ervaring, voegt u de --config en --artifact-type vlaggen toe, zoals wordt weergegeven in het volgende voorbeeld:
# 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
Aanbeveling
U kunt ook uw eigen modules pushen en aangepaste grafieken maken. Zie Configuratie van aangepaste gegevensstroomgrafieken.
Een module bijwerken in een actieve grafiek
U kunt een WASM-module bijwerken in een actieve grafiek zonder de grafiek te stoppen. Dit is handig als u de logica van een operator wilt bijwerken zonder de gegevensstroom te stoppen. Als u bijvoorbeeld de temperatuurconversiemodule wilt bijwerken van versie 1.0.0 naar 2.0.0 in de indeling van het Azure voorbeeldartefact, uploadt u de nieuwe versie als volgt:
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
Opmerking
Als u nieuwe inhoud naar dezelfde tag pusht (bijvoorbeeld overschrijven azure-samples/explore-iot-operations/temperature:1.0.0), haalt de gegevensstroomgrafiek automatisch de bijgewerkte module op zonder extra configuratie. Als u echter naar een nieuwe tag pusht (bijvoorbeeld azure-samples/explore-iot-operations/temperature:2.0.0), moet u ook de YAML van de grafiekdefinitie bijwerken om te verwijzen naar de nieuwe versie en het graafartefact opnieuw pushen.
Aangepaste WASM-modules ontwikkelen
Als u aangepaste logica voor gegevensverwerking voor uw gegevensstroomgrafieken wilt maken, ontwikkelt u WebAssembly-modules in Rust of Python. Met aangepaste modules kunt u gespecialiseerde bedrijfslogica, gegevenstransformaties en analyses implementeren die niet beschikbaar zijn in de ingebouwde operators.
Voor uitgebreide richtlijnen voor ontwikkeling, waaronder:
- Uw ontwikkelomgeving instellen
- Operators maken in Rust en Python
- Informatie over het gegevensmodel en de interfaces
- Uw modules bouwen en testen
Zie WebAssembly-modules ontwikkelen voor gegevensstroomgrafieken.
Zie WebAssembly-grafiekdefinities configureren voor gedetailleerde informatie over het maken en configureren van de YAML-grafiekdefinities die uw gegevensverwerkingswerkstromen definiëren.
Vereisten voor registerartefacten
De bewerkingservaring maakt gebruik van metagegevens van OCI-artefacten om grafieken en modules te detecteren en weer te geven. Inzicht in deze vereisten is belangrijk wanneer u aangepaste CI/CD-pijplijnen bouwt, artefacten kopieert tussen registers of problemen met ontbrekende artefacten in de gebruikersinterface oplost.
Hoe artefactdetectie werkt
Wanneer u een artefact naar een register pusht met ORAS, bevat het OCI-manifest twee relevante velden:
- Configuratiemediatype: Bepaalt om welk type object het gaat. De bewerkingservaring filtert op dit veld om grafieken en modules te vinden.
- Laagmediatype: Beschrijft de inhoudsindeling van het werkelijke bestand (YAML of WASM).
De bewerkingservaring maakt gebruik van het type configuratiemedia voor detectie, niet het type laagmedia. Als het type configuratiemedia ontbreekt of onjuist is, bestaat het artefact wel in het register, maar wordt het niet weergegeven in de gebruikersinterface.
Vereiste mediatypen
| Artefactentype | Type configuratiemedia (--config of --artifact-type) |
Laagmediatype |
|---|---|---|
| Grafiekdefinitie | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| WASM-module | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Voor grafiekdefinities geef je het configuratie-mediatype door met de --config vlag. Stel de omgevingsvariabele REGISTRY in op je registryhost (bijvoorbeeld, <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
Geef voor WASM-modules deze door met de --artifact-type vlag:
oras push $REGISTRY/my-module:1.0.0 \
--artifact-type application/vnd.module.wasm.content.layer.v1+wasm \
module.wasm:application/wasm
Overwegingen voor CI/CD-pijplijnen
Als u geautomatiseerde pijplijnen gebruikt om artefacten tussen registers te kopiëren of te promoveren (bijvoorbeeld van een faseringsregister naar een productieregister), controleert u of de pijplijn metagegevens van OCI-artefacten behoudt. Sommige hulpprogramma's stripen of vervangen het type configuratiemedia tijdens de overdracht, waardoor artefacten op de achtergrond verdwijnen uit de bewerkingservaring.
Controleer het manifest ervan om te controleren of een artefact de juiste metagegevens heeft na overdracht:
oras manifest fetch $REGISTRY/my-graph:1.0.0 | jq '{mediaType, configMediaType: .config.mediaType}'
In de uitvoer moet het volgende worden weergegeven:
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"configMediaType": "application/vnd.microsoft.aio.graph.v1+yaml"
}
Als configMediaType een algemene waarde toont, zijn de metagegevens verwijderd, en moet het artefact opnieuw worden gepusht met de juiste instellingen.
Verwante inhoud
- WebAssembly-modules ontwikkelen voor het schrijven van operators in Rust en Python (inclusief end-to-end quickstart)
- WebAssembly-grafiekdefinities configureren voor de YAML-structuur en configuratieparameters van de grafiek
- WebAssembly gebruiken met gegevensstroomgrafieken voor resourceconfiguratie en voorbeelden van DataflowGraph
- WASM-modules bouwen met VS Code-extensie voor ontwikkeling op basis van IDE
- Registereindpunten configureren