Esercitazione: Usare l'interfaccia della riga di comando di Azure per configurare il routing dei messaggi per l'hub IoTTutorial: Use the Azure CLI to configure IoT Hub message routing

Il routing dei messaggi consente l'invio dei dati di telemetria dai dispositivi IoT agli endpoint compatibili con Hub eventi predefiniti o agli endpoint personalizzati, ad esempio l'archiviazione BLOB, le code del bus di servizio, gli argomenti del bus di servizio e Hub eventi.Message routing enables sending telemetry data from your IoT devices to built-in Event Hub-compatible endpoints or custom endpoints such as blob storage, Service Bus Queues, Service Bus Topics, and Event Hubs. Per configurare il routing dei messaggi personalizzato, creare query di routing per personalizzare la route che corrisponde a una determinata condizione.To configure custom message routing, you create routing queries to customize the route that matches a certain condition. Una volta impostati, i dati in ingresso vengono automaticamente indirizzati agli endpoint dall'hub IoT.Once set up, the incoming data is automatically routed to the endpoints by the IoT Hub. Se un messaggio non corrisponde ad alcuna delle query di routing definita, viene indirizzato all'endpoint predefinito.If a message doesn't match any of the defined routing queries, it is routed to the default endpoint.

In questa esercitazione in due parti, si apprenderà come configurare e usare le query di routing personalizzate con l'hub IoT.In this 2-part tutorial, you learn how to set up and use these custom routing queries with IoT Hub. Si indirizzano i messaggi di routing da un dispositivo IoT a uno degli endpoint multipli, compresa l'archiviazione BLOB e una coda del bus di servizio.You route messages from an IoT device to one of multiple endpoints, including blob storage and a Service Bus queue. I messaggi per la coda del bus di servizio saranno prelevati da un'App per la logica e inviati tramite posta elettronica.Messages to the Service Bus queue are picked up by a Logic App and sent via e-mail. I messaggi per cui non è stato definito il routing personalizzato vengono inviati all'endpoint predefinito, selezionati da Analisi di flusso di Azure e visualizzati in una visualizzazione di Power BI.Messages that do not have custom message routing defined are sent to the default endpoint, then picked up by Azure Stream Analytics and viewed in a Power BI visualization.

Per completate la prima e la seconda parte di questa esercitazione, eseguire le seguenti attività:To complete Parts 1 and 2 of this tutorial, you perform the following tasks:

Parte I: Creare risorse e configurare il routing dei messaggiPart I: Create resources, set up message routing

  • Creare le risorse, ossia un hub IoT, un account di archiviazione, una coda del bus di servizio e un dispositivo simulato.Create the resources -- an IoT hub, a storage account, a Service Bus queue, and a simulated device. A tale scopo, usare il portale di Azure, un modello di Azure Resource Manager, l'interfaccia della riga di comando di Azure o Azure PowerShell.This can be done using the Azure portal, an Azure Resource Manager template, the Azure CLI, or Azure PowerShell.
  • Configurare gli endpoint e le route dei messaggi nell'hub IoT per l'account di archiviazione e la coda del bus di servizio.Configure the endpoints and message routes in IoT Hub for the storage account and Service Bus queue.

Parte II: Inviare messaggi all'hub e visualizzare i risultati instradatiPart II: Send messages to the hub, view routed results

  • Creare un'app per la logica che viene attivata e che invia e-mail quando viene aggiunto un messaggio alla coda del Bus di servizio.Create a Logic App that is triggered and sends e-mail when a message is added to the Service Bus queue.
  • Scaricare ed eseguire un'app che simuli un dispositivo IoT che invia messaggi all'hub per le diverse opzioni di routing.Download and run an app that simulates an IoT Device sending messages to the hub for the different routing options.
  • Creare una visualizzazione di Power BI per i dati inviati all'endpoint predefinito.Create a Power BI visualization for data sent to the default endpoint.
  • Visualizzare i risultati...View the results ...
  • ...nella Coda del bus di servizio e nei messaggi di posta elettronica....in the Service Bus queue and e-mails.
  • ...nell'account di archiviazione....in the storage account.
  • ... nella visualizzazione di Power BI....in the Power BI visualization.

