Öğretici: IoT Hub ileti yönlendirmeyi yapılandırmak için Azure Resource Manager şablonu kullanma

İleti yönlendirme , IoT cihazlarınızdaki telemetri verilerini, yerleşik Olay Hub 'ı ile uyumlu uç noktalara veya blob depolama, Service Bus kuyrukları, Service Bus konuları ve Event Hubs gibi özel uç noktalara göndermeye olanak sağlar. Özel ileti yönlendirmeyi yapılandırmak için, belirli bir koşulla eşleşen yolu özelleştirmek üzere yönlendirme sorguları oluşturursunuz. Ayarlandıktan sonra, gelen veriler IoT Hub'ı tarafından otomatik olarak uç noktalara yönlendirilir. Bir ileti tanımlanmış yönlendirme sorgularının hiçbiriyle eşleşmezse, varsayılan uç noktaya yönlendirilir.

Bu 2 parçalı öğreticide, IoT Hub ile bu özel yönlendirme sorgularını ayarlamayı ve kullanmayı öğreneceksiniz. Bir IoT cihazından gelen iletileri BLOB depolama ve Service Bus kuyruğu dahil olmak üzere birden çok uç noktasından birine yönlendirdiğinizde. Service Bus kuyruğuna iletiler bir mantıksal uygulama tarafından çekilir ve e-posta ile gönderilir. Özel ileti yönlendirmesi tanımlı olmayan iletiler varsayılan uç noktaya gönderilir, ardından Azure Stream Analytics tarafından çekilir ve bir Power BI görselleştirmesinde görüntülenir.

Bu öğreticinin 1. ve 2. kısmını tamamlamak için aşağıdaki görevleri gerçekleştirirsiniz:

Bölüm ı: kaynak oluşturma, ileti yönlendirmeyi ayarlama

  • Kaynakları oluşturma--bir IoT Hub, bir depolama hesabı, Service Bus kuyruğu ve sanal cihaz. Bu, Azure portal, bir Azure Resource Manager şablonu, Azure CLı veya Azure PowerShell kullanılarak yapılabilir.
  • Depolama hesabı ve Service Bus kuyruğu için IoT Hub uç noktaları ve ileti yollarını yapılandırın.

Bölüm II: hub 'a ileti gönderme, yönlendirilmiş sonuçları görüntüleme

  • Service Bus kuyruğuna ileti eklendiğinde tetiklenen ve e-posta gönderen bir Mantıksal Uygulama oluşturma.
  • Farklı yönlendirme seçenekleri için hub'a iletiler gönderen bir IoT Cihazının simülasyonu olan bir uygulama indirme ve çalıştırma.
  • Varsayılan uç noktaya gönderilen veriler için bir Power BI görselleştirmesi oluşturun.
  • Service Bus kuyruğunda ve e-postalarda ...
  • Depolama hesabında ...
  • PowerBI görselleştirmesinde ...
  • ...sonuçları görüntüleyin.

Önkoşullar

  • Bu öğreticinin 1. bölümü için:

    • Bir Azure aboneliğiniz olmalıdır. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Bu öğreticinin 2. bölümü için:

    • Bu öğreticinin 1. kısmını tamamlamış ve kaynakları hala kullanılabilir durumda olmalıdır.
    • Visual Studio 'yuyükler.
    • Varsayılan uç noktanın Stream Analytics 'i çözümlemek için bir Power BI hesabına erişiminiz vardır. (Power BI'ı ücretsiz deneyin.)
    • Bildirim e-postaları göndermek için bir iş veya okul hesabına sahip olmanız gerekir.
    • Güvenlik duvarınızdaki 8883 numaralı bağlantı noktasını açık olduğundan emin olun. Bu öğreticideki örnek, 8883 bağlantı noktası üzerinden iletişim kuran MQTT protokolünü kullanır. Bu bağlantı noktası, bazı kurumsal ve eğitim ağ ortamlarında engellenebilir. Bu sorunu geçici olarak çözmek için daha fazla bilgi ve IoT Hub bkz. bağlanma (MQTT).

