Creare ed eliminare route ed endpoint usando l'interfaccia della riga di comando di Azure

Questo articolo illustra come gestire route ed endpoint dell'hub IoT di Azure usando l'interfaccia della riga di comando di Azure. Informazioni su come usare l'interfaccia della riga di comando di Azure per creare route ed endpoint per Hub eventi di Azure, code e argomenti del bus di servizio di Azure, Archiviazione di Azure e Cosmos DB.

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 diversi. Per informazioni dettagliate sulla configurazione di una route che invia messaggi all'archiviazione e quindi sui test in un dispositivo simulato, vedere Esercitazione: Inviare i dati dei dispositivi ad Archiviazione di Azure usando il routing dei messaggi dell'hub IoT.

Prerequisiti

Le procedure descritte nell'articolo usano le risorse seguenti:

  • L'interfaccia della riga di comando di Azure
  • Un hub IoT
  • Un servizio endpoint in Azure

Interfaccia della riga di comando di Azure

Questo articolo illustra l'uso dell'interfaccia della riga di comando di Azure per usare l'hub IoT e altri servizi di Azure. È possibile scegliere come accedere all'interfaccia della riga di comando di Azure:

Hub IoT

Creare un hub IoT nella propria sottoscrizione di Azure. Se non si ha ancora un hub, è possibile seguire la procedura descritta in Creare un hub IoT.

Servizio endpoint

È necessario almeno un altro servizio di Azure da usare come endpoint per la route. L'endpoint riceve messaggi del dispositivo e registri eventi.

Decidere quale servizio di Azure usare come endpoint per ricevere i dati degli eventi e del dispositivo con routing: un hub eventi, una coda o un argomento del servizio, un account di archiviazione o un contenitore Cosmos DB. Per il servizio che si sceglie di usare, completare i passaggi per creare un servizio endpoint.

  1. Creare uno spazio dei nomi di Hub eventi e un hub eventi. Per altre informazioni, vedere Avvio rapido: Creare un hub eventi usando l'interfaccia della riga di comando di Azure.

  2. Creare una regola di autorizzazione che verrà usata per concedere all'hub IoT l'autorizzazione per inviare dati all'hub eventi.

    Suggerimento

    Il valore RootManageSharedAccessKey del parametro name è il nome predefinito che consente gestire, inviare, ascoltare attestazioni (accesso). Se si desidera limitare le attestazioni, assegnare al parametro name il proprio nome univoco e includere il flag --rights seguito da una delle attestazioni. Ad esempio: --name my-name --rights Send.

    az eventhubs eventhub authorization-rule create --resource-group my-resource-group --namespace-name my-routing-namespace --eventhub-name my-event-hubs --name RootManageSharedAccessKey
    

    Per altre informazioni, vedere Autorizzare l'accesso a Hub eventi di Azure.

Creare un endpoint

Tutte le route dell'hub IoT puntano a un endpoint, che riceverà i dati degli eventi e del dispositivo con routing. Più route possono puntare allo stesso endpoint. Attualmente, l'hub IoT supporta endpoint per Hub eventi, code o argomenti del bus di servizio, archiviazione e Cosmos DB. Per creare l'endpoint, è necessario che esista un'istanza del servizio usata per l'endpoint nella sottoscrizione di Azure.

Nota

Questo articolo usa il gruppo di comandi az iot hub message-endpoint, introdotto nella versione 0.19.0 dell'estensione azure-iot per l'interfaccia della riga di comando di Azure. Le versioni precedenti dell'estensione azure-iot usavano il gruppo di comandi az iot hub routing-endpoint, che è simile ed è ancora supportato ma non supporta la creazione di endpoint Cosmos DB.

Per eseguire l'aggiornamento all'ultima versione dell'estensione azure-iot, usare il comando seguente:

az extension update --name azure-iot

Per creare un endpoint di Hub eventi, usare la regola di autorizzazione creata nei prerequisiti.

  1. Usare il comando az eventhubs eventhub authorization-rule keys list per elencare la regola di autorizzazione. Specificare i valori seguenti per i parametri segnaposto:

    parameter value
    eventhub_group Gruppo di risorse dell'hub eventi.
    eventhub_namespace Nome dello spazio dei nomi di Hub eventi.
    eventhub_name Nome dell'hub eventi.
    rule_name Nome della regola di autorizzazione per l'hub eventi. Se è stato copiato l'esempio nei prerequisiti, questo nome è RootManageSharedAccessKey.
    az eventhubs eventhub authorization-rule keys list --resource-group {eventhub_group} --namespace-name {eventhub_namespace} --eventhub-name my-event-hubs --name {rule_name}
    
  2. Copiare la stringa di connessione dell'hub eventi dall'output.

  3. Usare il comando az iot hub message-endpoint create eventhub per creare l'endpoint personalizzato. Specificare i valori seguenti per i parametri segnaposto:

    parameter value
    iothub_name Nome dell'hub IoT in cui viene creato questo endpoint.
    endpoint_name Un nome univoco per il nuovo endpoint.
    eventhub_subscription ID sottoscrizione dell'hub eventi. Questo argomento può essere omesso se l'hub eventi si trova nella stessa sottoscrizione dell'hub IoT.
    eventhub_group Gruppo di risorse dell'hub eventi. Questo argomento può essere omesso se l'hub eventi si trova nello stesso gruppo di risorse dell'hub IoT.
    eventhub_connection_string La stringa di connessione copiata dalla regola di autorizzazione dell'hub eventi.
    az iot hub message-endpoint create eventhub --hub-name {iothub_name} --endpoint-name {endpoint_name}  --connection-string "{eventhub_connection_string}" --endpoint-subscription-id {eventhub_subscription} --endpoint-resource-group {eventhub_group}
    