PrerequisitiPrerequisites

  • Per la prima parte di questa esercitazione:For Part 1 of this tutorial:

    • È necessario disporre di una sottoscrizione di Azure.You must have an Azure subscription. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.
  • Per la seconda parte di questa esercitazione:For Part 2 of this tutorial:

    • È necessario aver completato la prima parte di questa esercitazione e avere ancora a disposizione le risorse.You must have completed Part 1 of this tutorial, and have the resources still available.
    • Installare Visual Studio.Install Visual Studio.
    • Avere accesso a un account di Power BI per analizzare l'analisi di flusso dell'endpoint predefinito.Have access to a Power BI account to analyze the default endpoint's stream analytics. (Provare gratuitamente Power BI.)(Try Power BI for free.)
    • Disporre di un account aziendale o dell'istituto di istruzione per l'invio di notifiche tramite posta elettronica.Have a work or school account for sending notification e-mails.
    • Assicurarsi che la porta 8883 sia aperta nel firewall.Make sure that port 8883 is open in your firewall. L'esempio di questa esercitazione usa il protocollo MQTT, che comunica tramite la porta 8883.The sample in this tutorial uses MQTT protocol, which communicates over port 8883. Questa porta potrebbe essere bloccata in alcuni ambienti di rete aziendali e didattici.This port may be blocked in some corporate and educational network environments. Per altre informazioni e soluzioni alternative per questo problema, vedere Connettersi all'hub IoT (MQTT).For more information and ways to work around this issue, see Connecting to IoT Hub (MQTT).

Usare Azure Cloud ShellUse Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Per avviare Azure Cloud Shell:To start Azure Cloud Shell:

OpzioneOption Esempio/CollegamentoExample/Link
Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. La selezione di Prova non comporta la copia automatica del codice in Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Esempio di Prova per Azure Cloud Shell
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Pulsante Cloud Shell nel portale di Azure

Per eseguire il codice di questo articolo in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Avviare Cloud Shell.Start Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice per copiare il codice.Select the Copy button on a code block to copy the code.

  3. Incollare il codice nella sessione di Cloud Shell premendo CTRL+MAIUSC+V in Windows e Linux o CMD+MAIUSC+V in macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Premere INVIO per eseguire il codice.Select Enter to run the code.

Creare le risorse di baseCreate base resources

Prima di poter configurare il routing dei messaggi, è necessario creare un hub IoT, un account di archiviazione e una coda del bus di servizio.Before you can configure the message routing, you need to create an IoT hub, a storage account, and a Service Bus queue. Queste risorse possono essere create usando uno dei quattro articoli disponibili nella prima parte di questa esercitazione: il portale di Azure, un modello di Azure Resource Manager, l'interfaccia della riga di comando di Azure o Azure PowerShell.These resources can be created using one of the four articles that are available for Part 1 of this tutorial: the Azure portal, an Azure Resource Manager template, the Azure CLI, or Azure PowerShell.

Usare lo stesso gruppo di risorse e lo stesso percorso per tutte le risorse.Use the same resource group and location for all of the resources. Alla fine, poi, è possibile rimuovere tutte le risorse in un unico passaggio tramite l'eliminazione del gruppo di risorse.Then at the end, you can remove all of the resources in one step by deleting the resource group.

Di seguito è riportato un riepilogo dei passaggi da eseguire nelle sezioni seguenti:Below is a summary of the steps to be performed in the following sections:

  1. Creare un gruppo di risorse.Create a resource group.

  2. Creare un hub IoT nel livello S1.Create an IoT hub in the S1 tier. Aggiungere un gruppo di consumer all'hub IoTAdd a consumer group to your IoT hub. Il gruppo di consumer è usato da Analisi di flusso di Azure quando si recuperano i dati.The consumer group is used by the Azure Stream Analytics when retrieving data.

    Nota

    Per completare questa esercitazione, è necessario utilizzare un hub IoT in un livello a pagamento.You must use an Iot hub in a paid tier to complete this tutorial. Il livello gratuito consente solo di configurare un endpoint e questa esercitazione ne richiede di più.The free tier only allows you to set up one endpoint, and this tutorial requires multiple endpoints.

  3. Creare un account di archiviazione V1 standard con la replica Standard_LRS.Create a standard V1 storage account with Standard_LRS replication.

  4. Creare uno spazio dei nomi del bus di servizio e una codaCreate a Service Bus namespace and queue.

  5. Creare un'identità del dispositivo per il dispositivo simulato che invia messaggi all'hub dell'utente.Create a device identity for the simulated device that sends messages to your hub. Salvare la chiave per la fase del test.Save the key for the testing phase. Se si crea un modello di Resource Manager, questa operazione viene eseguita dopo la distribuzione del modello.(If creating a Resource Manager template, this is done after deploying the template.)