Azure Cloud Shell kullanma

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell’i barındırır. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell’in önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell’i başlatmak için:

Seçenek Örnek/Bağlantı
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin. Deneyin seçeneği belirlendiğinde, kod otomatik olarak Cloud Shell’e kopyalanmaz. Azure Cloud Shell için Deneyin örneği
Cloud Shell’i tarayıcınızda açmak için https://shell.azure.com bölümüne gidin veya Cloud Shell’i Başlat düğmesini seçin. Cloud Shell’i yeni bir pencerede başlatma
Azure portalın sağ üst köşesindeki menü çubuğunda yer alan Cloud Shell düğmesini seçin. Azure portaldaki Cloud Shell düğmesi

Azure Cloud Shell’de bu makaledeki kodu çalıştırmak için:

  1. Cloud Shell’i başlatın.

  2. Kodu kopyalamak için kod bloğunda Kopyala düğmesini seçin.

  3. Windows ve Linux sisteminde Ctrl+Shift+V tuşlarını kullanarak veya macOS’de Cmd+Shift+V tuşlarını kullanarak kodu Cloud Shell oturumuna yapıştırın.

  4. Kodu çalıştırmak için Enter tuşuna basın.

Temel kaynaklar oluşturma

İleti yönlendirmeyi yapılandırmadan önce bir IoT Hub, bir depolama hesabı ve Service Bus kuyruğu oluşturmanız gerekir. Bu kaynaklar, Bu öğreticinin 1. bölümünde kullanılabilen dört makale kullanılarak oluşturulabilir: Azure portal, bir Azure Resource Manager şablonu, Azure CLı veya Azure PowerShell.

Tüm kaynaklar için aynı kaynak grubunu ve konumunu kullanın. Sonunda, kaynak grubunu silerek tüm kaynakları tek bir adımda kaldırabilirsiniz.

Aşağıdaki bölümlerde gerçekleştirilecek adımların özeti aşağıda verilmiştir:

  1. Bir kaynak grubuoluşturun.

  2. S1 katmanında IoT hub'ı oluşturun. IOT hub'ınızı bir tüketici grubu ekleyin. Tüketici grubu Azure Stream Analytics tarafından veriler alınırken kullanılır.

    Not

    Bu öğreticiyi tamamlayabilmeniz için ücretli bir katmanda IoT Hub 'ı kullanmanız gerekir. Ücretsiz katman yalnızca bir uç nokta ayarlamanıza izin verir ve bu öğretici birden fazla uç nokta gerektirir.

  3. Standard_LRS çoğaltmasıyla standart bir V1 depolama hesabı oluşturun.

  4. Service Bus ad alanı ve kuyruğu oluşturun.

  5. Hub'ınıza iletiler gönderen simülasyon cihazı için cihaz kimliği oluşturun. Test aşaması için anahtarı kaydedin. (Kaynak Yöneticisi şablonu oluşturuyorsanız, bu, şablonu dağıttıktan sonra yapılır.)

İleti yönlendirme

Simülasyon cihazı tarafından iletiye eklenen özellikler temelinde iletileri farklı kaynaklara yönlendireceksiniz. Özel yönlendirmesi olmayan iletiler varsayılan uç noktaya gönderilir (iletiler/olaylar). Sonraki öğreticide, IoT Hub iletileri gönderir ve bunların farklı hedeflere yönlendirildiğini görürsünüz.

Değer Sonuç
level="storage" Azure Depolama'ya yazın.
level="critical" Service Bus kuyruğuna yazın. Mantıksal Uygulama iletiyi kuyruktan alır ve Office 365 kullanarak iletiyi e-postayla gönderir.
default Power BI'ı kullanarak bu verileri görüntüleyin.

