Zelfstudie: Een Azure Resource Manager-sjabloon gebruiken om IoT Hub-berichtroutering te configureren
Met berichtroutering kunt u telemetriegegevens verzenden van uw IoT-apparaten naar ingebouwde, met Event Hub compatibele eindpunten of aangepaste eindpunten zoals blobopslag, Service Bus-wachtrijen, Service Bus-onderwerpen en Event Hubs. Als u een aangepaste berichtroutering wilt configureren, maakt u routeringsquery’s om een route aan te passen die overeenkomt met een bepaalde regel. Zodra u deze hebt ingesteld, worden de inkomende gegevens automatisch door de IoT Hub doorgestuurd naar de eindpunten. Als een bericht niet overeen komt met een van de gedefinieerde routeringsquery's, wordt het doorgeleid naar het standaard eindpunt.
In deze tweedelige zelfstudie leert u hoe u deze aangepaste routeringsquery’s kunt instellen en gebruiken met IoT Hub. U stuurt berichten door van een IoT-apparaat naar een of meerdere eindpunten, met inbegrip van blobopslag en een Service Bus-wachtrij. Berichten in de Service Bus-wachtrij worden opgehaald door een logische app en via e-mail verzonden. Berichten waarvoor geen aangepaste berichtroutering is gedefinieerd, worden naar het standaardeindpunt gestuurd, vervolgens opgehaald door Azure Stream Analytics en weergegeven in een Power BI-visualisatie.
Als u deel 1 en 2 van deze zelfstudie wilt afronden, voert u de volgende taken uit:
Deel I: Resources maken, berichtroutering instellen
- Maak de resources: een IoT hub, een opslagaccount, een Service Bus-wachtrij en een gesimuleerd apparaat. U kunt dit doen met behulp van Azure Portal, een Azure Resource Manager-sjabloon, de Azure CLI of Azure PowerShell.
- Configureer de eindpunten en berichtroutes in IoT Hub voor het opslagaccount en de Service Bus-wachtrij.
Deel II: Berichten verzenden naar de hub, gerouteerde resultaten weergeven
- Maak een logische app die wordt geactiveerd en een e-mailbericht verzendt wanneer een bericht wordt toegevoegd aan de Service Bus-wachtrij.
- Download een app die een IoT-apparaat aanzet tot het verzenden van berichten naar de hub voor de verschillende routeringsopties en voer deze uit.
- Maak een Power BI-visualisatie voor gegevens die naar het standaardeindpunt worden verzonden.
- Bekijk de resultaten...
- .. .in de Service Bus-wachtrij en e-mailberichten.
- ...in het opslagaccount.
- ...in de Power BI-visualisatie.
Vereisten
Voor Deel 1 van deze zelfstudie:
- U hebt een abonnement op Azure nodig. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
Voor Deel 2 van deze zelfstudie:
- U moet Deel 1 van deze zelfstudie hebben afgerond en de resources nog tot uw beschikking hebben.
- Installeer Visual Studio.
- Toegang tot een Power BI-account voor het analyseren van de Stream Analytics van het standaardeindpunt. (Probeer Power BI gratis uit.)
- Een werk- of schoolaccount voor het verzenden van e-mailberichten.
- Zorg ervoor dat de poort 8883 is geopend in de firewall. In het voorbeeld in deze zelfstudie wordt het MQTT-protocol gebruikt, dat communiceert via poort 8883. Deze poort is in sommige netwerkomgevingen van bedrijven en onderwijsinstellingen mogelijk geblokkeerd. Zie Verbinding maken met IoT Hub (MQTT) voor meer informatie en manieren om dit probleem te omzeilen.
Azure Cloud Shell gebruiken
Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde opdrachten van Cloud Shell gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.
Om Azure Cloud Shell op te starten:
| Optie | Voorbeeld/koppeling |
|---|---|
| Selecteer Nu proberen in de rechterbovenhoek van een codeblok. Als u Uitproberen selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. | ![]() |
| Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. | ![]() |
| Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. | ![]() |
Om de code in dit artikel in Azure Cloud Shell uit te voeren:
Start Cloud Shell.
Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.
Plak de code in de Cloud Shell-sessie door CTRL+Shift+V te selecteren in Windows en Linux of door Cmd+Shift+V op macOS te selecteren.
Selecteer Invoeren om de code uit te voeren.
Basisresources maken
Voordat u de berichtroutering kunt configureren, moet u een IoT-hub, een opslagaccount en een Service Bus-wachtrij maken. Deze resources kunnen worden gemaakt met behulp van een van de vier artikelen die beschikbaar zijn voor deel 1 van deze zelfstudie: Azure Portal, een Azure Resource Manager-sjabloon, de Azure CLI of Azure PowerShell.
Gebruik dezelfde resourcegroep en -locatie voor alle resources. Vervolgens kunt u alle resources aan het einde in één stap verwijderen door de resourcegroep te verwijderen.
Hieronder vindt u een overzicht van de stappen die in de volgende secties moeten worden uitgevoerd:
Maak een resourcegroep.
Maak een IoT Hub in de S1-laag. Voeg een consumentengroep toe aan uw IoT Hub. De consumentengroep wordt gebruikt door de Azure Stream Analytics bij het ophalen van gegevens.
Notitie
U moet een IoT Hub in een betaalde laag gebruiken om deze zelfstudie te voltooien. Met de gratis laag kunt u slechts één eindpunt instellen, terwijl voor deze zelfstudie meerdere eindpunten zijn vereist.
Maak een standaard V1-opslagaccount met Standard_LRS replicatie.
Maak een Service Bus-naamruimte en -wachtrij.
Maak een apparaat-id voor het gesimuleerde apparaat dat berichten naar uw hub verzendt. Sla de sleutel op voor de testfase. (Als u een Resource Manager-sjabloon maakt, doet u dit na het implementeren van de sjabloon.)
Berichtroutering
U gaat berichten naar andere resources doorsturen op basis van eigenschappen die door het gesimuleerde apparaat aan het bericht zijn gekoppeld. Berichten die niet aangepast zijn doorgestuurd, worden verzonden naar het standaardeindpunt (berichten/gebeurtenissen). In de volgende zelfstudie stuurt u berichten naar IoT Hub en ziet u dat ze naar de verschillende bestemmingen worden gerouteerd.
| Waarde | Resultaat |
|---|---|
| niveau = 'opslag' | Schrijf naar Azure Storage. |
| niveau = 'kritiek' | Schrijf naar een Service Bus-wachtrij. Een logische app haalt het bericht op uit de wachtrij en gebruikt Office 365 om het bericht via e-mail te versturen. |
| standaardinstelling | Geef deze gegevens weer met Power BI. |
In de eerste stap bestaat uit het instellen van het eindpunt waarnaar de gegevens worden gerouteerd. In de tweede stap wordt de berichtroute ingesteld die van dat eindpunt gebruikmaakt. Nadat u de routering hebt ingesteld, kunt u de eindpunten en berichtroutes weergeven in de portal.
De sjabloon en het parameterbestand downloaden
Voor het tweede deel van deze zelfstudie downloadt u een Visual Studio-toepassing en voert u deze uit om berichten naar de IoT Hub te verzenden. Er is een map in de download die de Azure Resource Manager-sjabloon en het parameterbestand bevat, evenals de Azure CLI- en PowerShell-scripts.
Ga nu verder met het downloaden van de Azure IoT C#-voorbeelden. Het main.zip uit. De Resource Manager-sjabloon en het parameterbestand bevinden zich op /iot-hub/Tutorials/Routing/SimulatedDevice/resources/als template_iothub.json en template_iothub_parameters.json.
Uw resources maken
U gaat een Azure Resource Manager (RM)-sjabloon gebruiken om al uw resources te maken. De Azure CLI-en PowerShell-scripts kunnen met een aantal regels tegelijk worden uitgevoerd. Een RM-sjabloon wordt in één stap geïmplementeerd. In dit artikel wordt beschreven hoe u de secties afzonderlijk kunt begrijpen. Vervolgens wordt uitgelegd hoe u de sjabloon implementeert en maakt u het virtuele apparaat om te testen. Nadat de sjabloon is geïmplementeerd, kunt u de configuratie voor berichtroutering bekijken in het portal.
Er zijn een aantal resourcenamen die wereldwijd uniek moeten zijn, zoals de naam van de IoT Hub en van het opslagaccount. Om de naamgeving van de resources gemakkelijker te maken, worden deze resourcenamen ingesteld om een willekeurige alfanumerieke waarde toe te voegen die is gegenereerd op basis van de huidige datum/tijd.
Als u de sjabloon bekijkt, ziet u dat er variabelen worden ingesteld voor deze resources waarvoor de parameter wordt doorgegeven en wordt randomValue toegevoegd aan de parameter.
In de volgende sectie worden de gebruikte parameters uitgelegd.
Parameters
De meeste van deze parameters hebben standaardwaarden. De taken die eindigen op _in worden samengevoegd met randomValue om ze globaal uniek te maken.
randomValue: Deze waarde wordt gegenereerd op basis van de huidige datum/tijd wanneer u de sjabloon implementeert. Dit veld bevindt zich niet in het parameterbestand, omdat dit in de sjabloon zelf wordt gegenereerd.
subscriptionId: Dit veld wordt voor u ingesteld op het abonnement waarin u de sjabloon implementeert. Dit veld bevindt zich niet in het parameterbestand omdat het voor u is ingesteld.
IoTHubName_in: Dit veld is de IoT Hub basisnaam, die wordt samenvoegd met de randomValue, zodat het globaal uniek is.
location: Dit veld is de Azure-regio waarin u implementeert, zoals "westus".
consumer_group: Dit veld is de gebruikersgroep die is ingesteld voor berichten die afkomstig zijn van het eindpunt van de routering. Het wordt gebruikt voor het filteren van resultaten in Azure Stream Analytics. Zo is de hele stroom waar u alles krijgt, of als u gegevens hebt ontvangen via consumer_group ingesteld op Contoso, kunt u een Azure Stream Analytics-stroom (en Power BI-rapport) instellen om alleen die vermeldingen weer te geven. Dit veld wordt gebruikt in deel 2 van deze zelfstudie.
sku_name: Dit veld is de schaal voor de IoT Hub. Deze waarde moet S1 of hoger zijn. Een gratis laag werkt niet voor deze zelfstudie omdat er geen meerdere eindpunten zijn toegestaan.
sku_units: Dit veld komt samen met de sku_name en is het aantal IoT Hub-eenheden dat kan worden gebruikt.
d2c_partitions: Dit veld is het aantal partities dat wordt gebruikt voor de gebeurtenisstroom.
storageAccountName_in: Dit veld is de naam van het opslagaccount dat moet worden gemaakt. Berichten worden doorgestuurd naar een container in het opslagaccount. Dit veld wordt samengevoegd met de randomValue om het globaal uniek te maken.
storageContainerName: Dit veld is de naam van de container waarin de berichten worden opgeslagen die naar het opslagaccount worden doorgestuurd.
storage_endpoint: Dit veld is de naam voor het eindpunt van het opslagaccount dat wordt gebruikt door de berichtroutering.
service_bus_namespace_in: Dit veld is de naam van de Service Bus-naamruimte die moet worden gemaakt. Deze waarde wordt samengevoegd met de randomValue om deze wereldwijd uniek te maken.
service_bus_queue_in: Dit veld is de naam van de Service Bus-wachtrij die wordt gebruikt voor de routering van berichten. Deze waarde wordt samengevoegd met de randomValue om deze wereldwijd uniek te maken.
AuthRules_sb_queue: Dit veld bevat de autorisatieregels voor de service bus-wachtrij, die wordt gebruikt om de verbindingsreeks voor de wachtrij op te halen.
Variabelen
Deze waarden worden gebruikt in de sjabloon en worden meestal afgeleid van parameters.
queueAuthorizationRuleResourceId: Dit veld is het ResourceId voor de autorisatieregel voor de Service Bus-wachtrij. ResourceId wordt weer gebruikt om de verbindingsreeks voor de wachtrij op te halen.
iotHubName: Dit veld is de naam van de IoT Hub nadat randomValue is samengevoegd.
storageAccountName: Dit veld is de naam van het opslagaccount nadat randomValue is samengevoegd.
service_bus_namespace: Dit veld is de naamruimte nadat randomValue is samengevoegd.
service_bus_queue: Dit veld is de Service Bus-wachtrij nadat randomValue is samengevoegd.
sbVersion: de versie van de Service Bus API die moet worden gebruikt. In dit geval is dat "2017-04-01".
Resources: Opslagaccount en -container
De eerste resource die wordt gemaakt, is het opslagaccount, samen met de container waarnaar berichten worden doorgestuurd. De container is een resource onder het opslagaccount. Het bevat een dependsOn-component voor het opslagaccount, waarvoor het opslagaccount moet worden gemaakt vóór de container.
Dit gedeelte ziet er als volgt uit:
{
"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'))]"
]
}
]
}
Resources: Service Bus-naamruimte en -wachtrij
De tweede resource die wordt gemaakt, is de Service Bus-naamruimte, samen met de Service Bus-wachtrij waarnaar berichten worden doorgestuurd. De SKU is ingesteld op standaard. De API-versie wordt opgehaald uit de variabelen. Ze wordt ook ingesteld om de Service Bus-naamruimte te activeren bij het implementeren van deze sectie (status: Actief).
{
"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": []
}
In deze sectie wordt de Service Bus-wachtrij gemaakt. Dit deel van het script heeft een dependsOn-component waarmee wordt gegarandeerd dat de naamruimte wordt gemaakt vóór de wachtrij.
{
"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'))]"
]
}
Resources: IOT hub en berichtroutering
Nu het opslagaccount en de Service Bus-wachtrij zijn gemaakt, kunt u de IoT Hub maken waarmee berichten hiernaar worden doorgestuurd. De RM-sjabloon maakt gebruik van dependsOn-componenten, zodat er niet wordt geprobeerd de hub te maken voordat de Service Bus-resources en het opslagaccount zijn gemaakt.
Hier volgt het eerste deel van de sectie IoT Hub. Dit deel van de sjabloon stelt de afhankelijkheden in en begint met de eigenschappen.
{
"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')]"
}
},
De volgende sectie is de sectie voor de routeringsconfiguratie voor berichten voor de IOT-hub. Eerst komt de sectie voor de eindpunten. In dit deel van de sjabloon worden de routeringseindpunten voor de Service Bus-wachtrij en het opslagaccount, met inbegrip van de verbindingsreeksen, ingesteld.
Als u de verbindingsreeks voor de wachtrij wilt maken, hebt u de queueAuthorizationRulesResourcedId nodig, die inline wordt opgehaald. Als u de verbindingsreeks voor het opslagaccount wilt maken, haalt u de primaire opslagsleutel op en gebruikt u deze in de indeling voor de verbindingsreeks.
De eindpuntconfiguratie is ook de locatie waar u de blob-indeling instelt op AVRO of JSON.
Notitie
De gegevens kunnen worden geschreven naar blobopslag in de Apache Avro-indeling (de standaardinstelling) of JSON.
De coderingsindeling kan alleen worden ingesteld op het moment dat het eindpunt van de blob-opslag wordt geconfigureerd. De indeling kan niet worden gewijzigd voor een eindpunt dat al is ingesteld. Wanneer u de JSON-coderings gebruikt, moet u contentType instellen op JSON en contentEncoding op UTF-8 in de systeemeigenschappen van het bericht.
Zie richtlijnen voor routering naar opslag voor meer informatie over het gebruik van een eindpunt van de blob-opslag.
"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]"
}
]
},
Deze volgende sectie is voor de berichtroutes naar de eindpunten. Er is één voor elk eindpunt ingesteld, dus er is een voor de Service Bus-wachtrij en één voor de container van het opslagaccount.
Houd er rekening mee dat de query-voorwaarde voor de berichten die naar de opslag worden doorgestuurd, level="storage" is, en dat de queryvoorwaarde voor de berichten die worden doorgestuurd naar de Service Bus-wachtrij level="critical" is.
"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
}
],
Deze json toont de rest van de sectie IoT Hub, die standaardinformatie en de SKU voor de hub bevat.
"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')]"
}
}
Resources: Autorisatieregels voor Service Bus-wachtrij
De autorisatieregel voor de Service Bus-wachtrij wordt gebruikt om de verbindingsreeks voor de Service Bus-wachtrij op te halen. Er wordt een dependsOn -component gebruikt om ervoor te zorgen dat deze niet wordt gemaakt vóór de Service Bus-naamruimte en de Service Bus-wachtrij.
{
"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'))]"
]
},
Resources: Consumentengroep
In deze sectie maakt u een consumentengroep voor de IoT Hub-gegevens die door de Azure Stream Analytics in het tweede deel van deze zelfstudie worden gebruikt.
{
"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'))]"
]
}
Resources: Uitvoer
Als u een waarde wilt verzenden naar het implementatiescript dat moet worden weergegeven, gebruikt u een uitvoersectie. Dit deel van de sjabloon retourneert de verbindingsreeks voor de Service Bus-wachtrij. Het retourneren van een waarde is niet vereist, deze is opgenomen als een voorbeeld van het retourneren van resultaten naar het aanroepende script.
"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'))]"
}
}
De RM-sjabloon implementeren
Als u de sjabloon wilt implementeren in Azure, uploadt u de sjabloon en het parameterbestand naar Azure Cloud Shell en voert u vervolgens een script uit om de sjabloon te implementeren. Open Azure Cloud Shell en meld u aan. In dit voorbeeld wordt PowerShell gebruikt.
Als u de bestanden wilt uploaden, selecteert u het pictogram Uploaden/downloaden van bestanden in de menubalk en kiest u vervolgens Uploaden.