Scaricare lo script (facoltativo)Download the script (optional)

Per la seconda parte di questa esercitazione, scaricare ed eseguire un'applicazione di Visual Studio per inviare messaggi all'hub IoT.For the second part of this tutorial, you download and run a Visual Studio application to send messages to the IoT Hub. Il download include una cartella contenente il modello di Azure Resource Manager e il file di parametri, oltre agli script dell'interfaccia della riga di comando di Azure e di PowerShell.There is a folder in the download that contains the Azure Resource Manager template and parameters file, as well as the Azure CLI and PowerShell scripts.

Se si vuole visualizzare lo script completato, scaricare gli esempi in C# di Azure IoT.If you want to view the finished script, download the Azure IoT C# Samples. Estrarre il file master.zip.Unzip the master.zip file. Lo script dell'interfaccia della riga di comando di Azure, denominato iothub_routing_cli.azcli, si trova nel percorso /iot-hub/Tutorials/Routing/SimulatedDevice/resources/.The Azure CLI script is in /iot-hub/Tutorials/Routing/SimulatedDevice/resources/ as iothub_routing_cli.azcli.

Usare l'interfaccia della riga di comando di Azure per creare le risorseUse the Azure CLI to create your resources

Copiare e incollare lo script seguente in Cloud Shell e premere INVIO.Copy and paste the script below into Cloud Shell and press Enter. Lo script viene eseguito una riga alla volta.It runs the script one line at a time. La prima sezione dello script creerà le risorse di base per questa esercitazione, come l'account di archiviazione, l'hub IoT, lo spazio dei nomi del bus di servizio e la coda del bus di servizio.This first section of the script will create the base resources for this tutorial, including the storage account, IoT Hub, Service Bus Namespace, and Service Bus queue. Mentre si procede con il resto dell'esercitazione, copiare ogni blocco dello script e incollarlo in Cloud Shell per eseguirlo.As you go through the rest of the tutorial, copy each block of script and paste it into Cloud Shell to run it.

Suggerimento

Suggerimento sul debug: questo script usa il simbolo di continuazione (barra rovesciata \) per migliorare la leggibilità.A tip about debugging: this script uses the continuation symbol (the backslash \) to make the script more readable. Se si verifica un problema durante l'esecuzione dello script, assicurarsi che la sessione Cloud Shell esegua bash e che non vi siano spazi dopo le barre rovesciate.If you have a problem running the script, make sure your Cloud Shell session is running bash and that there are no spaces after any of the backslashes.

Diversi nomi di risorse devono essere univoci globali, come il nome dell'hub IoT e il nome dell'account di archiviazione.There are several resource names that must be globally unique, such as the IoT Hub name and the storage account name. Per semplicità, a questi nomi di risorse viene aggiunto un valore alfanumerico casuale denominato randomValue.To make this easier, those resource names are appended with a random alphanumeric value called randomValue. Il valore randomValue viene generato una sola volta all'inizio dello script e viene aggiunto ai nomi delle risorse, se necessario, nell'intero script.The randomValue is generated once at the top of the script and appended to the resource names as needed throughout the script. Se non si vuole che il valore sia casuale, è possibile impostarlo su una stringa vuota o su un valore specifico.If you don't want it to be random, you can set it to an empty string or to a specific value.

Importante