İlk adım, verilerin yönlendirileceği uç noktayı kurmak olacaktır. İkinci adım, bu uç noktayı kullanan ileti yolunu ayarlamaya yönelik olur. Yönlendirmeyi ayarladıktan sonra, portalda uç noktaları ve ileti yollarını görüntüleyebilirsiniz.

Şablon ve parametre dosyasını indirin

bu öğreticinin ikinci bölümünde, IoT Hub iletileri göndermek için bir Visual Studio uygulaması indirip çalıştırırsınız. Bu indirmenin, Azure CLı ve PowerShell betikleri ile birlikte Azure Resource Manager şablonu ve parametreleri dosyasını içeren bir klasör vardır.

Devam edin ve Azure IoT C# örneklerini şimdi indirin. main.zip dosyasını sıkıştırmayı açın. Kaynak Yöneticisi şablonu ve parametreler dosyası, template_iothub. JSON ve template_iothub_parameters. JSON olarak/iot-hub/Tutorials/Routing/SimulatedDevice/resources/.

Kaynaklarınızı oluşturun

Tüm kaynaklarınızı oluşturmak için bir Azure Resource Manager (RM) şablonu kullanacaksınız. Azure CLı ve PowerShell betikleri, tek seferde birkaç satır çalıştırabilir. Bir RM şablonu tek bir adımda dağıtılır. Bu makalede, her birini anlamanıza yardımcı olmak için bölümler ayrı olarak gösterilir. Daha sonra, şablonu nasıl dağıtacağınızı ve test için sanal cihaz oluşturmayı gösterir. Şablon dağıtıldıktan sonra, portalda ileti yönlendirme yapılandırması ' nı görüntüleyebilirsiniz.

IoT Hub adı ve depolama hesabı adı gibi genel olarak benzersiz olması gereken birkaç kaynak adı vardır. Kaynakların adlandırılmasını kolaylaştırmak için bu kaynak adları, geçerli tarih/saatten oluşturulan rastgele alfasayısal bir değer eklemek üzere ayarlanır.

Şablona bakarsanız, geçirilen parametreyi alan ve Rasgelevalue değerini parametresine bağlayan bu kaynaklar için değişkenlerin ayarlandığını görürsünüz.

Aşağıdaki bölümde kullanılan parametreler açıklanmaktadır.

Parametreler

Bu parametrelerin çoğu varsayılan değerlere sahiptir. _İn ile biten olanlar, genel olarak benzersiz hale getirilmesi Için rasgeledeğer ile birleştirilir.

rasgelevalue: Bu değer, şablonu dağıtırken geçerli tarih/saat içinden oluşturulur. Bu alan, şablonda oluşturulduğu gibi parametreler dosyasında değildir.

SubscriptionID: Bu alan, şablonu dağıttığınız abonelik için ayarlanır. Bu alan, sizin için ayarlandığından Parametreler dosyasında değildir.

IoTHubName_in: Bu alan, genel olarak benzersiz olması Için, rasgeledeğeriyle birleştirilmiş temel IoT Hub adıdır.

konum: Bu alan, "westus" gibi dağıttığınız Azure bölgesidir.

consumer_group: Bu alan, yönlendirme uç noktasından gelen iletiler için bir tüketici grubu kümesidir. Azure Stream Analytics sonuçları filtrelemek için kullanılır. örneğin, her şeyi alacağınız tüm akış, veya consumer_group Contoso olarak ayarlanan verilerle birlikte geliyorsa, yalnızca bu girişleri göstermek için bir Azure Stream Analytics akışı (ve Power BI raporu) ayarlayabilirsiniz. Bu alan, Bu öğreticinin 2. bölümünde kullanılır.

sku_name: Bu alan, IoT Hub için ölçeklendiriliyor. Bu değer S1 veya üzeri olmalıdır; Bu öğreticide, birden çok uç noktaya izin verilmediğinden ücretsiz bir katman çalışmıyor.

