WebAssembly (WASM) modüllerini ve graf tanımlarını dağıtma

Azure IoT Operations veri akışı grafikleri, uçta özel veri işleme için WebAssembly (WASM) modüllerini destekler. Veri akışı işlem hatlarınızın bir parçası olarak özel iş mantığı ve veri dönüştürmeleri dağıtabilirsiniz.

Önemli

Veri akışı grafikleri şu anda yalnızca MQTT, Kafka ve OpenTelemetry uç noktalarını desteklemektedir. Data Lake, Microsoft Fabric OneLake, Azure Data Explorer ve Yerel Depolama gibi diğer uç nokta türleri desteklenmez. Daha fazla bilgi için bkz. Bilinen sorunlar.

Önemli

Şu anda özel işleme için grafik tanımlarını destekleyen tek bağlayıcı HTTP/REST bağlayıcıdır.

Önkoşullar

Azure Container Registry (ACR) gibi özel bir kayıt defteri kullanmak istiyorsanız, şunları da yapmanız gerekir:

  • WASM modüllerini ve grafiklerini depolamak için ACR gibi bir kapsayıcı kayıt defterine erişim.
  • WASM modüllerini kayıt defterine göndermek için OCI Kayıt Defteri Depolama (ORAS) CLI'sini yükleyin.

Tavsiye

Özel kayıt defteri ayarlamadan hızlı bir başlangıç için, önceden oluşturulmuş örnek modülleri doğrudan genel GitHub Container Registry'den (ghcr.io) kullanabilirsiniz. Yönergeler için bkz. Genel kayıt defterinden önceden oluşturulmuş modülleri kullanma .

Genel Bakış

veri akışı grafları ve bağlayıcıları Azure IoT Operations WASM modülleri, verileri uçta yüksek performans ve güvenlikle işlemenizi sağlar. WASM korumalı bir ortamda çalışır ve Rust ile Python destekler.

Genel kayıt defterinden önceden oluşturulmuş modülleri kullanma

Kullanmaya başlamanın en hızlı yolu, önceden oluşturulmuş örnek WASM modüllerini ve graf tanımlarını doğrudan genel GitHub Container Registry'den kullanmaktır. Bu yaklaşım için özel bir kayıt defteri, ORAS CLI veya herhangi bir çekme/gönderme adımı ayarlanması gerekmez.

Açık kayıt defteri için bir uç nokta oluşturma

Örnek modüllerin barındırıldığı genel kayıt defterine işaret eden bir kayıt defteri uç noktası oluşturun:

resource publicRegistryEndpoint 'Microsoft.IoTOperations/instances/registryEndpoints@2025-10-01-preview' = {
  parent: aioInstance
  name: 'public-ghcr'
  extendedLocation: {
    name: customLocation.id
    type: 'CustomLocation'
  }
  properties: {
    host: 'ghcr.io/azure-samples/explore-iot-operations'
    authentication: {
      method: 'Anonymous'
      anonymousSettings: {}
    }
  }
}

Bu kayıt defteri uç noktasını oluşturduktan sonra, veri akışı graflarınızda registryEndpointRef: public-ghcr kullanarak buna başvurabilirsiniz. Aşağıdaki örnek modüller ve grafik tanımları kullanılabilir:

Yapıt Description
graph-simple:1.0.0 Basit sıcaklık dönüştürme grafı tanımı
graph-complex:1.0.0 Çok sensörlü işleme grafı tanımı
temperature:1.0.0 Sıcaklık dönüştürme modülü (Fahrenheit to Celsius)
window:1.0.0 Zamana dayalı pencereleme modülü
snapshot:1.0.0 Görüntü işleme ve nesne algılama modülü
format:1.0.0 Görüntü biçimi dönüştürme modülü
humidity:1.0.0 Nem veri işleme modülü
collection:1.0.0 Çok sensörlü veri toplama modülü
enrichment:1.0.0 Meta veri zenginleştirme modülü
filter:1.0.0 Veri filtreleme modülü