Le variabili impostate nello script iniziale vengono usate anche dallo script di routing, quindi eseguire tutto lo script nella stessa sessione di Cloud Shell.The variables set in the initial script are also used by the routing script, so run all of the script in the same Cloud Shell session. Se si apre una nuova sessione per eseguire lo script per la configurazione del routing, i valori di diverse variabili risulteranno mancanti.If you open a new session to run the script for setting up the routing, several of the variables will be missing values.

# This command retrieves the subscription id of the current Azure account. 
# This field is used when setting up the routing queries.
subscriptionID=$(az account show --query id -o tsv)

# Concatenate this number onto the resources that have to be globally unique.
# You can set this to "" or to a specific value if you don't want it to be random.
# This retrieves a random value.
randomValue=$RANDOM

# This command installs the IOT Extension for Azure CLI.
# You only need to install this the first time.
# You need it to create the device identity. 
az extension add --name azure-iot

# Set the values for the resource names that 
#   don't have to be globally unique.
location=westus
resourceGroup=ContosoResources
iotHubConsumerGroup=ContosoConsumers
containerName=contosoresults
iotDeviceName=Contoso-Test-Device

# Create the resource group to be used
#   for all the resources for this tutorial.
az group create --name $resourceGroup \
    --location $location

# The IoT hub name must be globally unique, 
#   so add a random value to the end.
iotHubName=ContosoTestHub$randomValue 
echo "IoT hub name = " $iotHubName

# Create the IoT hub.
az iot hub create --name $iotHubName \
    --resource-group $resourceGroup \
    --sku S1 --location $location

# Add a consumer group to the IoT hub for the 'events' endpoint.
az iot hub consumer-group create --hub-name $iotHubName \
    --name $iotHubConsumerGroup

# The storage account name must be globally unique, 
#   so add a random value to the end.
storageAccountName=contosostorage$randomValue
echo "Storage account name = " $storageAccountName

# Create the storage account to be used as a routing destination.
az storage account create --name $storageAccountName \
    --resource-group $resourceGroup \
    --location $location \
    --sku Standard_LRS

# Get the primary storage account key. 
#    You need this to create the container.
storageAccountKey=$(az storage account keys list \
    --resource-group $resourceGroup \
    --account-name $storageAccountName \
    --query "[0].value" | tr -d '"') 

# See the value of the storage account key.
echo "storage account key = " $storageAccountKey

# Create the container in the storage account. 
az storage container create --name $containerName \
    --account-name $storageAccountName \
    --account-key $storageAccountKey \
    --public-access off

# The Service Bus namespace must be globally unique, 
#   so add a random value to the end.
sbNamespace=ContosoSBNamespace$randomValue
echo "Service Bus namespace = " $sbNamespace

# Create the Service Bus namespace.
az servicebus namespace create --resource-group $resourceGroup \
    --name $sbNamespace \
    --location $location

# The Service Bus queue name must be globally unique, 
#   so add a random value to the end.
sbQueueName=ContosoSBQueue$randomValue
echo "Service Bus queue name = " $sbQueueName

# Create the Service Bus queue to be used as a routing destination.
az servicebus queue create --name $sbQueueName \
    --namespace-name $sbNamespace \
    --resource-group $resourceGroup

# Create the IoT device identity to be used for testing.
az iot hub device-identity create --device-id $iotDeviceName \
    --hub-name $iotHubName

# Retrieve the information about the device identity, then copy the primary key to
#   Notepad. You need this to run the device simulation during the testing phase.
az iot hub device-identity show --device-id $iotDeviceName \
    --hub-name $iotHubName

Dopo aver configurato le risorse di base, è possibile configurare il routing dei messaggi.Now that the base resources are set up, you can configure the message routing.

Configurazione del routing dei messaggiSet up message routing

Si stanno per inviare messaggi a diverse risorse in base alle proprietà allegate al messaggio dal dispositivo simulato.You are going to route messages to different resources based on properties attached to the message by the simulated device. I messaggi che non sono indirizzati in modo personalizzato vengono inviati all'endpoint predefinito (messaggi/eventi).Messages that are not custom routed are sent to the default endpoint (messages/events). Nella prossima esercitazione, si inviano messaggi all'hub IoT per poi visualizzarli indirizzati a destinazioni diverse.In the next tutorial, you send messages to the IoT Hub and see them routed to the different destinations.