sku_units: bu alan sku_name ve kullanılabilecek IoT Hub birimi sayısıdır.

d2c_partitions: Bu alan, olay akışı için kullanılan bölüm sayısıdır.

storageAccountName_in: Bu alan, oluşturulacak depolama hesabının adıdır. İletiler, depolama hesabındaki bir kapsayıcıya yönlendirilir. Bu alan, genel olarak benzersiz hale getirilmesi için Rasgeledeğeri ile birleştirilir.

Storagecontainername: Bu alan, depolama hesabına yönlendirilen iletilerin depolandığı kapsayıcının adıdır.

storage_endpoint: Bu alan, ileti yönlendirme tarafından kullanılan depolama hesabı uç noktasının adıdır.

service_bus_namespace_in: bu alan, oluşturulacak Service Bus ad alanının adıdır. Bu değer, genel olarak benzersiz hale getirmek için Rasgeledeğeri ile birleştirilir.

service_bus_queue_in: bu alan, iletileri yönlendirme için kullanılan Service Bus sırasının adıdır. Bu değer, genel olarak benzersiz hale getirmek için Rasgeledeğeri ile birleştirilir.

AuthRules_sb_queue: Bu alan, kuyruğa yönelik bağlantı dizesini almak için kullanılan Service Bus kuyruğu için yetkilendirme kurallarıdır.

Değişkenler

Bu değerler şablonda kullanılır ve genellikle parametrelerden türetilir.

queueAuthorizationRuleResourceId: bu alan, Service Bus kuyruğu yetkilendirme kuralının resourceıd alanıdır. RESOURCEID, sıranın bağlantı dizesini almak için kullanılır.

Iothubname: Bu alan, rasgeledeğeri bitiştirilmiş olduktan sonra IoT Hub adıdır.

storageAccountName: Bu alan, rastgele değer eklendikten sonra depolama hesabının adıdır.

service_bus_namespace: Bu alan, rasgelevalue eklenmiş olduktan sonra ad alanıdır.

service_bus_queue: bu alan, rasgelevalue eklenmiş olduktan sonra Service Bus kuyruk adıdır.

sbversion: kullanılacak Service Bus apı sürümü. Bu durumda, "2017-04-01" olur.

kaynaklar: Depolama hesabı ve kapsayıcı

Oluşturulan ilk kaynak depolama hesabıdır ve iletilerin yönlendirildiği kapsayıcı ile birlikte. Kapsayıcı, depolama hesabı altındaki bir kaynaktır. dependsOnDepolama hesabı için bir yan tümcesine sahiptir ve depolama hesabının kapsayıcının öncesinde oluşturulmasını gerektirir.

Bu bölümün şöyle görünmesi aşağıda verilmiştir:

{
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2018-07-01",
    "location": "[parameters('location')]",
    "sku": {
        "name": "Standard_LRS",
        "tier": "Standard"
    },
    "kind": "Storage",
    "properties": {},
    "resources": [
        {
        "type": "blobServices/containers",
        "apiVersion": "2018-07-01",
        "name": "[concat('default/', parameters('storageContainerName'))]",
        "properties": {
            "publicAccess": "None"
            } ,
        "dependsOn": [
            "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
            ]
        }
    ]
}

kaynaklar: Service Bus ad alanı ve kuyruk

oluşturulan ikinci kaynak, iletilerin yönlendirildiği Service Bus kuyruğu ile birlikte Service Bus ad alanıdır. SKU standart olarak ayarlanır. API sürümü değişkenlerden alınır. ayrıca, bu bölümü dağıtırken Service Bus ad alanını etkinleştirmek üzere ayarlanır (durum: etkin).

