Tutorial: Menggunakan templat Azure Resource Manager untuk mengonfigurasi perutean pesan Hub IoT

Perutean pesan mengaktifkan pengiriman data telemetri dari perangkat IoT Anda ke titik akhir yang kompatibel dengan Hub Kejadian bawaan atau titik akhir kustom seperti penyimpanan blob, Antrean Bus Layanan, Topik Bus Layanan, dan Hub Acara. Untuk mengonfigurasi perutean pesan kustom, Anda membuat kueri perutean untuk mengustomisasi rute yang cocok dengan kondisi tertentu. Setelah disiapkan, data masuk secara otomatis dirutekan ke titik akhir oleh Hub IoT. Jika pesan tidak cocok dengan kueri perutean yang ditentukan, pesan dirutekan ke titik akhir default.

Dalam tutorial 2 bagian ini, Anda belajar cara mengatur dan menggunakan kueri perutean kustom ini dengan IoT Hub. Anda merutekan pesan dari perangkat IoT ke salah satu dari beberapa titik akhir, termasuk penyimpanan blob dan antrean Bus Layanan. Pesan ke antrean Bus Layanan diambil oleh Log App dan dikirim melalui email. Pesan yang tidak memiliki perutean pesan kustom yang ditentukan dikirim ke titik akhir default, lalu diambil oleh Azure Stream Analytics dan ditampilkan dalam visualisasi Power BI.

Untuk menyelesaikan Bagian 1 dan 2 tutorial ini, Anda melakukan tugas-tugas berikut:

Bagian I: Membuat sumber daya, menyiapkan perutean pesan

  • Buat sumber daya - hub IoT, akun penyimpanan, antrian Bus Layanan, dan perangkat simulasi. Ini dapat dilakukan menggunakan portal Microsoft Azure, template Azure Resource Manager, Azure CLI, atau Azure PowerShell.
  • Konfigurasikan titik akhir dan rute pesan di Azure IoT Hub untuk akun penyimpanan dan antrean Bus Layanan.

Bagian II: Mengirim pesan ke hub, melihat hasil yang dirutekan

  • Buat Aplikasi Logika yang dipicu dan mengirim email saat sebuah pesan ditambahkan ke antrean Bus Layanan.
  • Unduh dan jalankan aplikasi yang menyimulasikan Perangkat IoT yang mengirim pesan ke hub untuk berbagai opsi perutean.
  • Buat visualisasi Power BI untuk data yang dikirim ke titik akhir default.
  • Lihat hasilnya ...
  • ... di antrean Bus Layanan dan email.
  • ... di Akun penyimpanan.
  • ... di visualisasi Power BI.

Prasyarat

  • Untuk Bagian 1 tutorial ini:

    • Anda harus memiliki langganan Azure yang aktif. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Untuk Bagian 2 tutorial ini:

    • Anda harus menyelesaikan Bagian 1 tutorial ini, dan memiliki sumber daya yang masih tersedia.
    • Instal Visual Studio.
    • Memiliki akses ke akun Power BI untuk menganalisis analitik aliran titik akhir default. (Coba Power BI secara gratis.)
    • Memiliki akun kerja atau sekolah untuk mengirim email pemberitahuan.
    • Pastikan port 8883 terbuka di firewall Anda. Sampel dalam tutorial ini menggunakan protokol MQTT, yang berkomunikasi melalui port 8883. Port ini mungkin diblokir di beberapa lingkungan jaringan perusahaan dan pendidikan. Untuk mengetahui informasi selengkapnya dan cara mengatasi masalah ini, lihat Menghubungkan ke IoT Hub (MQTT).

Menggunakan Azure Cloud Shell

Azure meng-hosting Azure Cloud Shell, lingkungan shell interaktif yang dapat Anda gunakan melalui browser. Anda dapat menggunakan Bash atau PowerShell dengan Cloud Shell untuk bekerja dengan layanan Azure. Anda dapat menggunakan perintah Cloud Shell yang telah diinstal sebelumnya untuk menjalankan kode dalam artikel ini tanpa harus menginstal apa pun di lingkungan lokal Anda.

Untuk memulai Azure Cloud Shell:

Opsi Contoh/Tautan
Pilih Coba di sudut kanan atas blok kode. Memilih Coba tidak secara otomatis menyalin kode ke Cloud Shell. Contoh Coba untuk Azure Cloud Shell
Buka https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. Luncurkan Cloud Shell di jendela baru
Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. Tombol Cloud Shell di portal Microsoft Azure

