Öğretici: İleti yönlendirmeyi Azure Resource Manager için bir IoT Hub ş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ı indirme

Bu öğreticinin ikinci bölümünde, Visual Studio uygulamasına ileti göndermek için bir IoT Hub. İndirme dosyasında, Azure CLI ve PowerShell betikleri Azure Resource Manager şablon ve parametre dosyasını içeren bir klasör bulunur.

Şimdi Azure IoT C# Örneklerini indirin. Dosyanın sıkıştırma master.zip açın. Resource Manager şablonu ve parametreler dosyası /iot-hub/Tutorials/Routing/SimulatedDevice/resources/ içinde ve üzerindetemplate_iothub.js olarak template_iothub_parameters.js.

Kaynaklarınızı oluşturma

Tüm kaynaklarınızı oluşturmak için Azure Resource Manager (RM) şablonu kullanacağız. Azure CLI ve PowerShell betikleri aynı anda birkaç satır çalıştırabilirsiniz. RM şablonu tek adımda dağıtılır. Bu makalede, her birini anlamanıza yardımcı olacak bölümler ayrı olarak gösterir. Ardından şablonu dağıtma ve test için sanal cihazı oluşturma hakkında bilgi edinebilirsiniz. Şablon dağıtıldıktan sonra, ileti yönlendirme yapılandırmasını portalda görüntüebilirsiniz.

Genel olarak benzersiz olması gereken birkaç kaynak adı vardır; örneğin, IoT Hub adı ve depolama hesabı adı. Kaynakları adlandırmayı kolaylaştırmak için, bu kaynak adları geçerli tarih/saatten oluşturulan rastgele bir alfasayısal değeri eklemek için ayarlanır.

Şablona bakarsanız, geçirilen parametreyi alan bu kaynaklar için değişkenlerin nerede ayar olduğunu ve randomValue değerini parametresiyle birletirin.

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

Parametreler

Bu parametrelerin çoğu varsayılan değerlere sahiptir. Bu değerle biten _in randomValue ile birlenir ve bu da onları genel olarak benzersiz hale çıkarır.

randomValue: Bu değer, şablonu dağıtarak geçerli tarih/saat ile oluşturulur. Bu alan parametre dosyasında değildir çünkü şablonda oluşturulur.

subscriptionId: Bu alan, şablonu dağıtmakta olduğunuz aboneliğe göre ayarlanır. Bu alan sizin için ayarlanmış olduğu için parametre dosyasında değildir.

IoTHubName_in: Bu alan, IoT Hub olarak benzersiz olması için randomValue ile birlenmiş temel addır.

konum: Bu alan, "westus" gibi dağıtımda bulunduğu Azure bölgesidir.

consumer_group: Bu alan, yönlendirme uç noktası üzerinden gelen iletiler için ayarlanmış tüketici grubu. Sonuçları belirli bir şekilde filtrelemek için Azure Stream Analytics. Örneğin, her şeyi elde etmek için tüm akış vardır veya consumer_group contoso olarak ayarlanmış verilerle geliyorsa, yalnızca bu girişleri göstermek için bir Azure Stream Analytics akışı (ve Power BI raporu) kurabilirsiniz. Bu alan, bu öğreticinin 2. bölümünde kullanılır.

sku_name: Bu alan, uygulamanın ölçeklendirme IoT Hub. Bu değer S1 veya üzeri olmalı; Birden çok uç noktasına izin vermey olduğundan, ücretsiz bir katman bu öğretici için çalışmaz.

sku_units: Bu alan sku_name ile birlikte gider ve kullanılmaktadır IoT Hub birim 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ı içinde bir kapsayıcıya yönlendirildi. Bu alan, genel olarak benzersiz olması için randomValue ile birlenir.

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 olması için randomValue ile birlenir.

service_bus_queue_in: Bu alan, iletilerin yönlendir Service Bus kuyruğun adıdır. Bu değer, genel olarak benzersiz olması için randomValue ile birlenir.

AuthRules_sb_queue: Bu alan, service bus kuyruğu için yetkilendirme kurallarıdır ve kuyruğun bağlantı dizesini almak için kullanılır.

Değişkenler

Bu değerler şablonda kullanılır ve çoğunlukla parametrelerden türetilen değerlerdir.

queueAuthorizationRuleResourceId: Bu alan, sorgu kuyruğu için yetkilendirme kuralının ResourceId Service Bus alandır. ResourceId sırasıyla kuyruğun bağlantı dizesini almak için kullanılır.

iotHubName: Bu alan, randomValue IoT Hub sonra bu alanın adıdır.

storageAccountName: Bu alan, randomValue bir olduktan sonra depolama hesabının adıdır.

service_bus_namespace: Bu alan, randomValue bir olduktan sonra ad alanıdır.

service_bus_queue: Bu alan, randomValue Service Bus sonra kuyruk adı olarak kullanılır.

sbVersion: Service Bus API'nin sürümü. Bu durumda , "2017-04-01" şeklindedir.

Kaynaklar: Depolama ve kapsayıcı

Oluşturulan ilk kaynak, iletilerin yönlendirilen kapsayıcıyla birlikte depolama hesabıdır. Kapsayıcı, depolama hesabı altındaki bir kaynaktır. Depolama hesabı dependsOn için bir yan tümcesi vardır ve kapsayıcıdan önce depolama hesabının oluşturulmuş olması gerekir.

Bu bölüm şöyledir:

{
    "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 alanı ve kuyruğu

Oluşturulan ikinci kaynak, Service Bus yönlendirilen Service Bus kuyrukla birlikte bir 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ğıtan Service Bus (durum:Etkin) ad alanını etkinleştirmek için de ayarlanır.

{
    "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 oluşturur. Betiğin bu bölümünde, ad dependsOn alanının kuyruktan önce oluşturulmalarını sağlayan bir yan tümcesi 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

Artık depolama hesabı ve Service Bus kuyruğu oluşturulduktan sonra, iletileri IoT Hub bir depolama hesabı oluşturabilirsiniz. RM şablonu yan tümceleri kullandığı için, Service Bus kaynakları ve depolama hesabı oluşturulmadan önce dependsOn hub'ı oluşturma denemez.

Bu bölümün ilk bölümü IoT Hub. Ş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ının bölümüdir. İlki uç noktaların bölümü. Şablonun bu bölümü, bağlantı dizeleri dahil olmak üzere Service Bus depolama hesabı için yönlendirme uç noktalarını ayarlar.

Kuyruğun bağlantı dizesini oluşturmak için satır içinde alınan queueAuthorizationRulesResourcedId değerine ihtiyacınız vardır. Depolama hesabının bağlantı dizesini oluşturmak için birincil depolama anahtarını alır ve bağlantı dizesi biçiminde kullanırsınız.

Uç nokta yapılandırmasında blob biçimini veya olarak ayarlarken de AVRO JSON kullanabilirsiniz.

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 giden ileti yolları içindir. Her uç nokta için bir ayar vardır, bu nedenle kuyruk için bir tane Service Bus depolama hesabı kapsayıcısı için bir tane vardır.

Depolama alanına yönlendirilen iletiler için sorgu koşulunun olduğunu ve kuyrukta yönlendirilen iletilerin sorgu koşulunun level="storage" olduğunu Service Bus level="critical" unutmayın.

"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, varsayılan bilgileri ve hub'IoT Hub SKU'larını 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 yetkilendirme kurallarını kullanın

Kuyruk Service Bus için bağlantı dizesini almak için kuyruk yetkilendirme kuralı Service Bus kullanılır. Bir yan dependsOn tümcesini, Service Bus ve Service Bus 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 IoT Hub veri kaynağı tarafından Azure Stream Analytics için bir Tüketici Grubu oluşturacağı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: Çıkışlar

Görüntülenecek dağıtım betiğine bir değer geri göndermek için bir çıkış bölümü kullanın. Şablonun bu bölümü, Service Bus kuyruğu için bağlantı dizesini döndürür. Bir değerin döndürnerek sonuç döndüren gerekli değildir, çağrı betiğine sonuçların nasıl döndür ekli olduğunu bir örnek olarak dahil edilir.

"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 parametre dosyasını Azure Cloud Shell dosyasına yükleyin ve ardından şablonu dağıtmak için bir betik yürütün. Oturum Azure Cloud Shell ve oturum açın. Bu örnekte PowerShell 2.

Dosyaları karşıya yüklemek için menü çubuğundaki Upload/Dosyaları indir simgesini seçin ve sonra da Dosyaları indir'Upload.

Dosyaları indir/Upload simgesini vurgulayan ekran görüntüsü.

Yerel diskinizdeki dosyaları bulmak için açılan dosya gezginini kullanın ve sonra ' ı seçin.

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

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

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

Dağıtımı gerçekleştirmek için betiği çalıştırın. bu betiğin son satırı döndürülecek şekilde ayarlanan değişkeni alır--Service Bus kuyruğu bağlantı dizesi.

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

$RGName , şablonun dağıtılacağı kaynak grubu adıdır. Bu alan, şablon dağıtılmadan önce oluşturulur.

$Location , şablon Için kullanılacak Azure konumudur (örneğin, "westus").

DeploymentName , döndürülen değişken değerini almak için dağıtıma atadığınız addır.

PowerShell betiği aşağıda verilmiştir. Bu PowerShell betiğini kopyalayın ve Cloud Shell penceresine yapıştırın ve sonra çalıştırmak için ENTER tuşuna bası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ıyla karşılaşırsanız, betiği yerel olarak düzenleyebilir, Cloud Shell yeniden karşıya yükleyebilir ve betiği yeniden çalıştırabilirsiniz. Betik başarıyla çalışmaya başladıktan sonra, bir sonraki adımla devam edin.

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

Uç noktalarınız ve mesaj yollarınız ayarlandığına göre, bu yapılandırmayı portalda görüntüleyebilirsiniz. Azure Portal oturum açın ve kaynak grupları' na gidin. Sonra, kaynak grubunuzu seçin ve ardından hub 'ınızı seçin (hub adı ContosoTestHub Bu öğreticide başlar). IoT Hub bölmesini görürsünüz.

IoT Hub özellikleri ekranı

IoT Hub seçeneklerinde Ileti yönlendirme' yi seçin. Başarıyla ayarladığınız rotalar görüntülenir.

Ayarladığınız yollar

İleti yönlendirme ekranında, rotalar için tanımladığınız uç noktaları görmek Için Özel uç noktalar ' ı seçin.

Yollar için ayarlanan uç noktalar

Sonraki adımlar

Tüm kaynakları ayarlamış olduğunuza ve ileti yolları yapılandırıldıktan sonra, yönlendirilen iletilerle ilgili bilgileri nasıl işleyeceğini ve görüntüleyeceğinizi öğrenmek için sonraki öğreticiye ilerleyin.