{
    "type": "Microsoft.ServiceBus/namespaces",
    "comments": "The Sku should be 'Standard' for this tutorial.",
    "sku": {
        "name": "Standard",
        "tier": "Standard"
    },
    "name": "[variables('service_bus_namespace')]",
    "apiVersion": "[variables('sbVersion')]",
    "location": "[parameters('location')]",
    "properties": {
        "provisioningState": "Succeeded",
        "metricId": "[concat('a4295411-5eff-4f81-b77e-276ab1ccda12:', variables('service_bus_namespace'))]",
        "serviceBusEndpoint": "[concat('https://', variables('service_bus_namespace'),'.servicebus.windows.net:443/')]",
        "status": "Active"
    },
    "dependsOn": []
}

bu bölüm Service Bus kuyruğu oluşturur. Betiğin bu bölümünde, dependsOn ad alanının kuyruktan önce oluşturulmasını sağlayan bir yan tümce vardır.

{
    "type": "Microsoft.ServiceBus/namespaces/queues",
    "name": "[concat(variables('service_bus_namespace'), '/', variables('service_bus_queue'))]",
    "apiVersion": "[variables('sbVersion')]",
    "location": "[parameters('location')]",
    "scale": null,
    "properties": {},
    "dependsOn": [
        "[resourceId('Microsoft.ServiceBus/namespaces', variables('service_bus_namespace'))]"
    ]
}

Kaynaklar: IoT Hub ve ileti yönlendirme

depolama hesabı ve Service Bus kuyruğu oluşturuldığına göre, iletileri bunlara yönlendiren IoT Hub oluşturursunuz. RM şablonu, dependsOn Service Bus kaynakları ve depolama hesabı oluşturulmadan önce hub 'ı oluşturmayı denememesi için yan tümceleri kullanır.

IoT Hub bölümünün ilk bölümü aşağıda verilmiştir. Şablonun bu bölümü bağımlılıkları ayarlar ve özelliklerle başlar.

{
    "apiVersion": "2018-04-01",
    "type": "Microsoft.Devices/IotHubs",
    "name": "[variables('IoTHubName')]",
    "location": "[parameters('location')]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
        "[resourceId('Microsoft.ServiceBus/namespaces', variables('service_bus_namespace'))]",
        "[resourceId('Microsoft.ServiceBus/namespaces/queues', variables('service_bus_namespace'), variables('service_bus_queue'))]"
    ],
    "properties": {
        "eventHubEndpoints": {}
            "events": {
                "retentionTimeInDays": 1,
                "partitionCount": "[parameters('d2c_partitions')]"
                }
            },

Sonraki bölüm, IoT Hub için ileti yönlendirme yapılandırması bölümüdür. Öncelikle bitiş noktaları için bölümdür. şablonun bu bölümü, bağlantı dizeleri de dahil olmak üzere Service Bus kuyruğu ve depolama hesabı için yönlendirme uç noktalarını ayarlar.

Kuyruğun bağlantı dizesini oluşturmak için, satır içi alınan Queueauthorizationkurallarını Resourcedıd öğesine ihtiyacınız vardır. Depolama hesabı için bağlantı dizesi oluşturmak üzere birincil depolama anahtarını alır ve bağlantı dizesinin biçiminde kullanırsınız.

Uç nokta yapılandırması Ayrıca BLOB biçimini veya olarak ayarladığınız yerdir AVRO JSON .

Not

Veriler, varsayılan ya da JSON olan Apache avro biçiminde blob depolamaya yazılabilir.

Kodlama biçimi yalnızca BLOB depolama uç noktasının yapılandırıldığı zamanda ayarlanabilir. Zaten ayarlanmış olan bir uç nokta için biçim değiştirilemez. JSON kodlaması kullanılırken, ' yi JSON olarak ve Contentenencoding ' i ileti sistemi özelliklerinde UTF-8 olarak ayarlamanız gerekir.

BLOB depolama uç noktası kullanma hakkında daha ayrıntılı bilgi için lütfen depolama alanına yönlendirmeye yönelik kılavuzabakın.