Untuk menjalankan kode dalam artikel ini di Azure Cloud Shell:

  1. Mulai Cloud Shell.

  2. Pilih tombol Salin pada blok kode untuk menyalin kode.

  3. Tempelkan kode ke sesi Cloud Shell dengan memilih Ctrl+Shift+V di Windows dan Linux atau dengan memilih Cmd+Shift+V di macOS.

  4. Pilih Enter untuk menjalankan kode.

Membuat sumber daya dasar

Sebelum dapat mengonfigurasi perutean pesan, Anda perlu membuat hub IoT, akun penyimpanan, dan antrean Bus Layanan. Sumber daya ini dapat dibuat menggunakan salah satu dari empat artikel yang tersedia untuk Bagian 1 tutorial ini: portal Microsoft Azure, templat Azure Resource Manager, Azure CLI, atau Azure PowerShell.

Gunakan grup sumber daya dan lokasi yang sama untuk semua sumber daya. Selanjutnya di akhir, Anda dapat menghapus semuanya dalam satu langkah dengan menghapus grup sumber daya.

Di bawah ini adalah ringkasan langkah-langkah yang akan dilakukan di bagian berikut:

  1. Buat grup sumber daya.

  2. Buat hub IoT di tingkat S1. Tambahkan grup konsumen ke hub IoT Anda. Grup konsumen digunakan oleh Azure Stream Analytics saat mengambil data.

    Catatan

    Anda harus menggunakan hub Iot dalam tingkat berbayar untuk menyelesaikan tutorial ini. Tingkat gratis hanya memungkinkan Anda menyiapkan satu titik akhir, dan tutorial ini memerlukan beberapa titik akhir.

  3. Buat akun penyimpanan V1 standar dengan replikasi Standard_LRS.

  4. Buat namespace Bus Layanan dan antrean.

  5. Buat identitas perangkat untuk perangkat yang disimulasikan yang mengirim pesan ke hub Anda. Simpan kunci untuk fase pengujian. (Jika membuat templat Resource Manager, ini dilakukan setelah menyebarkan templat.)

Perutean pesan

Anda akan merutekan pesan ke sumber daya yang berbeda berdasarkan properti yang dilampirkan ke pesan oleh perangkat yang disimulasikan. Pesan yang tidak dirutekan kustom dikirim ke titik akhir default (pesan/kejadian). Dalam tutorial berikutnya, Anda mengirim pesan ke IoT Hub dan melihat pesan dirutekan ke berbagai tujuan.

Nilai Hasil
level="storage" Tulis ke Azure Storage.
level="critical" Tulis antrean Bus Layanan. Aplikasi Logika mengambil pesan dari antrean dan menggunakan Office 365 untuk mengirim pesan melalui email.
default Tampilkan data ini menggunakan Power BI.

Langkah pertama adalah menyiapkan titik akhir tempat data akan dirutekan. Langkah kedua adalah menyiapkan rute pesan yang menggunakan titik akhir tersebut. Setelah menyiapkan perutean, Anda dapat melihat titik akhir dan rute pesan di portal.

Unduh file templat dan parameter

Untuk bagian kedua tutorial ini, Anda mengunduh dan menjalankan aplikasi Visual Studio untuk mengirim pesan ke IoT Hub. Terdapat folder dalam unduhan yang berisi file templat dan parameter Azure Resource Manager, serta skrip Azure CLI dan PowerShell.

Lanjutkan dan unduh Sampel Azure IoT C# sekarang. Buka zip file main.zip. Templat Resource Manager dan file parameter berada di /iot-hub/Tutorials/Routing/SimulatedDevice/resources/ as template_iothub.json dan template_iothub_parameters.json.

Membuat sumber daya Anda

Anda akan menggunakan templat Azure Resource Manager (RM) untuk membuat semua sumber daya Anda. Skrip Azure CLI dan PowerShell dapat dijalankan beberapa baris sekaligus. Templat RM digunakan dalam satu langkah. Artikel ini menunjukkan bagian secara terpisah, untuk membantu Anda memahami masing-masing bagian. Lalu artikel akan menunjukkan cara menyebarkan templat, dan membuat perangkat virtual untuk pengujian. Setelah templat disebarkan, Anda dapat melihat konfigurasi perutean pesan di portal.

Ada beberapa nama sumber daya yang harus unik secara global, seperti nama IoT Hub dan nama akun penyimpanan. Untuk mempermudah penamaan sumber daya, nama sumber daya tersebut disiapkan untuk menambahkan nilai alfanumerik acak yang dihasilkan dari tanggal/waktu saat ini.

