Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- Implemente una instancia de Azure IoT Operations en un clúster de Kubernetes habilitado para Arc. Para más información, consulte Implementación de Operaciones de IoT de Azure.
- Use un registro de contenedor como Azure Container Registry (ACR) para almacenar gráficos y módulos WASM.
- Configure un punto de conexión al registro para permitir que la instancia de Azure IoT Operations acceda al registro de contenedores. Para más información, consulte Configuración de puntos de conexión del Registro.
- Instale la CLI de OCI Registry As Storage (ORAS) para insertar módulos de WASM en el registro.
- Desarrolle módulos WASM personalizados siguiendo las instrucciones de Compilación de módulos WASM para flujos de datos en VS Code o Desarrollo de módulos WebAssembly (WASM) y definiciones de grafos para gráficos de flujo de datos.
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.