"routing": {
   "endpoints": {
       "serviceBusQueues": [
       {
           "connectionString": "[Concat('Endpoint=sb://',variables('service_bus_namespace'),'.servicebus.windows.net/;SharedAccessKeyName=',parameters('AuthRules_sb_queue'),';SharedAccessKey=',listkeys(variables('queueAuthorizationRuleResourceId'),variables('sbVersion')).primaryKey,';EntityPath=',variables('service_bus_queue'))]",
           "name": "[parameters('service_bus_queue_endpoint')]",
           "subscriptionId": "[parameters('subscriptionId')]", 
           "resourceGroup": "[resourceGroup().Name]"
       }
       ],
       "serviceBusTopics": [],
       "eventHubs": [],
       "storageContainers": [
           {
               "connectionString": 
               "[Concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value)]",
               "containerName": "[parameters('storageContainerName')]",
               "fileNameFormat": "{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}",
               "batchFrequencyInSeconds": 100,
               "maxChunkSizeInBytes": 104857600,
               "encoding": "avro",
               "name": "[parameters('storage_endpoint')]",
               "subscriptionId": "[parameters('subscriptionId')]",
               "resourceGroup": "[resourceGroup().Name]"
           }
       ]
   },

Bu sonraki bölüm, uç noktalara ileti yolları içindir. her uç nokta için bir küme bulunur, bu nedenle Service Bus kuyruğu ve diğeri depolama hesabı kapsayıcısı için bir tane vardır.

depolamaya yönlendirilmekte olan iletilerin sorgu koşulunun level="storage" ve Service Bus kuyruğuna yönlendirilmekte olan iletilerin sorgu koşulunun olduğunu unutmayın level="critical" .

"routes": [
    {
        "name": "contosoStorageRoute",
        "source": "DeviceMessages",
        "condition": "level=\"storage\"",
        "endpointNames": [
            "[parameters('storage_endpoint')]"
            ],
        "isEnabled": true
    },
    {
        "name": "contosoSBQueueRoute",
        "source": "DeviceMessages",
        "condition": "level=\"critical\"",
        "endpointNames": [
            "[parameters('service_bus_queue_endpoint')]"
            ],
        "isEnabled": true
    }
],

Bu JSON, Hub için varsayılan bilgileri ve SKU 'YU içeren IoT Hub bölümünün geri kalanını gösterir.

            "fallbackRoute": {
                "name": "$fallback",
                "source": "DeviceMessages",
                "condition": "true",
                "endpointNames": [
                    "events"
                ],
                "isEnabled": true
            }
        },
        "storageEndpoints": {
            "$default": {
                "sasTtlAsIso8601": "PT1H",
                "connectionString": "",
                "containerName": ""
            }
        },
        "messagingEndpoints": {
            "fileNotifications": {
                "lockDurationAsIso8601": "PT1M",
                "ttlAsIso8601": "PT1H",
                "maxDeliveryCount": 10
            }
        },
        "enableFileUploadNotifications": false,
        "cloudToDevice": {
            "maxDeliveryCount": 10,
            "defaultTtlAsIso8601": "PT1H",
            "feedback": {
                "lockDurationAsIso8601": "PT1M",
                "ttlAsIso8601": "PT1H",
                "maxDeliveryCount": 10
            }
        }
    },
    "sku": {
        "name": "[parameters('sku_name')]",
        "capacity": "[parameters('sku_units')]"
    }
}

kaynaklar: Service Bus kuyruğu yetkilendirme kuralları

Service Bus kuyruğu yetkilendirme kuralı, Service Bus sırasının bağlantı dizesini almak için kullanılır. dependsOnService Bus ad alanı ve Service Bus sırasından önce oluşturulmadığından emin olmak için bir yan tümce kullanır.