Jika melihat templat, Anda akan melihat di mana variabel disiapkan untuk sumber daya ini, yang mengambil parameter yang diteruskan dan menggabungkan randomValue ke parameter.

Bagian berikut menjelaskan parameter yang digunakan.

Parameter

Sebagian besar parameter ini memiliki nilai default. Parameter ini diakhiri dengan _in digabubngkan dengan randomValue untuk membuatnya unik secara global.

randomValue: Nilai ini dihasilkan dari tanggal/waktu saat ini saat Anda menyebarkan templat. Bidang ini tidak ada dalam file parameter, karena dihasilkan dalam templat itu sendiri.

subscriptionId: Bidang ini diatur untuk Anda ke langganan di mana Anda menggunakan templat. Bidang ini tidak ada dalam file parameter karena diatur untuk Anda.

IoTHubName_in: Bidang ini adalah nama IoT Hub dasar yang digabungkan dengan randomValue sehingga menjadi unik secara global.

lokasi: Bidang ini adalah wilayah Azure di mana Anda menyebarkan, seperti "westus".

consumer_group: Bidang ini adalah set grup konsumen untuk pesan yang masuk melalui titik akhir perutean. Ini digunakan untuk memfilter hasil di Azure Stream Analytics. Misalnya, terdapat seluruh aliran di mana Anda mendapatkan semua hasil, atau jika Anda memiliki data masuk dengan consumer_group diatur ke Contoso, maka Anda dapat menyiapkan aliran Azure Stream Analytics (dan laporan Power BI) untuk memperlihatkan hanya entri tersebut. Bidang ini digunakan dalam bagian 2 tutorial ini.

sku_name: Bidang ini adalah penskalaan untuk IoT Hub. Nilai ini harus S1 atau lebih tinggi; tingkat gratis tidak berfungsi untuk tutorial ini, karena tidak mengizinkan beberapa titik akhir.

sku_units: Bidang ini sesuai dengan sku_name, dan merupakan jumlah unit IoT Hub yang dapat digunakan.

d2c_partitions: Bidang ini adalah jumlah partisi yang digunakan untuk streaming peristiwa.

storageAccountName_in: Bidang ini adalah nama akun penyimpanan yang akan dibuat. Pesan dirutekan ke kontainer di akun penyimpanan. Bidang ini digabungkan dengan randomValue agar menjadi unik secara global.

storageContainerName: Bidang ini adalah nama kontainer tempat pesan dirutekan ke akun penyimpanan yang disimpan.

storage_endpoint: Bidang ini adalah nama untuk titik akhir akun penyimpanan yang digunakan oleh perutean pesan.

service_bus_namespace_in: Bidang ini adalah nama namespace layanan Azure Service Bus yang akan dibuat. Nilai ini disusun dengan randomValue agar menjadi unik secara global.

service_bus_queue_in: Bidang ini adalah nama antrean Azure Service Bus yang digunakan untuk merutekan pesan. Nilai ini disusun dengan randomValue agar menjadi unik secara global.

AuthRules_sb_queue: Bidang ini adalah aturan otorisasi untuk antrean bus layanan, digunakan untuk mengambil untai sambungan untuk antrian.

Variabel

Nilai-nilai ini digunakan dalam templat, dan sebagian besar berasal dari parameter.

queueAuthorizationRuleResourceId: Bidang ini adalah ResourceId untuk aturan otorisasi untuk antrean Bus Layanan. ResourceId pada gilirannya digunakan untuk mengambil untai sambungan untuk antrean.

iotHubName: Bidang ini adalah randomValue nama Hub IoT setelah digabungkan secara acak.

storageAccountName: Bidang ini adalah nama randomValue penyimpanan setelah digabungkan secara acak.

service_bus_namespace: Bidang ini adalah namespace layanan setelah randomValue digabungkan.

service_bus_namespace: Bidang ini adalah nama antrean Azure Service Bus setelah randomValue digabungkan.

sbVersion: Versi API Azure Service Bus yang akan digunakan. Dalam hal ini, itu adalah "2017-04-01".

Membuat kontainer dan akun Azure Storage

Sumber daya pertama yang dibuat adalah akun penyimpanan, serta kontainer di mana pesan dirutekan. Kontainer adalah sumber daya pada akun penyimpanan. Ini memiliki klausul dependsOn untuk akun penyimpanan, mengharuskan akun penyimpanan dibuat sebelum kontainer.

