Compartir a través de


Implementación de módulos y definiciones de grafos de WebAssembly (WASM)

Los gráficos de flujo de datos de Operaciones de IoT de Azure admiten módulos de WebAssembly (WASM) para el procesamiento de datos personalizado en el borde. Puede implementar transformaciones de datos y lógica de negocios personalizadas como parte de las canalizaciones de flujo de datos.

Importante

Actualmente, los gráficos de flujo de datos solo admiten puntos de conexión MQTT, Kafka y OpenTelemetry. No se admiten otros tipos de punto de conexión, como Data Lake, Microsoft Fabric OneLake, Azure Data Explorer y Almacenamiento local. Para más información, consulte Problemas conocidos.

Importante

Actualmente, el único conector que admite definiciones de grafos para el procesamiento personalizado es el conector HTTP/REST.

Prerrequisitos

Información general

Los módulos WASM en los gráficos y conectores de flujo de datos de Azure IoT Operations permiten procesar datos en el borde con alto rendimiento y seguridad. WASM se ejecuta en un entorno de espacio aislado y admite Rust y Python.

Configuración del registro de contenedor

Operaciones de IoT de Azure necesita un registro de contenedor para extraer módulos de WASM y definiciones de grafos. Puede usar Azure Container Registry (ACR) u otro registro compatible con OCI.

Para crear y configurar una instancia de Azure Container Registry, consulte Implementar Azure Container Registry.

Instalar la CLI de ORAS

Use la CLI de ORAS para insertar módulos de WASM y definiciones de grafos en el registro de contenedor. Para obtener instrucciones de instalación, consulte Instalar ORAS.

Extracción de módulos de ejemplo del registro público

Use módulos de ejemplo creados previamente:

# 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

Inserción de módulos en el Registro

Una vez que tenga los módulos y gráficos de ejemplo, insértelos en el registro de contenedor. Reemplace <YOUR_ACR_NAME> por el nombre de Azure Container Registry. Para asegurarse de que los grafos y módulos están visibles en la interfaz de usuario web de la experiencia de operaciones, agregue las marcas --config y --artifact-type como se muestra en el ejemplo siguiente:

# Log in to your ACR
az acr login --name <YOUR_ACR_NAME>

# Push modules to your registry
oras push <YOUR_ACR_NAME>.azurecr.io/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 <YOUR_ACR_NAME>.azurecr.io/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 <YOUR_ACR_NAME>.azurecr.io/temperature:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/window:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm window-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/snapshot:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm snapshot-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/format:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm format-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/humidity:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm humidity-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/collection:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm collection-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/enrichment:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm enrichment-1.0.0.wasm:application/wasm
oras push <YOUR_ACR_NAME>.azurecr.io/filter:1.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm filter-1.0.0.wasm:application/wasm

Sugerencia

También puede insertar sus propios módulos y crear gráficos personalizados, consulte Configuración de gráficos de flujo de datos personalizados.

Actualización de un módulo en un grafo en ejecución

Puede actualizar un módulo WASM en un grafo en ejecución sin detener el gráfico. Esto resulta útil cuando desea actualizar la lógica de un operador sin detener el flujo de datos. Por ejemplo, para actualizar el módulo de conversión de temperatura de la versión 1.0.0 a 2.0.0, cargue la nueva versión de la siguiente manera:

oras push <YOUR_ACR_NAME>.azurecr.io/temperature:2.0.0 --artifact-type application/vnd.module.wasm.content.layer.v1+wasm temperature-2.0.0.wasm:application/wasm

El gráfico de flujo de datos recoge automáticamente la nueva versión del módulo sin ninguna configuración adicional. El gráfico continúa ejecutándose sin interrupciones y la nueva versión del módulo se usa para el posterior procesamiento de datos.

Desarrollo de módulos de WASM personalizados

Para crear lógica de procesamiento de datos personalizada para los grafos de flujo de datos, desarrolle módulos de WebAssembly en Rust o Python. Los módulos personalizados permiten implementar lógica de negocios especializada, transformaciones de datos y análisis que no están disponibles en los operadores integrados.

Para obtener instrucciones de desarrollo completas, que incluyan:

  • Configuración del entorno de desarrollo
  • Creación de operadores en Rust y Python
  • Descripción del modelo de datos e interfaces
  • Compilación y prueba de los módulos

Consulte Desarrollo de módulos de WebAssembly para obtener grafos de flujo de datos.

Para obtener información detallada sobre cómo crear y configurar las definiciones de grafos de YAML que definen los flujos de trabajo de procesamiento de datos, consulte Configurar definiciones de grafos de WebAssembly.