{
    "type": "Microsoft.ServiceBus/namespaces/queues/authorizationRules",
    "name": "[concat(variables('service_bus_namespace'), '/', variables('service_bus_queue'), '/', parameters('AuthRules_sb_queue'))]",
    "apiVersion": "[variables('sbVersion')]",
    "location": "[parameters('location')]",
    "scale": null,
    "properties": {
        "rights": [
            "Send"
        ]
    },
    "dependsOn": [
        "[resourceId('Microsoft.ServiceBus/namespaces', variables('service_bus_namespace'))]",
        "[resourceId('Microsoft.ServiceBus/namespaces/queues', variables('service_bus_namespace'), variables('service_bus_queue'))]"
    ]
},

Kaynaklar: Tüketici grubu

Bu bölümde, Bu öğreticinin ikinci bölümünde Azure Stream Analytics tarafından kullanılacak IoT Hub verileri için bir tüketici grubu oluşturacaksınız.

{
    "type": "Microsoft.Devices/IotHubs/eventHubEndpoints/ConsumerGroups",
    "name": "[concat(variables('iotHubName'), '/events/',parameters('consumer_group'))]",
    "apiVersion": "2018-04-01",
    "dependsOn": [
        "[concat('Microsoft.Devices/IotHubs/', variables('iotHubName'))]"
    ]
}

Kaynaklar: çıktılar

Görüntülenecek dağıtım betiğine bir değer göndermek istiyorsanız bir çıkış bölümü kullanırsınız. şablonun bu bölümü Service Bus kuyruğu için bağlantı dizesini döndürür. Bir değer döndürülmesi gerekli değildir, bu, sonuçların çağırma betiğine nasıl döndürüldüğünü gösteren bir örnek olarak eklenmiştir.

"outputs": {
    "sbq_connectionString": {
      "type": "string",
      "value": "[Concat('Endpoint=sb://',variables('service_bus_namespace'),'.servicebus.windows.net/;SharedAccessKeyName=',parameters('AuthRules_sb_queue'),';SharedAccessKey=',listkeys(variables('queueAuthorizationRuleResourceId'),variables('sbVersion')).primaryKey,';EntityPath=',variables('service_bus_queue'))]"
    }
  }

RM şablonunu dağıtma

Şablonu Azure 'a dağıtmak için şablonu ve parametreler dosyasını Azure Cloud Shell yükleyin ve ardından şablonu dağıtmak için bir komut dosyası yürütün. Azure Cloud Shell açın ve oturum açın. Bu örnek PowerShell kullanır.

dosyaları karşıya yüklemek için menü çubuğunda Upload/download files simgesini seçin, sonra Upload ' yi seçin.

Upload/download files simgesini vurgulayan ekran görüntüsü.

Yerel Dosya Gezgini dosyaları bulmak için açılan dosya alanını kullanın ve bunları seçin ve ardından Aç'ı seçin.

Dosyalar karşıya yüklendikten sonra sonuçlar iletişim kutusunda aşağıdaki görüntüye benzer bir şey görüntülenir.

Cloud Shell/İndirme sonuçları Upload menü çubuğu vurgulanmış

Dosyalar, dosya örneğiniz tarafından kullanılan paylaşıma Cloud Shell.

Dağıtımı gerçekleştirmek için betiği çalıştırın. Bu betiğin son satırı döndürülacak şekilde ayarlanmış değişkeni alır ; kuyruk Service Bus dizesini alır.

Betik şu değişkenleri ayarlar ve kullanır:

$RGName, şablonun dağıtıla kaynak grubu adıdır. Bu alan şablonu dağıtmadan önce oluşturulur.

$location, "westus" gibi şablon için kullanılacak Azure konumudur.

deploymentname, dönüş değişkeni değerini almak için dağıtıma atadığınız bir addır.

PowerShell betiği şu şekildedir. Bu PowerShell betiği kopyalayıp Cloud Shell penceresine yapıştırın ve enter tarak çalıştırın.