Basit grafiği açık kayıt defteriyle kullanmak için bkz.: Örnek 1: Bir WASM modülüyle temel dağıtım ve public-ghcr kaydı defteri uç noktası adı olarak kullanın.

Özel kayıt defteri kullanma

Özel modüller kullanmanız gerekiyorsa veya örnek modüllerin kendi kopyalarını barındırmak istiyorsanız, Azure Container Registry (ACR) gibi özel bir kapsayıcı kayıt defteri ayarlayın.

Kapsayıcı kayıt defterini ayarlama

Azure IoT Operations, WASM modüllerini ve grafik tanımlarını çekmek için bir kapsayıcı kayıt defteri gerektirir. Azure Container Registry (ACR) veya başka bir OCI uyumlu kayıt defteri kullanabilirsiniz.

Azure Container Registry oluşturmak ve yapılandırmak için bkz. Deploy Azure Container Registry.

ORAS CLI'yi yükleme

WASM modüllerini ve graf tanımlarını kapsayıcı kayıt defterinize göndermek için ORAS CLI'yi kullanın. Yükleme yönergeleri için bkz. ORAS'ı yükleme.

Genel kayıt defterinden örnek modülleri çekme

Önceden oluşturulmuş örnek modülleri kullanın:

# 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

Modülleri kayıt defterinize gönderme

** Örnek modülleri ve grafikleri aldıktan sonra bunları konteyner kayıt defterinize yükleyin. <YOUR_ACR_NAME> değerini Azure Container Registry adıyla değiştirin.

Önemli

Operasyonlar deneyimi sayesinde yapıtlar, katman medya türüne göre değil, OCI yapılandırma medya türüne göre keşfedilir. Yapıtları bir kayıt defterine gönderdiğinizde, doğru medya türlerini ayarlamanız gerekir, aksi durumda yapıtlar işlem deneyimi kullanıcı arabiriminde görünmez:

Yapıt türü Gerekli OCI yapılandırma medya türü Gerekli katman medya türü
Graf tanımı application/vnd.microsoft.aio.graph.v1+yaml application/yaml
WASM modülü application/vnd.module.wasm.content.layer.v1+wasm application/wasm

Kayıt defterleri arasında yapıtları kopyalamak için CI/CD işlem hattı veya başka bir araç kullanıyorsanız, bu medya türlerini koruduğunu doğrulayın. Bazı araçlar aktarım sırasında yapıt meta verilerini kaldırır veya değiştirir ve bu da yapıtların işlem deneyiminden sessizce kaybolmasına neden olur. Daha fazla bilgi için Kayıt defteri artifakt gereksinimleri kısmına bakın.

İşlemler deneyimi web kullanıcı arabiriminde grafiklerin ve modüllerin görünür olmasını sağlamak için, aşağıdaki örnekte gösterildiği gibi --config ve --artifact-type bayraklarını ekleyin.

# 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.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.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.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.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.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.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.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.wasm:application/wasm

Tavsiye

Ayrıca kendi modüllerinizi göndererek özel grafikler oluşturabilirsiniz. Bkz . Özel veri akışı grafiklerini yapılandırma.

Çalışan bir grafikte modülü güncelleştirme

Çalışan bir grafikteki WASM modülünü, grafiği durdurmadan güncelleştirebilirsiniz. Bu, veri akışını durdurmadan bir işlecin mantığını güncelleştirmek istediğinizde kullanışlıdır. Örneğin, sıcaklık dönüştürme modülünü 1.0.0 sürümünden 2.0.0 sürümüne güncellemek için yeni sürümü aşağıdaki gibi yükleyin:

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

Uyarı

Aynı etikete yeni içerik gönderirseniz (örneğin, üzerine yazarsanıztemperature:1.0.0), veri akışı grafiği ek yapılandırma olmadan güncelleştirilmiş modülü otomatik olarak alır. Ancak, yeni bir etikete (örneğin, temperature:2.0.0) iterseniz, grafik tanımı YAML'yi yeni sürüme başvuracak şekilde güncelleştirmeniz ve grafik nesnesini yeniden göndermeniz gerekir.