Eliminare un endpoint

Per eliminare un endpoint dall'hub IoT, usare il comando az iot hub message-endpoint delete. Con questo comando è possibile eliminare un singolo endpoint, eliminare tutti gli endpoint di un singolo tipo o eliminare tutti gli endpoint da un hub.

Ad esempio, il comando seguente elimina tutti gli endpoint in un hub IoT che puntano alle risorse di archiviazione:

az iot hub message-endpoint delete --hub-name {iothub_name} --endpoint-type storage-container

Creare una route dell'hub IoT

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. Facoltativamente, è possibile Aggiungere query alle route di messaggi per filtrare messaggi o eventi prima di passare all'endpoint.

Nota

Questo articolo usa il gruppo di comandi az iot hub message-route, introdotto nella versione 0.19.0 dell'estensione azure-iot per l'interfaccia della riga di comando di Azure. Le versioni precedenti dell'estensione azure-iot usavano il gruppo di comandi az iot hub route, che è simile ed è ancora supportato.

Per eseguire l'aggiornamento all'ultima versione dell'estensione azure-iot, usare il comando seguente:

az extension update --name azure-iot
  1. Usare il comando az iot hub message-route create per creare una nuova route dell'hub IoT usando tale endpoint. Specificare i valori seguenti per i parametri segnaposto:

    parameter value
    iothub_name Il nome dell'hub IoT in cui viene creata questa route.
    route_name Un nome univoco per la nuova route.
    endpoint_name Nome dell'endpoint a cui la route invierà i dati.
    data_source L'origine della route. I valori accettati sono: deviceconnectionstateevents, devicejoblifecycleevents, devicelifecycleevents, devicemessages, digitaltwinchangeevents, invalid o twinchangeevents.
    az iot hub message-route create --hub-name {iothub_name} --route-name {route_name} --endpoint-name {endpoint_name} --source {data_source}
    
  2. Per assicurarsi che la nuova route si trovi nell'hub IoT, usare il comando az iot hub message-route list per visualizzare tutte le route nel proprio hub IoT:

    az iot hub message-route list --hub-name {iothub_name}
    

    Verrà visualizzata una risposta nell'interfaccia della riga di comando di Azure simile a questo esempio:

    [
       {
         "condition": "true",
         "endpointNames": [
           "endpoint_name"
         ],
         "isEnabled": true,
         "name": "route_name",
         "source": "DeviceConnectionStateEvents"
       }
    ]
    

Aggiornare una route dell'hub IoT

È possibile aggiornare alcune proprietà di una route dopo che è stata creata. È possibile modificare l'origine, l'endpoint, la condizione o lo stato abilitato di una route esistente.

Usare il comando az iot hub message-route show per visualizzare i dettagli di una route.

az iot hub message-route show --hub-name {iothub_name} --route-name {route_name}

Usare il comando az iot hub message-route update per aggiornare le proprietà di una route. Ad esempio, il comando seguente aggiorna l'origine della route.

az iot hub message-route update --hub-name {iothub_name} --route-name {route_name} --source devicejoblifecycleevents

Eliminare una route dell'hub IoT

Usare comando az iot hub message-route delete per eliminare una route dall'hub IoT.

L'eliminazione di una route non comporta l'eliminazione dell'endpoint perché altre route possono puntare allo stesso endpoint. Se si desidera eliminare un endpoint, l'operazione può essere eseguita separatamente dall'eliminazione di una route.

az iot hub message-route delete --hub-name {iothub_name} --route-name {route_name}

Gestire la route di fallback

La route di fallback invia tutti i messaggi dall'origine devicemessages che non soddisfano le condizioni di query su una delle route esistenti all'endpoint predefinito.

Usare il comando az iot hub message-route fallback show per visualizzare lo stato della route di fallback nell'hub IoT.

az iot hub message-route fallback show --hub-name {iothub_name}

Usare il comando az iot hub message-route fallback set per abilitare o disabilitare la route di fallback nell'hub IoT.

az iot hub message-route fallback set --hub-name {iothub_name} --enabled {true_false}

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.