$RGName="ContosoResources"
$location = "westus"
$deploymentname="contoso-routing"

# Remove the resource group if it already exists. 
#Remove-AzResourceGroup -name $RGName 
# Create the resource group.
New-AzResourceGroup -name $RGName -Location $location 

# Set a path to the parameter file. 
$parameterFile = "$HOME/template_iothub_parameters.json"
$templateFile = "$HOME/template_iothub.json"

# Deploy the template.
New-AzResourceGroupDeployment `
    -Name $deploymentname `
    -ResourceGroupName $RGName `
    -TemplateParameterFile $parameterFile `
    -TemplateFile $templateFile `
    -verbose

# Get the returning value of the connection string.
(Get-AzResourceGroupDeployment -ResourceGroupName $RGName -Name $deploymentname).Outputs.sbq_connectionString.value

Betik hatalarınız varsa, betiği yerel olarak düzenleyebilir, yeniden Cloud Shell ve betiği yeniden çalıştırabilirsiniz. Betik başarıyla çalışmaya başladıktan sonra sonraki adıma geçin.

Sanal cihaz oluşturma

Sonra bir cihaz kimliği oluşturun ve anahtarını daha sonra kullanmak üzere kaydedin. Bu cihaz kimliği simülasyon uygulaması tarafından IoT hub'ına iletileri göndermek için kullanılır. Bu özellik PowerShell'de veya bir şablon Azure Resource Manager kullanılamaz. Aşağıdaki adımlar, sanal cihazı Azure portal kullanarak oluşturma hakkında bilgi Azure portal.

  1. Azure portalını açın ve Azure hesabınızla oturum açın.

  2. Kaynak grupları'ı ve ardından kaynak grubu'larınızı seçin. Bu öğreticide ContosoResources kullanılır.

  3. Kaynak listesinde IoT hub'ını seçin. Bu öğreticide ContosoTestHub kullanılır. Hub bölmesinden IoT Cihazları'nı seçin.

  4. IoT Cihazları bölmesinde +Cihaz Ekle'yi seçin. Cihaz Ekle bölmesinde cihaz kimliğini girin. Bu öğreticide Contoso-Test-Device kullanılır. Anahtarları boş bırakın ve Anahtarları Otomatik Olarak Oluştur'a tıklayın. Cihazı IoT Hub'ına bağla seçeneğinin etkinleştirildiğinden emin olun. Kaydet’i seçin.

    Cihaz ekleme ekranı

  5. Artık oluşturulduktan sonra, oluşturulan anahtarları görmek için cihazı seçin. Birincil anahtarda Kopyala simgesini seçin ve bu öğreticinin test aşaması Not Defteri gibi bir yere kaydedin.

    Anahtarlar da dahil olmak üzere cihaz ayrıntıları

Portalda ileti yönlendirmeyi görüntüleme

Artık uç noktalarınız ve ileti yollarınız ayarna göre, bunların yapılandırmasını portalda görüntüebilirsiniz. Azure portal'da oturum açma ve Kaynak Grupları'ne gidin. Ardından kaynak grubu seçin ve ardından hub'ını seçin (hub adı bu ContosoTestHub öğreticide ile başlar). Bölmeyi IoT Hub.

IoT Hub özellikleri ekranı

İleti Yönlendirme seçeneklerinde IoT Hub'yi seçin. Başarıyla ayarlayan yollar görüntülenir.

Ayar aşağıdaki rotalar

İleti yönlendirme ekranında Özel Uç Noktalar'ı seçerek yollar için tanımlandığı uç noktaları görebilirsiniz.

Yollar için ayarlanmış uç noktalar

Sonraki adımlar

Tüm kaynakları ayarlamış ve ileti yollarını yapılandırmış olduğunuza göre, yönlendirilen iletileri işlemeyi ve görüntülemeyi öğrenmek için sonraki öğreticiye ilerleyin.