Berikut tampilan bagian ini:

{
    "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'))]"
            ]
        }
    ]
}

Buat namespace dan antrean layanan Azure Service Bus

Sumber daya kedua yang dibuat adalah ruang nama Azure Service Bus, bersama dengan antrean Azure Service Bus di mana pesan dirutekan. SKU diatur ke standar. Versi API diambil dari variabel. Ini juga diatur untuk mengaktifkan ruang nama Azure Service Bus ketika menyebarkan bagian ini (status:Aktif).

{
    "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": []
}

Bagian ini membuat antrean Azure Service Bus. Bagian skrip ini memiliki klausul dependsOn yang memastikan namespace layanan dibuat sebelum antrean.

{
    "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'))]"
    ]
}

Sumber Daya: Iot Hub dan perutean pesan

Sekarang setelah membuat akun penyimpanan dan antrean Azure Service Bus, Anda membuat IoT Hub yang merutekan pesan kepada mereka. Template RM menggunakan klausul dependsOn sehingga tidak mencoba membuat hub sebelum sumber daya Azure Service Bus dan akun penyimpanan telah dibuat.

Berikut adalah bagian pertama dari bagian IoT Hub. Bagian templat ini mengatur dependensi dan memulai dengan properti.

{
    "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')]"
                }
            },

Bagian berikutnya adalah bagian untuk konfigurasi perutean pesan untuk Iot Hub. Pertama adalah bagian untuk titik akhir. Bagian templat ini mengatur titik akhir perutean untuk antrean Azure Service Bus dan akun penyimpanan, termasuk untai sambungan.

Untuk membuat untai sambungan untuk antrean, Anda memerlukan queueAuthorizationRulesResourcedId, yang diambil sebaris. Untuk membuat untai sambungan untuk akun penyimpanan, Anda mengambil kunci penyimpanan utama lalu menggunakannya dalam format untuk untai sambungan.

Konfigurasi titik akhir juga merupakan tempat Anda mengatur format blob ke AVRO atau JSON.

Catatan

Data dapat ditulis ke penyimpanan blob dalam format Apache Avro, yang merupakan default, atau JSON.

Format pengodean hanya dapat diatur pada saat titik akhir penyimpanan blob dikonfigurasi. Format tidak dapat diubah untuk titik akhir yang telah disiapkan. Saat menggunakan pengodean JSON, Anda harus mengatur contentType ke JSON dan contentEncoding ke UTF-8 di properti sistem pesan.

Untuk informasi selengkapnya tentang menggunakan titik akhir penyimpanan blob, lihat panduan tentang perutean ke penyimpanan.

"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]"
           }
       ]
   },

Bagian berikutnya adalah untuk rute pesan ke titik akhir. Ada satu yang disiapkan untuk setiap titik akhir, sehingga ada satu untuk antrean Azure Service Bus dan satu untuk kontainer akun penyimpanan.

Ingatlah bahwa kondisi kueri untuk pesan yang dirutekan ke penyimpanan adalah level="storage", dan kondisi kueri untuk pesan yang dirutekan ke antrean Azure Service Bus adalah 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
    }
],

Json ini menunjukkan bagian IoT Hub lainnya yang berisi informasi default dan SKU untuk hub.

            "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')]"
    }
}

Sumber daya: Aturan otorisasi antrean Azure Service Bus

Aturan otorisasi antrean Azure Service Bus digunakan untuk mengambil untai sambungan untuk antrean Azure Service Bus. Ini menggunakan klausul dependsOn untuk memastikan klausul tersebut tidak dibuat sebelum namespace layanan Azure Service Bus dan antrean Azure Service Bus.

{
    "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'))]"
    ]
},

Sumber daya: Grup konsumen

Di bagian ini, Anda membuat Grup Konsumen untuk data IoT Hub yang akan digunakan oleh Azure Stream Analytics di bagian kedua tutorial ini.

{
    "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'))]"
    ]
}

Sumber daya:m Output

Jika Anda ingin mengirim nilai kembali ke skrip penyebaran untuk ditampilkan, Anda harus menggunakan bagian output. Bagian templat ini mengembalikan untai sambungan untuk antrean Azure Service Bus. Mengembalikan nilai tidak diperlukan, nilai disertakan sebagai contoh cara mengembalikan hasil ke skrip panggilan.

"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'))]"
    }
  }

Menggunakan templat RM

