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.
I grafici del flusso di dati di Operazioni di Azure IoT supportano moduli WebAssembly (WASM) per l'elaborazione dati personalizzata al margine. È possibile distribuire trasformazioni di dati e logica di business personalizzate come parte delle pipeline del flusso di dati.
Importante
I grafici del flusso di dati supportano attualmente solo gli endpoint MQTT, Kafka e OpenTelemetry. Altri tipi di endpoint come Data Lake, Microsoft Fabric OneLake, Esplora dati di Azure e Archiviazione locale non sono supportati.
Importante
Attualmente l'unico connettore che supporta le definizioni del grafo per l'elaborazione personalizzata è il connettore HTTP/REST.
Importante
Attualmente, l'interfaccia utente Web per le operazioni supporta solo la creazione e la visualizzazione di artefatti del grafico del flusso di dati provenienti da Registro Azure Container (ACR) e, per le trasformazioni integrate, da mcr.microsoft.com. Per saperne di più, consulta Operations Experience web UI mostra solo artefatti di grafici di flusso dati provenienti da Registro Azure Container (ACR) e mcr.microsoft.com.
Prerequisiti
- Istanza di Operazioni di Azure IoT distribuita in un cluster Kubernetes. Per altre informazioni, vedere Deploy Operazioni di Azure IoT.
- Un endpoint del registro che punta al registro dei contenitori da cui si desidera prelevare moduli e grafi. Per altre informazioni, vedere Configurare gli endpoint del Registro di sistema. Per iniziare senza configurare il proprio registro, usare l'endpoint di esempio pubblico
ghcr.iodescritto in Usare moduli predefiniti da un registro pubblico.
Per eseguire il push di moduli e grafici personalizzati in un registro privato, ad esempio Registro Azure Container (Registro Azure Container), è necessario:
- Accesso a un registro di contenitori, come Azure Container Registry (ACR), per archiviare moduli e grafici WASM.
- Interfaccia della riga di comando OCI Registry As Storage (ORAS) per eseguire il push dei moduli WASM nel Registro di sistema.
Gli esempi interfaccia della riga di comando di Azure in questo articolo usano variabili di ambiente così puoi impostare ogni valore una volta e poi copiare e incollare i comandi as-is. Se stai usando l'ambiente Operazioni di Azure IoT Codespaces dal quickstart, queste variabili sono già impostate per te e puoi saltare questo passaggio. Altrimenti, imposta le seguenti variabili di ambiente nella tua shell prima di eseguire i comandi.
I seguenti script impostano le variabili di ambiente più comunemente utilizzate:
| Variabile di ambiente | Descrzione |
|---|---|
SUBSCRIPTION_ID |
L'ID della sottoscrizione che contiene l'istanza di Operazioni di Azure IoT. |
RESOURCE_GROUP |
Il nome del gruppo di risorse che contiene la tua istanza Operazioni di Azure IoT. |
AIO_INSTANCE_NAME |
Il nome dell'istanza di Operazioni di Azure IoT. Per elencare le tue istanze, esegui az iot ops list -o table. |
CLUSTER_NAME |
Il nome del cluster Kubernetes abilitato Azure Arc che ospita la tua istanza. |
LOCATION |
La regione Azure da utilizzare per nuove risorse, ad esempio eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Devi solo impostare le variabili utilizzate in questo articolo. Questo articolo potrebbe utilizzare variabili ambientali aggiuntive per i nomi delle risorse che scegli. L'articolo spiega come posizionarli dove vengono introdotti.
Informazioni generali
I moduli WASM nei grafici di flusso dei dati e connettori di Operazioni di Azure IoT consentono di elaborare i dati al perimetro con elevata efficienza e sicurezza. WASM viene eseguito in un ambiente in modalità sandbox e supporta Rust e Python.
Usare moduli predefiniti da un registro pubblico
Puoi utilizzare i moduli WASM predefiniti e le definizioni di grafi che vengono pubblicati nel pubblico GitHub Container Registry (ghcr.io) sotto azure-samples/explore-iot-operations.
Annotazioni
ghcr.iorichiede uno scambio di token autenticato prima di servire anche gli artefatti pubblici, e l'attuale runtime di Operazioni di Azure IoT non effettua lo scambio anonimo. Configurare l'endpoint public-ghcr con un segreto pull di artefatto supportato da un token di accesso personale (PAT) di GitHub con l'ambitoread:packages, invece dell'autenticazione anonima. Per i passaggi relativi all'endpoint e al segreto, vedi Usa un registro pubblico.
Artefatti di esempio disponibili
Dopo avere creato l'endpoint del public-ghcr registry, farvi riferimento nei grafi del flusso di dati usando registryEndpointRef: public-ghcr. Poiché l'host dell'endpoint del Registro di sistema è ghcr.io, includere il percorso azure-samples/explore-iot-operations del repository nei riferimenti agli artefatti. Sono disponibili i moduli di esempio e le definizioni di grafo seguenti:
| Artefatto | Descrzione |
|---|---|
azure-samples/explore-iot-operations/graph-simple:1.0.0 |
Definizione del grafico di conversione della temperatura semplice |
azure-samples/explore-iot-operations/graph-complex:1.0.0 |
Definizione del grafo per l'elaborazione di più sensori |
azure-samples/explore-iot-operations/temperature:1.0.0 |
Modulo di conversione della temperatura (da Fahrenheit a Celsius) |
azure-samples/explore-iot-operations/window:1.0.0 |
Modulo di finestratura basata sul tempo |
azure-samples/explore-iot-operations/snapshot:1.0.0 |
Modulo di elaborazione delle immagini e rilevamento degli oggetti |
azure-samples/explore-iot-operations/format:1.0.0 |
Modulo di conversione del formato immagine |
azure-samples/explore-iot-operations/humidity:1.0.0 |
Modulo di elaborazione dei dati di umidità |
azure-samples/explore-iot-operations/collection:1.0.0 |
Modulo di aggregazione dei dati multi-sensore |
azure-samples/explore-iot-operations/enrichment:1.0.0 |
Modulo di arricchimento dei metadati |
azure-samples/explore-iot-operations/filter:1.0.0 |
Modulo di filtro dei dati |
Annotazioni
Le definizioni del grafico di esempio pubblico usano riferimenti al modulo che includono il percorso del azure-samples/explore-iot-operations repository, ad esempio azure-samples/explore-iot-operations/temperature:1.0.0. Questo percorso è obbligatorio perché l'host dell'endpoint del Registro di sistema è ghcr.io. Se si copiano gli artefatti nel registro, assicurarsi che i riferimenti ai moduli all'interno della definizione del grafo corrispondano ai percorsi in cui si pubblicano gli artefatti dei moduli.
Per usare il grafico semplice con il registro pubblico, vedere Esempio 1: Distribuzione di base con un modulo WASM e usare public-ghcr come nome dell'endpoint del Registro di sistema.
Usare un registro privato
Se è necessario usare moduli personalizzati o ospitare copie personalizzate dei moduli di esempio, configurare un registro contenitori privato, ad esempio Registro Azure Container (ACR).
Configurare il registro contenitori
Operazioni di Azure IoT richiede un registro dei contenitori per recuperare moduli WASM e definizioni di grafico. È possibile usare Registro Azure Container (ACR) o un altro registro compatibile con OCI. Per creare un'istanza di Registro Azure Container, vedi Distribuire Registro Azure Container. Dopo aver creato il registro, creare un endpoint del registro che punti a esso. Vedere Creare un endpoint del registro.
Installare l'interfaccia della riga di comando di ORAS
Usare l'interfaccia della riga di comando di ORAS per eseguire il push di moduli WASM e delle definizioni dei grafici nel registro contenitori. Per istruzioni di installazione, vedere Installare ORAS.
Eseguire il pull dei moduli di esempio dal registro pubblico
Usare moduli di esempio predefiniti:
# 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
Eseguire il push dei moduli nel registro
Dopo aver ottenuto i moduli e i grafici di esempio, esegui il push dei moduli e dei grafici nel registro contenitori. Imposta la ACR_NAME variabile ambiente al nome del tuo Registro Azure Container.
Importante
L'esperienza operativa individua gli artefatti in base al tipo di supporto di configurazione OCI, non al tipo di supporto del livello. Quando si esegue il push degli artefatti in un Registro di sistema, è necessario impostare i tipi di supporti corretti o gli artefatti non verranno visualizzati nell'interfaccia utente dell'esperienza operativa:
| Tipo di artefatto | Tipo di supporto di configurazione OCI obbligatorio | Tipo di supporto richiesto per il livello |
|---|---|---|
| Definizione del grafo | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| Modulo WASM | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Se si usa una pipeline CI/CD o altri strumenti per copiare elementi tra registri, verificare che mantenga questi tipi di supporti. Alcuni strumenti rimuovono o sostituiscono i metadati degli artefatti durante il trasferimento, causando la loro scomparsa silenziosa dall'ambito operativo. Per ulteriori informazioni, vedere Requisiti degli artefatti del Registro.
Scegli la disposizione dell'artefatto
I nomi degli artefatti che si usanp quando si effettua il push di grafi e moduli determinano i riferimenti ai moduli necessari all'interno della definizione del grafo. Per informazioni di contesto su come l'host dell'endpoint del registro, il percorso dell'artefatto e il riferimento al modulo si relazionano tra loro, vedere Percorsi degli artefatti e riferimenti ai moduli del grafo.
Per i grafici di esempio di Azure, mantenete il percorso del repository di esempio quando si copiano gli artefatti nel proprio registry. I moduli di riferimento per le definizioni del grafo usano tale percorso:
<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
Usare artifact: azure-samples/explore-iot-operations/graph-simple:1.0.0 nel grafico del flusso di dati. La definizione del grafo usa module: "azure-samples/explore-iot-operations/temperature:1.0.0".
Per i grafici personalizzati, è possibile scegliere un layout piatto:
<YOUR_ACR_NAME>.azurecr.io/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0
Usare artifact: graph-simple:1.0.0 nel grafico del flusso di dati e module: "temperature:1.0.0" all'interno della definizione del grafo.
Oppure scegli il tuo layout annidato:
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/graph-simple:1.0.0
<YOUR_ACR_NAME>.azurecr.io/factory/graphs/temperature:1.0.0
Usare artifact: factory/graphs/graph-simple:1.0.0 nel grafico del flusso di dati e module: "factory/graphs/temperature:1.0.0" all'interno della definizione del grafo.
Per assicurarsi che i grafici e i moduli siano visibili nell'interfaccia utente Web dell'esperienza operativa, aggiungere i --config flag e --artifact-type come illustrato nell'esempio seguente:
# 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
Suggerimento
È anche possibile eseguire il push di moduli personalizzati e creare grafici personalizzati, vedere Configurazione dei grafici del flusso di dati personalizzati.
Aggiornare un modulo in un grafico in esecuzione
È possibile aggiornare un modulo WASM in un grafico in esecuzione senza arrestare il grafico. Ciò è utile quando si vuole aggiornare la logica di un operatore senza arrestare il flusso di dati. Ad esempio, per aggiornare il modulo di conversione della temperatura dalla versione 1.0.0 a 2.0.0 nel layout dell'artefatto di esempio Azure, caricare la nuova versione come indicato di seguito:
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
Annotazioni
Se si esegue il push di nuovo contenuto nello stesso tag (ad esempio, sovrascrivendo azure-samples/explore-iot-operations/temperature:1.0.0), il grafico del flusso di dati preleva automaticamente il modulo aggiornato senza ulteriori configurazioni. Tuttavia, se si esegue il push in un nuovo tag ( ad esempio , azure-samples/explore-iot-operations/temperature:2.0.0), è necessario aggiornare anche la definizione del grafo YAML per fare riferimento alla nuova versione ed eseguire nuovamente il push dell'artefatto del grafo.
Sviluppare moduli WASM personalizzati
Per creare logica di elaborazione dati personalizzata per i grafici del flusso di dati, sviluppare moduli WebAssembly in Rust o Python. I moduli personalizzati consentono di implementare logica di business specializzata, trasformazioni dei dati e analisi non disponibili negli operatori predefiniti.
Per indicazioni complete sullo sviluppo, tra cui:
- Configurazione dell'ambiente di sviluppo
- Creazione di operatori in Rust e Python
- Informazioni sul modello di dati e sulle interfacce
- Compilazione e test dei moduli
Vedere Sviluppare moduli WebAssembly per grafici del flusso di dati.
Per informazioni dettagliate sulla creazione e la configurazione delle definizioni di grafici YAML che definiscono i flussi di lavoro di elaborazione dati, vedere Configurare le definizioni dei grafici WebAssembly.
Requisiti dell'oggetto del Registro di sistema
L'esperienza operativa usa i metadati degli artefatti OCI per individuare e visualizzare grafici e moduli. Comprendere questi requisiti è importante quando si compilano pipeline CI/CD personalizzate, si copiano elementi tra registri o si risolvono i problemi relativi agli artefatti mancanti nell'interfaccia utente.
Il funzionamento dell'individuazione degli artefatti
Quando si esegue il push di un artefatto in un registro con ORAS, il manifesto OCI include due campi pertinenti:
- Tipo di media di configurazione: Identifica di che tipo di artefatto si tratta. L'esperienza operativa filtra questo campo per trovare grafici e moduli.
- Tipo di media del livello: descrive il formato del contenuto del file effettivo (YAML o WASM).
L'esperienza delle operazioni usa il tipo di supporto di configurazione per l'individuazione, non il tipo di supporto del livello. Se il tipo di supporto di configurazione manca o non è corretto, l'artefatto esiste nel Registro di sistema ma non viene visualizzato nell'interfaccia utente.
Tipi di supporti necessari
| Tipo di artefatto | Tipo media di configurazione (--config o --artifact-type) |
Tipo di supporto del livello |
|---|---|---|
| Definizione del grafo | application/vnd.microsoft.aio.graph.v1+yaml |
application/yaml |
| Modulo WASM | application/vnd.module.wasm.content.layer.v1+wasm |
application/wasm |
Per le definizioni del grafo, passare il tipo di supporto di configurazione con il flag --config. Imposta la REGISTRY variabile ambiente sull'host del registro (ad esempio, <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
Per i moduli WASM, passali con l'opzione --artifact-type:
oras push $REGISTRY/my-module:1.0.0 \
--artifact-type application/vnd.module.wasm.content.layer.v1+wasm \
module.wasm:application/wasm
Considerazioni sulla pipeline CI/CD
Se si usano pipeline automatizzate per copiare o alzare di livello gli artefatti tra registri (ad esempio, da un registro di gestione temporanea a un registro di produzione), verificare che la pipeline mantenga i metadati degli artefatti OCI. Alcuni strumenti rimuovono o sostituiscono il tipo di supporto di configurazione durante il trasferimento, facendo scomparire silenziosamente gli artefatti dall'esperienza delle operazioni.
Per verificare che un artefatto abbia i metadati corretti dopo il trasferimento, controllare il relativo manifesto:
oras manifest fetch $REGISTRY/my-graph:1.0.0 | jq '{mediaType, configMediaType: .config.mediaType}'
L'output dovrebbe visualizzare:
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"configMediaType": "application/vnd.microsoft.aio.graph.v1+yaml"
}
Se configMediaType mostra un valore generico come application/vnd.oci.empty.v1+json, i metadati sono stati rimossi e l'artefatto deve essere nuovamente sottoposto a push con i flag corretti.
Contenuti correlati
- Sviluppare moduli WebAssembly per scrivere operatori in Rust e Python (incluso l'avvio rapido end-to-end)
- Configurare le definizioni del grafo WebAssembly per la struttura YAML del grafo e i parametri di configurazione
- Usare WebAssembly con grafi di flusso di dati per la configurazione delle risorse DataflowGraph e per gli esempi
- Compilare moduli WASM con l'estensione VS Code per lo sviluppo basato su IDE
- Configurare gli endpoint del Registro di sistema