valoreValue RisultatoResult
level="storage"level="storage" Scrivere ad archiviazione di AzureWrite to Azure Storage.
level="critical"level="critical" Scrivere a una coda del bus di servizio.Write to a Service Bus queue. Un'app per la logica recupera il messaggio dalla coda e usa Office 365 per inviare il messaggio con posta elettronica.A Logic App retrieves the message from the queue and uses Office 365 to e-mail the message.
defaultdefault Visualizzare questi dati con Power BI.Display this data using Power BI.

Il primo passaggio consiste nell'impostare l'endpoint a cui verranno instradati i dati.The first step is to set up the endpoint to which the data will be routed. Il secondo passaggio consiste nel configurare la route di messaggi che usa tale endpoint.The second step is to set up the message route that uses that endpoint. Dopo aver configurato il routing, è possibile visualizzare gli endpoint e le route di messaggi nel portale.After setting up the routing, you can view the endpoints and message routes in the portal.

Per creare l'endpoint di routing, usare az iot hub routing-endpoint create.To create a routing endpoint, use az iot hub routing-endpoint create. Per creare la route dei messaggi per l'endpoint, usare az iot hub route create.To create the message route for the endpoint, use az iot hub route create.

Creare la route a un account di archiviazioneRoute to a storage account

Nota

È possibile scrivere i dati nell'archiviazione BLOB in formato Apache Avro, che è quello predefinito, oppure in formato JSON (anteprima).The data can be written to blob storage in either the Apache Avro format, which is the default, or JSON (preview).

La funzionalità di codifica del formato JSON è in anteprima in tutte le aree in cui è disponibile l'hub IoT, a eccezione degli Stati Uniti orientali, degli Stati Uniti occidentali e dell'Europa occidentale.The capability to encode JSON format is in preview in all regions in which IoT Hub is available, except East US, West US and West Europe. Il formato di codifica può essere impostato solo al momento della configurazione dell'endpoint di archiviazione BLOB.The encoding format can be only set at the time the blob storage endpoint is configured. Non è possibile modificare il formato di un endpoint già configurato.The format cannot be changed for an endpoint that has already been set up. Quando si usa la codifica JSON è necessario impostare contentType su JSON e contentEncoding su UTF-8 nelle proprietà di sistema del messaggio.When using JSON encoding, you must set the contentType to JSON and the contentEncoding to UTF-8 in the message system properties.

Per informazioni più dettagliate sull'uso di un endpoint di archiviazione BLOB, vedere le indicazioni sul routing all'archiviazione.For more detailed information about using a blob storage endpoint, please see guidance on routing to storage.

Configurare prima di tutto l'endpoint per l'account di archiviazione, quindi configurare la route.First, set up the endpoint for the storage account, then set up the route.

Queste sono le variabili usate dallo script che devono essere impostate all'interno della sessione di Cloud Shell:These are the variables used by the script that must be set within your Cloud Shell session:

storageConnectionString: questo valore viene recuperato dall'account di archiviazione configurato nello script precedente.storageConnectionString: This value is retrieved from the storage account set up in the previous script. Viene usato dal routing dei messaggi per accedere all'account di archiviazione.It is used by the message routing to access the storage account.

resourceGroup: esistono due occorrenze di gruppo di risorse, impostarle entrambe sul proprio gruppo di risorse.resourceGroup: There are two occurrences of resource group -- set them to your resource group.

endpoint subscriptionID: questo campo è impostato sull'ID sottoscrizione di Azure per l'endpoint.endpoint subscriptionID: This field is set to the Azure subscriptionID for the endpoint.

endpointType: il tipo di endpoint.endpointType: This field is the type of endpoint. Questo valore deve essere impostato su azurestoragecontainer, eventhub, servicebusqueue o servicebustopic.This value must be set to azurestoragecontainer, eventhub, servicebusqueue, or servicebustopic. Per questa esercitazione, impostarlo su azurestoragecontainer.For your purposes here, set it to azurestoragecontainer.

iotHubName: il nome dell'hub che eseguirà il routing.iotHubName: This field is the name of the hub that will do the routing.

containerName: il nome del contenitore nell'account di archiviazione in cui verranno scritti i dati.containerName: This field is the name of the container in the storage account to which data will be written.