Untuk menyebarkan templat ke Azure, unggah templat dan file parameter ke Azure Cloud Shell, lalu jalankan skrip untuk menyebarkan templat. Buka Azure Cloud Shell, lalu masuk. Contoh ini menggunakan PowerShell.

Untuk mengunggah file, pilih ikon Unggah/Unduh file di bilah menu, lalu pilih Unggah.

Cuplikan layar yang menyoroti ikon Unggah/Unduh file.

Gunakan File Explorer yang muncul untuk menemukan file di disk lokal Anda dan memilihnya, lalu pilih Buka.

Setelah file diunggah, dialog hasil menunjukkan sesuatu seperti gambar berikut.

Bilah menu Cloud Shell dengan hasil Unggah/Unduh disorot

File diunggah ke berbagi yang digunakan oleh instans Cloud Shell Anda.

Jalankan skrip untuk melakukan penyebaran. Baris terakhir skrip ini mengambil variabel yang disiapkan untuk dikembalikan - untai sambungan antrean Azure Service Bus.

Skrip mengatur dan menggunakan variabel ini:

$RGName adalah nama grup sumber daya yang digunakan untuk menyebarkan templat. Bidang ini dibuat sebelum menyebarkan templat.

$location adalah lokasi Azure yang akan digunakan untuk templat, seperti "westus".

deploymentname adalah nama yang Anda tetapkan ke penyebaran untuk mengambil nilai variabel yang dikembalikan.

Berikut adalah skrip PowerShell. Salin skrip PowerShell ini dan tempelkan ke jendela Cloud Shell, lalu tekan Enter untuk menjalankannya.

$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

Jika Anda memiliki kesalahan skrip, Anda dapat mengedit skrip secara lokal, mengunggahnya lagi ke Cloud Shell, dan menjalankan skrip lagi. Setelah skrip selesai berjalan dengan sukses, lanjutkan ke langkah berikutnya.

Membuat perangkat yang disimulasikan

Selanjutnya, buat identitas perangkat dan simpan kuncinya untuk digunakan nanti. Identitas perangkat ini digunakan oleh aplikasi simulasi untuk mengirim pesan ke IoT hub. Kemampuan ini tidak tersedia di PowerShell atau saat menggunakan templat Azure Resource Manager. Langkah-langkah berikut ini memberi tahu Anda cara membuat perangkat yang disimulasikan menggunakan Portal Azure.

  1. Buka Portal Azure dan masuk ke akun Azure Anda.

  2. Pilih Grup sumber daya lalu pilih grup sumber daya Anda. Tutorial ini menggunakan ContosoResources.

  3. Dalam daftar sumber daya, pilih IoT hub Anda. Tutorial ini menggunakan ContosoTestHub. Pilih Perangkat IoT dari panel Hub.

  4. Pilih +Tambahkan Perangkat pada panel Perangkat IoT. Pada panel Tambahkan Perangkat, isi ID perangkat. Tutorial ini menggunakan Contoso-Test-Device. Biarkan kunci kosong, dan centang Buat Kunci Secara Otomatis. Pastikan Sambungkan perangkat ke IoT hub diaktifkan. Pilih Simpan.

    Layar tambah-perangkat

  5. Setelah dibuat, pilih perangkat untuk melihat kunci yang dihasilkan. Pilih ikon Salin pada Kunci primer dan simpan di suatu tempat seperti Notepad untuk fase pengujian tutorial ini.

    Detail perangkat, termasuk kunci

Menampilkan perutean pesan di portal

Sekarang setelah titik akhir dan rute pesan Anda disiapkan, Anda dapat melihat konfigurasinya di portal. Masuk ke portal Microsoft Azure dan buka Grup Sumber Daya. Selanjutnya, pilih grup sumber daya Anda, lalu pilih hub Anda (nama hub dimulai dengan ContosoTestHub dalam tutorial ini). Anda melihat panel IoT Hub.

Layar properti IoT Hub

Di opsi untuk IoT Hub, pilih Perutean Pesan. Rute yang Anda siapkan berhasil ditampilkan.

Rute yang Anda siapkan

Di layar Perutean pesan, pilih Titik Akhir Kustom untuk melihat titik akhir yang sudah Anda tentukan untuk rute.

Titik akhir disiapkan untuk rute

Langkah berikutnya

Sekarang setelah Anda menyiapkan semua sumber daya dan mengonfigurasi rute pesan, lanjutkan ke tutorial berikutnya untuk mempelajari cara memproses dan menampilkan informasi tentang pesan yang dirutekan.