Gebruik de Verkenner die u wilt gebruiken om de bestanden op uw lokale schijf te zoeken en te selecteren, en kies vervolgens Openen.
Nadat de bestanden zijn geüpload, wordt een dialoogvenster met resultaten weergegeven zoals in de volgende afbeelding.

De bestanden worden geüpload naar de share die wordt gebruikt door uw Cloud Shell-exemplaar.
Voer het script uit om de implementatie uit te voeren. Met de laatste regel van dit script wordt de variabele opgehaald die is ingesteld om te worden geretourneerd: de verbindingsreeks voor de Service Bus-wachtrij.
In het script worden de volgende variabelen ingesteld en gebruikt:
$RGName is de naam van de resourcegroep waarin de sjabloon moet worden geïmplementeerd. Dit veld wordt gemaakt voordat de sjabloon wordt geïmplementeerd.
$location is de Azure-locatie die moet worden gebruikt voor de sjabloon, zoals "westus".
deploymentname is een naam die u toewijst aan de implementatie om de retourwaarde van de variabele op te halen.
Hier is het PowerShell-script. Kopieer dit PowerShell-script en plak het in het Cloud Shell-venster en druk vervolgens op ENTER om het uit te voeren.
$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
Als u scriptfouten hebt, kunt u het script lokaal bewerken, het opnieuw uploaden naar de Cloud Shell en het script opnieuw uitvoeren. Wanneer het uitvoeren van het script is voltooid, gaat u verder met de volgende stap.
Een gesimuleerd apparaat maken
Maak vervolgens een apparaat-id en sla de bijbehorende sleutel op voor later gebruik. Deze apparaat-id wordt gebruikt door de simulatietoepassing om berichten naar de IoT Hub te verzenden. Deze mogelijkheid is niet beschikbaar in PowerShell of als u een Azure Resource Manager-sjabloon gebruikt. De volgende stappen laten zien hoe u het gesimuleerde apparaat met behulp van Azure Portal maakt.
Open Azure Portal en meld u aan bij uw Azure-account.
Selecteer Resourcegroepen en kies uw resourcegroep. In deze zelfstudie wordt gebruikgemaakt van ContosoResources.
Selecteer uw IoT Hub in de lijst met resources. In deze zelfstudie wordt gebruikgemaakt van ContosoTestHub. Selecteer IoT-apparaten in het deelvenster Hub.
Selecteer +Apparaat toevoegen in het deelvenster IoT-apparaten. Vul in het deelvenster Apparaat toevoegen de apparaat-id in. In deze zelfstudie wordt gebruikgemaakt van Contoso-testapparaat. Laat het item voor sleutels leeg en schakel het selectievakje Automatisch sleutels genereren in. Zorg ervoor dat Apparaat verbinden met IoT Hub is ingeschakeld. Selecteer Opslaan.

Nu dit is gemaakt, klikt u op het apparaat om de gegenereerde sleutels te zien. Selecteer het pictogram Kopiëren voor de primaire sleutel en sla deze ergens op, bijvoorbeeld in Kladblok, voor de testfase van deze zelfstudie.

Berichtroutering weergeven in de portal
Nu uw eindpunten en berichtroutes zijn ingesteld, kunt u de configuratie ervan in de portal bekijken. Meld u aan bij Azure Portal en ga naar Resourcegroepen. Selecteer vervolgens de resourcegroep en vervolgens uw hub (de naam van de hub begint in deze zelfstudie met ContosoTestHub). U ziet het IoT Hub-deelvenster.
Selecteer Berichtroutering in de opties voor IoT Hub. De routes die u hebt ingesteld, worden weergegeven.

Selecteer in het scherm Berichtroutering de optie Aangepaste eindpunten om de eindpunten weer te geven die u voor de routes hebt gedefinieerd.

Volgende stappen
Nu u de resources hebt ingesteld en de berichtroutes hebt geconfigureerd, gaat u door naar de volgende zelfstudie om te leren hoe u de informatie over de gerouteerde berichten kunt verwerken en weergeven.