encoding: questo campo può essere avro o json.encoding: This field will be either avro or json. Indica il formato dei dati archiviati.This denotes the format of the stored data.

routeName: il nome della route da configurare.routeName: This field is the name of the route you are setting up.

endpointName: il nome che identifica l'endpoint.endpointName: This field is the name identifying the endpoint.

enabled: per impostazione predefinita, questo campo è true, a indicare che la route dei messaggi deve essere abilitata dopo la creazione.enabled: This field defaults to true, indicating that the message route should be enabled after being created.

condition: la query usata per filtrare i messaggi e trovare quello inviato a questo endpoint.condition: This field is the query used to filter for the messages sent to this endpoint. La condizione di query per i messaggi da instradare nell'account di archiviazione è level="storage".The query condition for the messages being routed to storage is level="storage".

Copiare questo script, incollarlo nella finestra Cloud Shell ed eseguirlo.Copy this script and paste it into your Cloud Shell window and run it.

##### ROUTING FOR STORAGE ##### 

endpointName="ContosoStorageEndpoint"
endpointType="azurestoragecontainer"
routeName="ContosoStorageRoute"
condition='level="storage"'

# Get the connection string for the storage account.
# Adding the "-o tsv" makes it be returned without the default double quotes around it.
storageConnectionString=$(az storage account show-connection-string \
  --name $storageAccountName --query connectionString -o tsv)

Il passaggio successivo consiste nel creare l'endpoint di routing per l'account di archiviazione.The next step is to create the routing endpoint for the storage account. Verrà inoltre specificato il contenitore in cui archiviare i risultati.You also specify the container in which the results will be stored. Il contenitore è stato creato in precedenza contestualmente all'account di archiviazione.The container was created previously when the storage account was created.

# Create the routing endpoint for storage.
az iot hub routing-endpoint create \
  --connection-string $storageConnectionString \
  --endpoint-name $endpointName \
  --endpoint-resource-group $resourceGroup \
  --endpoint-subscription-id $subscriptionID \
  --endpoint-type $endpointType \
  --hub-name $iotHubName \
  --container $containerName \
  --resource-group $resourceGroup \
  --encoding avro

Creare quindi la route per l'endpoint di archiviazione.Next, create the route for the storage endpoint. La route dei messaggi indica dove inviare i messaggi che soddisfano la specifica della query.The message route designates where to send the messages that meet the query specification.

# Create the route for the storage endpoint.
az iot hub route create \
  --name $routeName \
  --hub-name $iotHubName \
  --source devicemessages \
  --resource-group $resourceGroup \
  --endpoint-name $endpointName \
  --enabled \
  --condition $condition

Creare la route alla coda del bus di servizioRoute to a Service Bus queue

Ora configurare il routing per la coda del bus di servizio.Now set up the routing for the Service Bus queue. Per recuperare la stringa di connessione per la coda del bus di servizio, è necessario creare una regola di autorizzazione con i diritti corretti definiti.To retrieve the connection string for the Service Bus queue, you must create an authorization rule that has the correct rights defined. Lo script seguente crea una regola di autorizzazione per la coda del bus di servizio denominata sbauthrule e imposta i diritti su Listen Manage Send.The following script creates an authorization rule for the Service Bus queue called sbauthrule, and sets the rights to Listen Manage Send. Dopo aver definito questa regola di autorizzazione, è possibile usarla per recuperare la stringa di connessione per la coda.Once this authorization rule is defined, you can use it to retrieve the connection string for the queue.

# Create the authorization rule for the Service Bus queue.
az servicebus queue authorization-rule create \
  --name "sbauthrule" \
  --namespace-name $sbNamespace \
  --queue-name $sbQueueName \
  --resource-group $resourceGroup \
  --rights Listen Manage Send \
  --subscription $subscriptionID

Usare ora la regola di autorizzazione per recuperare la stringa di connessione per la coda del bus di servizio.Now use the authorization rule to retrieve the connection string to the Service Bus queue.

