Configurare la gestione degli eventi da gemello a gemello
Questo articolo illustra come inviare eventi dal gemello al gemello, in modo che quando viene aggiornato un gemello digitale nel grafo, i gemelli correlati nel grafico interessati da queste informazioni possono anche essere aggiornati. Questa gestione degli eventi consente di creare un grafico di Gemelli digitali di Azure completamente connesso, in cui i dati che arrivano in Gemelli digitali di Azure da origini esterne come hub IoT vengono propagati attraverso l'intero grafico.
Per configurare questa gestione degli eventi da gemello a gemello, si creerà una funzione di Azure che controlla gli eventi del ciclo di vita dei gemelli. La funzione riconosce gli eventi che devono influire sugli altri gemelli nel grafico e usa i dati dell'evento per aggiornare di conseguenza i gemelli interessati.
Prerequisiti
Per configurare la gestione da gemello a gemello, è necessaria un'istanza di Gemelli digitali di Azure con cui lavorare. Per istruzioni su come creare un'istanza, vedere Configurare un'istanza e l'autenticazione di Gemelli digitali di Azure. L'istanza deve contenere almeno due gemelli tra cui inviare dati.
Facoltativamente, è possibile configurare l'inserimento automatico dei dati di telemetria anche tramite hub IoT per i gemelli. Questo processo non è necessario per inviare dati dal dispositivo gemello al gemello, ma è una parte importante di una soluzione completa in cui il grafo dei gemelli è basato sui dati di telemetria dei dispositivi in tempo reale.
Inviare eventi gemelli a un endpoint
Per configurare la gestione degli eventi da gemello a gemello, iniziare creando un endpoint in Gemelli digitali di Azure e una route a tale endpoint. I gemelli sottoposti a un aggiornamento useranno la route per inviare informazioni sugli eventi di aggiornamento all'endpoint (dove Griglia di eventi può recuperarli in un secondo momento e passarli a una funzione di Azure per l'elaborazione).
Creare l'argomento Griglia di eventi
Griglia di eventi è un servizio di Azure che consente di instradare e distribuire eventi dai servizi di Azure ad altre posizioni all'interno di Azure. È possibile creare un argomento di Griglia di eventi per raccogliere determinati eventi da un'origine e quindi i sottoscrittori possono restare in ascolto sull'argomento per ricevere gli eventi man mano che arrivano.
Nell'interfaccia della riga di comando di Azure eseguire il comando seguente per creare un argomento di Griglia di eventi:
az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>
L'output di questo comando è costituito da informazioni sull'argomento di Griglia di eventi creato. Salvare il nome assegnato all'argomento di Griglia di eventi perché verrà usato in un secondo momento.
Creare l'endpoint
Creare quindi un endpoint di Griglia di eventi in Gemelli digitali di Azure, che connetterà l'istanza all'argomento griglia di eventi. Usare il comando seguente, specificando il nome dell'argomento di Griglia di eventi del passaggio precedente e gli altri campi segnaposto in base alle esigenze.
az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>
L'output di questo comando è costituito da informazioni sull'endpoint creato.
Cercare il provisioningState
campo nell'output e verificare che il valore sia "Succeeded".
Si può anche pronunciare "Provisioning", a indicare che l'endpoint è ancora in fase di creazione. In tal caso, attendere alcuni secondi ed eseguire il comando seguente per controllare lo stato dell'endpoint. Ripetere fino a quando non provisioningState
viene visualizzato il messaggio "Succeeded".
az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint>
Salvare il nome dell'endpoint perché verrà usato in un secondo momento.
Creare la route
Creare quindi una route di Gemelli digitali di Azure che invia eventi all'endpoint di Griglia di eventi creato.
Usare il comando dell'interfaccia della riga di comando seguente, specificando il nome dell'endpoint del passaggio precedente e gli altri campi segnaposto in base alle esigenze. Questo comando inoltra tutti gli eventi che si verificano nel grafico dei gemelli.
Suggerimento
È possibile limitare gli eventi solo a quelli specifici, se necessario, usando i filtri.
az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>
L'output di questo comando è costituito da alcune informazioni sulla route creata.
Nota
È necessario completare il provisioning degli endpoint (del passaggio precedente) prima di poter configurare una route di eventi che li usi. Se la creazione della route non riesce perché gli endpoint non sono pronti, attendere qualche minuto e riprovare.
Creare una funzione di Azure per aggiornare i dispositivi gemelli
Creare quindi una funzione di Azure in ascolto sull'endpoint e ricevere gli eventi gemelli inviati tramite la route. La logica della funzione deve usare le informazioni negli eventi per determinare quali altri gemelli devono essere aggiornati e quindi eseguire gli aggiornamenti.
Creare prima di tutto un nuovo progetto di Funzioni di Azure.
A tale scopo, usare Visual Studio (per istruzioni, vedere Sviluppare Funzioni di Azure con Visual Studio), Visual Studio Code (per istruzioni, vedere Creare una funzione C# in Azure con Visual Studio Code) o l'interfaccia della riga di comando di Azure (per istruzioni, vedere Creare una funzione C# in Azure dalla riga di comando).
Aggiungere i pacchetti seguenti al progetto (è possibile usare Gestione pacchetti NuGet di Visual Studio o il comando dotnet add package in uno strumento da riga di comando).
Compilare la logica della funzione. È possibile visualizzare il codice della funzione di esempio per diversi scenari nel repository azure-digital-twins-getting-started per iniziare.
Pubblicare la funzione in Azure usando il metodo preferito.
Per istruzioni su come pubblicare la funzione con Visual Studio, vedere Sviluppare Funzioni di Azure con Visual Studio. Per istruzioni su come pubblicare la funzione con Visual Studio Code, vedere Creare una funzione C# in Azure con Visual Studio Code. Per istruzioni su come pubblicare la funzione usando l'interfaccia della riga di comando di Azure, vedere Creare una funzione C# in Azure dalla riga di comando.
Al termine del processo di pubblicazione della funzione, è possibile usare questo comando dell'interfaccia della riga di comando di Azure per verificare che la pubblicazione abbia avuto esito positivo. Sono disponibili segnaposto per il gruppo di risorse, il nome dell'app per le funzioni e il nome della funzione specifica. Il comando stampa le informazioni sulla funzione.
az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name <your-function>
Configurare l'app per le funzioni
Prima che la funzione possa accedere a Gemelli digitali di Azure, sono necessarie alcune informazioni sull'istanza e sull'autorizzazione per accedervi. In questa sezione si assegnerà un ruolo di accesso per la funzione e si configureranno le impostazioni dell'applicazione in modo che possa trovare e accedere all'istanza.
Eseguire i comandi seguenti in Azure Cloud Shell o in un'interfaccia della riga di comando di Azure locale.
Nota
Questa sezione deve essere completata da un utente di Azure che dispone delle autorizzazioni per gestire l'accesso utente alle risorse di Azure, inclusa la concessione e la delega delle autorizzazioni. I ruoli comuni che soddisfano questo requisito sono proprietario, amministratore account o la combinazione di amministratore accesso utenti e collaboratore. Per altre informazioni sui requisiti di autorizzazione per i ruoli di Gemelli digitali di Azure, vedere Configurare un'istanza e l'autenticazione.
Assegnare un ruolo di accesso
La funzione di Azure richiede il passaggio di un token di connessione. Per assicurarsi che il token di connessione venga passato, concedere all'app per le funzioni il ruolo Proprietario dati di Gemelli digitali di Azure per l'istanza di Gemelli digitali di Azure, che consentirà all'app per le funzioni di eseguire attività del piano dati nell'istanza.
Usare il comando seguente per creare un'identità gestita dal sistema per la funzione ( se la funzione ne ha già una, questo comando ne stamperà i dettagli). Prendere nota del
principalId
campo nell'output. Questo ID verrà usato per fare riferimento alla funzione in modo che sia possibile concedere le autorizzazioni nel passaggio successivo.az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
Usare il
principalId
valore nel comando seguente per assegnare alla funzione il ruolo Proprietario dati di Gemelli digitali di Azure per l'istanza di Gemelli digitali di Azure.az dt role-assignment create --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
Configurare le impostazioni dell'applicazione
Rendere quindi accessibile l'URL dell'istanza di Gemelli digitali di Azure alla funzione impostando una variabile di ambiente.
Suggerimento
L'URL dell'istanza di Gemelli digitali di Azure viene creato aggiungendo https:// all'inizio del nome host dell'istanza. Per visualizzare il nome host, insieme a tutte le proprietà dell'istanza, eseguire az dt show --dt-name <your-Azure-Digital-Twins-instance>
.
Il comando seguente imposta una variabile di ambiente per l'URL dell'istanza che verrà usata dalla funzione ogni volta che deve accedere all'istanza.
az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"
Connettere la funzione all'endpoint
Successivamente, sottoscrivere la funzione di Azure all'endpoint di Griglia di eventi creato in precedenza. In questo modo, i dati possono essere trasmessi da un gemello aggiornato tramite l'argomento Griglia di eventi alla funzione, che può usare le informazioni sull'evento per aggiornare gli altri gemelli in base alle esigenze.
Per sottoscrivere la funzione di Azure, si creerà una sottoscrizione di Griglia di eventi che invia i dati dall'argomento Griglia di eventi creato in precedenza alla funzione di Azure.
Usare il comando seguente dell'interfaccia della riga di comando, inserendo i segnaposto per l'ID sottoscrizione, il gruppo di risorse, l'app per le funzioni e il nome della funzione.
az eventgrid event-subscription create --name <name-for-your-event-subscription> --source-resource-id /subscriptions/<subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app-name>/functions/<function-name>
La funzione può ora ricevere eventi tramite l'argomento di Griglia di eventi. La configurazione del flusso di dati è stata completata.
Testare e verificare i risultati
L'ultimo passaggio consiste nel verificare che il flusso funzioni, aggiornando un gemello e verificando che i gemelli correlati vengano aggiornati in base alla logica nella funzione di Azure.
Per avviare il processo, aggiornare il gemello che rappresenta l'origine del flusso di eventi. È possibile usare l'interfaccia della riga di comando di Azure, Azure Digital Twins SDK o le API REST di Gemelli digitali di Azure per eseguire l'aggiornamento.
Eseguire quindi una query sull'istanza di Gemelli digitali di Azure per il gemello correlato. È possibile usare l'interfaccia della riga di comando di Azure o le API REST e l'SDK di Gemelli digitali di Azure. Verificare che il gemello abbia ricevuto i dati e aggiornato come previsto.
Passaggi successivi
In questo articolo viene configurata la gestione degli eventi da gemello a gemello in Gemelli digitali di Azure. Configurare quindi una funzione di Azure per attivare questo flusso automaticamente in base ai dati di telemetria in ingresso da dispositivi hub IoT: inserire i dati di telemetria da hub IoT.