Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
- Implante uma instância de Operações IoT do Azure em um cluster Kubernetes habilitado para Arc. Para obter mais informações, consulte Implantar operações do Azure IoT.
- Use um registo de contentores como o Azure Container Registry (ACR) para armazenar módulos e gráficos WASM.
- Configure um endpoint de registo para permitir que a sua instância Azure IoT Operations aceda ao seu registo de contentores. Para mais informações, consulte Configurar endpoints do registo.
- Instale a CLI OCI Registry As Storage (ORAS) para enviar módulos WASM para o registro.
- Desenvolva módulos WASM personalizados seguindo as orientações em Construir Módulos WASM para fluxos de dados no VS Code ou Desenvolver Módulos WebAssembly (WASM) e definições de grafos de fluxo de dados.
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.