Creare ed eliminare route ed endpoint usando Azure Resource Manager
Questo articolo illustra come esportare il modello di hub IoT di Azure, aggiungere una route all'hub IoT e quindi ridistribuire il modello nell'hub IoT usando l'interfaccia della riga di comando di Azure o Azure PowerShell. Usare un modello di Azure Resource Manager per creare route ed endpoint. hub IoT supporta i servizi di Azure seguenti come endpoint:
- Contenitori di archiviazione
- Hub eventi di
- Code del bus di servizio
- Argomenti del bus di servizio
- Cosmos DB
I modelli di Azure Resource Manager sono utili quando si vogliono definire le risorse usando un file JSON. Ogni risorsa di Azure ha un modello che definisce i componenti usati in tale risorsa. È possibile esportare tutti i modelli di risorse di Azure.
Importante
Quando si usa un modello di Resource Manager per distribuire una risorsa, il modello sostituisce qualsiasi risorsa esistente del tipo che si sta distribuendo.
Quando si crea un nuovo hub IoT, la sovrascrittura di una risorsa distribuita esistente non è un problema. Per creare un nuovo hub IoT, è possibile usare un modello di base con le proprietà necessarie anziché esportare un modello esistente da un hub IoT già distribuito.
Tuttavia, se si aggiunge una route a un hub IoT esistente, usare un modello esportato dall'hub IoT per assicurarsi che tutte le risorse e le proprietà esistenti rimangano connesse dopo la distribuzione del modello aggiornato. Le risorse già distribuite non verranno sostituite. Ad esempio, un modello di Resource Manager esportato distribuito in precedenza potrebbe contenere informazioni di archiviazione per l'hub IoT se è stato connesso all'archiviazione.
Per altre informazioni sul funzionamento del routing nell'hub IoT, vedere Usare il routing dei messaggi dell'hub IoT per inviare messaggi da dispositivo a cloud a endpoint differenti. Per eseguire la procedura per configurare una route che invia messaggi all'archiviazione e quindi eseguire il test su un dispositivo simulato, vedere Esercitazione: Inviare dati del dispositivo a Archiviazione di Azure usando hub IoT routing dei messaggi.
Prerequisiti
Esaminare i prerequisiti per questo articolo in base al tipo di endpoint a cui si vuole indirizzare i messaggi.
Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Un hub IoT. Se non si ha un hub, è possibile seguire la procedura per creare un hub IoT.
Una risorsa di Hub eventi (con contenitore). Se è necessario creare una nuova risorsa di Hub eventi, vedere Avvio rapido: Creare un hub eventi usando un modello di Resource Manager.
(Scelta consigliata) Identità gestita con autorizzazioni di controllo degli accessi in base al ruolo per lo spazio dei nomi di Hub eventi. Per altre informazioni, vedere Autenticare un'identità gestita con Microsoft Entra ID per accedere alle risorse di Hub eventi.
Modello di Azure Resource Manager
Questo articolo usa un modello di Azure Resource Manager nel portale di Azure per usare hub IoT e altri servizi di Azure. Per altre informazioni su come usare i modelli di Resource Manager, vedere Che cosa sono i modelli di Azure Resource Manager?
Creare una route
Nell'hub IoT è possibile creare una route per inviare messaggi o acquisire eventi. Ogni route ha un'origine dati e un endpoint. L'origine dati è la posizione in cui hanno origine i messaggi o i log eventi. L'endpoint è la posizione in cui finiscono i messaggi o i log eventi. È possibile scegliere le posizioni per l'origine dati e l'endpoint quando si crea una nuova route nell'hub IoT. Successivamente, è possibile usare le query di routing per filtrare i messaggi o gli eventi prima del passaggio agli all'endpoint.
È possibile usare un hub eventi, una coda o un argomento bus di servizio o un account di archiviazione di Azure come endpoint per la route dell'hub IoT. Il servizio usato per creare l'endpoint deve prima esistere nell'account Azure.
Esportare il modello di Resource Manager dell'hub IoT
Prima di tutto, esportare un modello di Resource Manager dall'hub IoT. Esportando il modello dall'hub IoT, è possibile aggiungere risorse endpoint e route e ridistribuire senza perdere l'impostazione esistente.
Nel portale di Azure passare all'hub IoT. Nel menu delle risorse in Automazione selezionare Esporta modello.
Nella scheda Modello in Esporta modello completare questa procedura:
Visualizzare il file JSON generato per l'hub IoT.
Deselezionare la casella di controllo Includi parametri .
Selezionare Scarica per scaricare una copia locale del file JSON.
Il modello include diversi segnaposto che è possibile usare per aggiungere funzionalità o servizi all'hub IoT. Per questo articolo, aggiungere valori solo alle proprietà in o annidate in
routing
.
Aggiungere un endpoint al modello
Ogni route punta a un endpoint, in cui i messaggi o i log eventi finiscono. Creare un endpoint nell'hub IoT a cui può fare riferimento la route. È possibile usare un hub eventi, una coda o un argomento bus di servizio, un account di archiviazione di Azure o un contenitore Cosmos DB come endpoint per la route dell'hub IoT. Il servizio usato per creare l'endpoint deve prima esistere nell'account Azure.
L'hub IoT necessita delle autorizzazioni di accesso per qualsiasi risorsa endpoint a cui invia messaggi o log. È possibile fornire l'accesso usando identità gestite e MICROSOFT Entra ID o usando stringa di connessione. Microsoft consiglia di eseguire l'autenticazione con Entra ID come opzione più sicura.
Aggiungere un endpoint di Hub eventi al modello di Resource Manager. Per altre informazioni, vedere RoutingEventHubProperties del modello di Azure Resource Manager.
Nel file JSON trovare la
"endpoints": []
proprietà annidata in"routing"
.Sostituire la
"endpoints": []
riga con il codice JSON seguente:"endpoints": { "serviceBusQueues": [], "serviceBusTopics": [], "eventHubs": [ { "endpointUri": "", "entityPath": "", "authenticationType": "identityBased", "identity": { "userAssignedIdentity": "" }, "name": "", "id": "", "subscriptionId": "", "resourceGroup": "" } ], "storageContainers": [], "cosmosDBSqlContainers": [] },
Aggiornare il codice JSON con le informazioni seguenti sulla risorsa di Hub eventi:
Proprietà valore endpointUri (Se il tipo di autenticazione è identityBased
; in caso contrario, eliminare. Nome host dello spazio dei nomi di Hub eventi nel formatosb://<eventhubs_namespace_name>.servicebus.windows.net
entityPath (Se il tipo di autenticazione è identityBased
; in caso contrario, eliminare. Nome dell'hub eventi.authenticationType identityBased
okeyBased
. Microsoft consiglia l'autenticazione basata sull'identità come opzione più sicura.identity Se il tipo di autenticazione è identityBased
.) È possibile usare un'identità gestita assegnata dall'utente o un'identità gestita assegnata dal sistema se l'hub IoT identità gestita assegnata dal sistema è abilitata.
Per l'utente assegnato: ID esterno dell'identità gestita con autorizzazioni di accesso all'hub eventi nel formato/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>
.
Per assegnata dal sistema: lasciare il parametro Identity come elenco vuoto. Ad esempio,"identity": {},
connectionString Se il tipo di autenticazione è keyBased
.) Il stringa di connessione primario da uno dei criteri di accesso condiviso dell'hub eventi nel formato<connection_string>;EntityPath=<event_hub_name>.
È possibile recuperare il valore stringa di connessione dal portale di Azure, quindi aggiungere il percorso dell'entità.name Specificare un valore univoco per assegnare un nome all'endpoint. id Lasciare una stringa vuota. Il servizio di Azure fornisce un valore quando si crea l'endpoint. subscriptionId ID della sottoscrizione che contiene l'hub eventi. resourceGroup Nome del gruppo di risorse che contiene l'hub eventi. Suggerimento
Per la gestione dei segreti, è possibile creare un file di parametri o Usare Azure Key Vault per passare i valori dei parametri protetti durante la distribuzione.
Aggiungere una route al modello
Aggiungere una definizione di route al modello di Resource Manager. Per altre informazioni, vedere RouteProperties del modello di Azure Resource Manager.
Nel file JSON trovare la
"routes": []
proprietà annidata in"routing"
e aggiungere una nuova route.Attenzione
Se si sostituiscono valori esistenti per
"routes"
con i valori di route usati negli esempi di codice seguenti, le route esistenti vengono rimosse durante la distribuzione. Per mantenere le route esistenti, aggiungere il nuovo oggetto route all'elenco"routes"
."routes": [ { "name": "", "source": "DeviceConnectionStateEvents", "condition": "true", "endpointNames": [ "" ], "isEnabled": true } ],
Aggiornare il codice JSON con le informazioni seguenti sulla risorsa Cosmos DB:
Proprietà valore name Specificare un valore univoco per assegnare un nome alla route. source Selezionare l'origine del messaggio o dei log eventi da instradare all'endpoint. Per un elenco delle opzioni di origine, vedere az iot hub route. condizione Query per filtrare i dati di origine. Se non è necessaria alcuna condizione, dire true
. Per altre informazioni, vedere Sintassi delle query di routing dei messaggi dell'hub IoT.endpointNames Nome dell'endpoint esistente in cui verranno indirizzati questi dati. Attualmente è consentito un solo endpoint. isEnabled Impostare su true
per abilitare la route ofalse
disabilitare la route.Salvare il file JSON.
Distribuire il modello di Resource Manager
Dopo aver aggiunto il nuovo endpoint e la route al modello di Resource Manager, è ora possibile distribuire di nuovo il file JSON nell'hub IoT.
Distribuzione locale
az deployment group create \
--name my-iot-hub-template \
--resource-group my-resource-group \
--template-file "my\path\to\template.json"
Distribuzione di Azure Cloud Shell
Poiché Azure Cloud Shell viene eseguito in un Web browser, è possibile caricare il file modello prima di eseguire il comando di distribuzione. Dopo aver caricato il file, è necessario solo il nome del file modello (anziché l'intero percorso del file) da usare nel template-file
parametro .
az deployment group create \
--name my-iot-hub-template \
--resource-group my-resource-group \
--template-file "template.json"
Nota
Se la distribuzione non viene eseguita, utilizzare l'opzione -verbose
per ottenere informazioni sulle risorse create. Usare l'opzione -debug
per ottenere ulteriori informazioni su come eseguire il debug.
Verificare la distribuzione
Per verificare che il modello sia stato distribuito correttamente in Azure, nella portale di Azure passare alla risorsa del gruppo di risorse. Nel menu delle risorse in Impostazioni selezionare Distribuzioni per visualizzare il modello in un elenco delle distribuzioni.
Per visualizzare la nuova route nel portale di Azure, passare alla risorsa hub IoT. Nel riquadro Routing messaggi, nella scheda Route, verificare che la route sia elencata.
Passaggi successivi
In questo articolo di istruzioni si è appreso come creare una route e un endpoint per Hub eventi, code e argomenti del Bus di servizio e Archiviazione di Azure.
Per altre informazioni sul routing dei messaggi, vedere Esercitazione: Inviare dati dei dispositivi ad Archiviazione di Azure usando il routing dei messaggi dell'hub IoT. Nell'esercitazione viene creata una route di archiviazione che viene testata con un dispositivo nell'hub IoT.