# Get the Service Bus queue connection string.
# The "-o tsv" ensures it is returned without the default double-quotes.
sbqConnectionString=$(az servicebus queue authorization-rule keys list \
  --name "sbauthrule" \
  --namespace-name $sbNamespace \
  --queue-name $sbQueueName \
  --resource-group $resourceGroup \
  --subscription $subscriptionID \
  --query primaryConnectionString -o tsv)

# Show the Service Bus queue connection string.
echo "service bus queue connection string = " $sbqConnectionString

Configurare ora l'endpoint di routing e la route dei messaggi per la coda del bus di servizio. Queste sono le variabili usate dallo script che devono essere impostate all'interno della sessione di Cloud Shell:These are the variables used by the script that must be set within your Cloud Shell session:

endpointName: il nome che identifica l'endpoint.endpointName: This field is the name identifying the endpoint.

endpointType: il tipo di endpoint.endpointType: This field is the type of endpoint. Questo valore deve essere impostato su azurestoragecontainer, eventhub, servicebusqueue o servicebustopic.This value must be set to azurestoragecontainer, eventhub, servicebusqueue, or servicebustopic. Per questa esercitazione, impostarlo su servicebusqueue.For your purposes here, set it to servicebusqueue.

routeName: il nome della route da configurare.routeName: This field is the name of the route you are setting up.

condition: la query usata per filtrare i messaggi e trovare quello inviato a questo endpoint.condition: This field is the query used to filter for the messages sent to this endpoint. La condizione di query per i messaggi da instradare nella coda del bus di servizio è level="critical".The query condition for the messages being routed to the Service Bus queue is level="critical".

Ecco l'interfaccia della riga di comando di Azure per l'endpoint di routing e la route dei messaggi per la coda del bus di servizio.Here is the Azure CLI for the routing endpoint and the message route for the Service Bus queue.

endpointName="ContosoSBQueueEndpoint"
endpointType="ServiceBusQueue"
routeName="ContosoSBQueueRoute"
condition='level="critical"'

# Set up the routing endpoint for the Service Bus queue.
# This uses the Service Bus queue connection string.
az iot hub routing-endpoint create \
  --connection-string $sbqConnectionString \
  --endpoint-name $endpointName \
  --endpoint-resource-group $resourceGroup \
  --endpoint-subscription-id $subscriptionID \
  --endpoint-type $endpointType \
  --hub-name $iotHubName \
  --resource-group $resourceGroup 

# Set up the message route for the Service Bus queue endpoint.
az iot hub route create --name $routeName \
  --hub-name $iotHubName \
  --source-type devicemessages \
  --resource-group $resourceGroup \
  --endpoint-name $endpointName \
  --enabled \
  --condition $condition

Visualizzare il routing dei messaggi nel portaleView message routing in the portal

Dopo aver configurato gli endpoint e le route dei messaggi è possibile visualizzarne la configurazione nel portale.Now that your endpoints and message routes are set up, you can view their configuration in the portal. Accedere al portale di Azure e passare a Gruppi di risorse.Sign in to the Azure portal and go to Resource Groups. In seguito, selezionare il gruppo di risorse e quindi selezionare l'hub (il cui nome inizia per ContosoTestHub in questa esercitazione).Next, select your resource group, then select your hub (the hub name starts with ContosoTestHub in this tutorial). Viene visualizzato il riquadro dell'hub IoT.You see the IoT Hub pane.

Schermata proprietà dell'hub IoT

Nelle opzioni dell'hub IoT, selezionare Routing dei messaggi.In the options for the IoT Hub, select Message Routing. Vengono visualizzate le route correttamente configurate.The routes you have set up successfully are displayed.

Le route configurate dall'utente

Nella schermata Routing dei messaggi selezionare Endpoint personalizzati per visualizzare gli endpoint definiti per le route.On the Message routing screen, select Custom Endpoints to see the endpoints you have defined for the routes.

Gli endpoint configurati per le route

Passaggi successiviNext steps

Dopo aver configurato le risorse e le route dei messaggi, passare all'esercitazione successiva per scoprire come inviare messaggi all'hub IoT e instradarli in destinazioni diverse.Now that you have the resources set up and the message routes configured, advance to the next tutorial to learn how to send messages to the IoT hub and see them be routed to the different destinations.