Özel WASM modülleri geliştirme

Veri akışı grafikleriniz için özel veri işleme mantığı oluşturmak için Rust veya Python'da WebAssembly modülleri geliştirin. Özel modüller yerleşik işleçlerde bulunmayan özelleştirilmiş iş mantığı, veri dönüştürmeleri ve analizler uygulamanızı sağlar.

Şunları içeren kapsamlı geliştirme yönergeleri için:

  • Geliştirme ortamınızı ayarlama
  • Rust ve Python'da işleçler oluşturma
  • Veri modelini ve arabirimleri anlama
  • Modüllerinizi oluşturma ve test etme

Bkz . Veri akışı grafikleri için WebAssembly modülleri geliştirme.

Veri işleme iş akışlarınızı tanımlayan YAML graf tanımlarını oluşturma ve yapılandırma hakkında ayrıntılı bilgi için bkz. WebAssembly graf tanımlarını yapılandırma.

Kayıt defteri artefakt gereklilikleri

İşlem deneyimi, grafları ve modülleri bulmak ve görüntülemek için OCI yapı meta verilerini kullanır. Özel CI/CD işlem hatları oluştururken, kayıt defterleri arasında yapıtları kopyalarken veya kullanıcı arabirimindeki eksik yapıtlarla ilgili sorunları giderirken bu gereksinimleri anlamak önemlidir.

Artefakt keşfi nasıl gerçekleştirilir?

ORAS ile bir yapıtı kayıt defterine gönderdiğinizde, OCI bildirimi iki ilgili alan içerir:

  • Yapılandırma medya türü: Bunun ne tür bir yapıt olduğunu tanımlar. İşlem deneyimi, grafikleri ve modülleri bulmak için bu alanda filtre uygular.
  • Katman medya türü: Gerçek dosyanın (YAML veya WASM) içerik biçimini açıklar.

İşlem deneyimi, keşif için katman medya türü yerine yapılandırma medya türünü kullanır. Yapılandırma medya türü eksik veya yanlışsa, yapıt kayıt defterinde bulunur ancak kullanıcı arabiriminde görünmez.

Gerekli medya türleri

Yapıt türü Yapılandırma medya türü (--config veya --artifact-type) Katman medya türü
Graf tanımı application/vnd.microsoft.aio.graph.v1+yaml application/yaml
WASM modülü application/vnd.module.wasm.content.layer.v1+wasm application/wasm

Grafik tanımları için yapılandırma medya türünü şu bayrakla --config geçirin:

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

WASM modülleri için --artifact-type bayrağını kullanarak geçirin.

oras push <REGISTRY>/my-module:1.0.0 \
  --artifact-type application/vnd.module.wasm.content.layer.v1+wasm \
  module.wasm:application/wasm

CI/CD işlem hattında dikkat edilmesi gerekenler

Kayıt defterleri arasında yapıtları kopyalamak veya yükseltmek için otomatik işlem hatları kullanıyorsanız (örneğin, hazırlama kayıt defterinden üretim kayıt defterine), işlem hattının OCI yapıt meta verilerini koruduğunu doğrulayın. Bazı araçlar aktarım sırasında yapılandırma medya türünü kaldırır veya değiştirir ve bu da yapıtların işlem deneyiminden sessizce kaybolmasına neden olur.

Bir yapıtın aktarımdan sonra doğru meta veriye sahip olduğunu doğrulamak için bildirimini inceleyin:

oras manifest fetch <REGISTRY>/my-graph:1.0.0 | jq '{mediaType, configMediaType: .config.mediaType}'

Çıktı şunları göstermelidir:

{
  "mediaType": "application/vnd.oci.image.manifest.v1+json",
  "configMediaType": "application/vnd.microsoft.aio.graph.v1+yaml"
}

Eğer configMediaType genel bir değer application/vnd.oci.empty.v1+json gibi gösteriyorsa, meta veri çıkarılır ve yapıtın doğru bayraklarla yeniden gönderilmesi gerekir.