Partilhar via


Módulos de Deploy WebAssembly (WASM) e definições de grafos

Os gráficos de fluxo de dados das Operações IoT do Azure suportam módulos WebAssembly (WASM) para processamento de dados personalizado na borda. Você pode implantar lógica de negócios personalizada e transformações de dados como parte de seus pipelines de fluxo de dados.

Importante

Atualmente, os gráficos de fluxo de dados suportam apenas endpoints MQTT, Kafka e OpenTelemetry. Não há suporte para outros tipos de ponto de extremidade, como Data Lake, Microsoft Fabric OneLake, Azure Data Explorer e Armazenamento Local. Para obter mais informações, consulte Problemas conhecidos.

Importante

Atualmente, o único conector que suporta definições de grafos para processamento personalizado é o conector HTTP/REST.

Pré-requisitos

Visão geral

Os módulos WASM nos gráficos e conectores de fluxo de dados Azure IoT Operations permitem-lhe processar dados na periferia com alto desempenho e segurança. O WASM é executado em um ambiente sandbox e suporta Rust e Python.

Configurar o registro de contêiner

O Azure IoT Operations precisa de um registro de contêiner para extrair módulos WASM e definições de gráficos. Você pode usar o Azure Container Registry (ACR) ou outro registro compatível com OCI.

Para criar e configurar um Registro de Contêiner do Azure, consulte Implantar o Registro de Contêiner do Azure.

Instalar a CLI do ORAS

Use a CLI do ORAS para enviar módulos WASM e definições de gráficos para o registro do contêiner. Para obter instruções de instalação, consulte Instalar o ORAS.

Extrair módulos de exemplo do registro público

Use módulos de exemplo pré-construídos:

# 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

Enviar módulos para o seu registo

Depois de ter os módulos e gráficos de exemplo, envie-os para o registro do contêiner. Substitua <YOUR_ACR_NAME> pelo nome do seu Registro de Contêiner do Azure. Para garantir que os gráficos e módulos são visíveis na interface web da experiência de operações, adicione as flags --config e --artifact-type como mostrado no exemplo seguinte.

# 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

Sugestão

Você também pode enviar seus próprios módulos e criar gráficos personalizados, consulte Configuração de gráficos de fluxo de dados personalizados.

Atualizar um módulo num grafo em execução

Pode atualizar um módulo WASM num grafo em execução sem parar o grafo. Isto é útil quando se quer atualizar a lógica de um operador sem parar o fluxo de dados. Por exemplo, para atualizar o módulo de conversão de temperatura da versão 1.0.0 para 2.0.0, carregar a nova versão da seguinte forma:

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

O gráfico de fluxo de dados capta automaticamente a nova versão do módulo sem qualquer configuração adicional. O gráfico continua a correr sem interrupção, e a nova versão do módulo é usada para o processamento subsequente dos dados.

Desenvolver módulos WASM personalizados

Para criar uma lógica de processamento de dados personalizada para seus gráficos de fluxo de dados, desenvolva módulos WebAssembly em Rust ou Python. Os módulos personalizados permitem implementar lógica de negócios especializada, transformações de dados e análises que não estão disponíveis nos operadores internos.

Para obter orientações abrangentes sobre o desenvolvimento, incluindo:

  • Configurando seu ambiente de desenvolvimento
  • Criando operadores em Rust e Python
  • Noções básicas sobre o modelo de dados e as interfaces
  • Construindo e testando seus módulos

Consulte Desenvolver módulos WebAssembly para gráficos de fluxo de dados.

Para obter informações detalhadas sobre como criar e configurar as definições de gráfico YAML que definem seus fluxos de trabalho de processamento de dados, consulte Configurar definições de gráfico WebAssembly.