Avvio rapido: Instradare eventi personalizzati all'endpoint Web con l'interfaccia della riga di comando di Azure e Griglia di eventi
In questo articolo si usa l'interfaccia della riga di comando di Azure per creare un argomento personalizzato in Griglia di eventi di Azure, sottoscrivere l'argomento personalizzato e attivare l'evento per visualizzare il risultato.
Nota
Se non si ha Griglia di eventi di Azure, vedere What's Griglia di eventi di Azure to get an overview of the service before through this tutorial (Cosa Griglia di eventi di Azure per ottenere una panoramica del servizio prima di eseguire questa esercitazione.
In genere, si inviano eventi a un endpoint che elabora i dati dell'evento e intraprende azioni. Per maggiore semplicità, tuttavia, in questo articolo gli eventi vengono inviati a un'app Web che raccoglie e visualizza i messaggi.
Al termine, i dati degli eventi saranno stati inviati all'app Web.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Prerequisiti
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Questo articolo richiede la versione 2.0.70 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Creare un gruppo di risorse
Gli argomenti della griglia di eventi sono risorse di Azure e devono essere inseriti in un gruppo di risorse di Azure. Il gruppo di risorse è una raccolta logica in cui vengono distribuite e gestite le risorse di Azure.
Creare un gruppo di risorse con il comando az group create. L'esempio seguente crea un gruppo di risorse denominato gridResourceGroup nella località westus2. Se si seleziona Prova, si vedrà la finestra Azure Cloud Shell nel riquadro di destra. Quindi, selezionare Copia per copiare il comando e incollarlo nella finestra Azure Cloud Shell e premere INVIO per eseguire il comando. Cambiare il nome del gruppo di risorse e la posizione, se del caso.
az group create --name gridResourceGroup --location westus2
Abilitare il provider di risorse di Griglia di eventi
Se Griglia di eventi non è stato usato in precedenza nella sottoscrizione di Azure, potrebbe essere necessario registrare il provider di risorse di Griglia di eventi. Eseguire il comando seguente per registrare il provider:
az provider register --namespace Microsoft.EventGrid
La registrazione può richiedere qualche secondo. Eseguire il comando seguente per verificare lo stato:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Quando
registrationState
èRegistered
, è possibile continuare.
Creare un argomento personalizzato
Un argomento di Griglia di eventi fornisce un endpoint definito dall'utente in cui vengono pubblicati gli eventi. L'esempio seguente crea l'argomento personalizzato nel gruppo di risorse usando Bash in Azure Cloud Shell. Sostituire <your-topic-name>
con un nome univoco per l'argomento. Il nome dell'argomento personalizzato deve essere univoco perché fa parte della voce Domain Name System (DNS). Deve inoltre essere un nome di lunghezza compresa tra 3 e 50 caratteri, contenente solo valori compresi tra a e z, A e Z, 0 e 9 e "-".
Copiare il comando seguente, specificare un nome per l'argomento e premere INVIO per eseguire il comando.
topicname=<your-topic-name>
Per creare un argomento personalizzato usare il comando
az eventgrid topic create
.az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Creare un endpoint del messaggio
Prima di sottoscrivere l'argomento personalizzato, creare l'endpoint per il messaggio dell'evento. L'endpoint richiede in genere azioni basate sui dati degli eventi. Per semplificare questo avvio rapido, si distribuisce un'app Web preesistente che visualizza i messaggi di evento. La soluzione distribuita include un piano di servizio app, un'app Web del servizio app e codice sorgente da GitHub.
Copiare il comando seguente, specificare un nome per l'app Web (campione di Visualizzatore Griglia di eventi) e premere INVIO per eseguire il comando. Sostituire
<your-site-name>
con un nome univoco per l'app Web. Il nome dell'app Web deve essere univoco perché fa parte della voce DNS.sitename=<your-site-name>
Eseguire
az deployment group create
per distribuire l'app Web usando un modello di Azure Resource Manager.az deployment group create \ --resource-group gridResourceGroup \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
Il completamento della distribuzione può richiedere alcuni minuti. Dopo il completamento della distribuzione, visualizzare l'app Web per assicurarsi che sia in esecuzione. In un Web browser passare a: https://<your-site-name>.azurewebsites.net
Il sito dovrebbe essere visibile senza messaggi attualmente visualizzati.
Sottoscrivere un argomento personalizzato
È possibile sottoscrivere un argomento di Griglia di eventi per indicare a Griglia di eventi gli eventi di cui si vuole tenere traccia e dove inviare tali eventi. L'esempio seguente sottoscrive l'argomento personalizzato creato e passa l'URL dall'app Web come endpoint per la notifica dell'evento.
L'endpoint per l'app Web deve includere il suffisso /api/updates/
.
Copiare il comando seguente, sostituire
$sitename
con il nome dell'app Web creata nel passaggio precedente e premere INVIO per eseguire il comando.endpoint=https://$sitename.azurewebsites.net/api/updates
Eseguire il comando seguente per ottenere l'ID risorsa dell'argomento creato.
topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
Eseguire il comando seguente per creare una sottoscrizione all'argomento personalizzato usando l'endpoint.
az eventgrid event-subscription create \ --source-resource-id $topicresourceid \ --name demoViewerSub \ --endpoint $endpoint
Visualizzare nuovamente l'app Web e notare che all'app è stato inviato un evento di convalida della sottoscrizione. Selezionare l'icona a forma di occhio per espandere i dati dell'evento. Griglia di eventi invia l'evento di convalida in modo che l'endpoint possa verificare che voglia ricevere i dati dell'evento. L'app Web include il codice per la convalida della sottoscrizione.
Inviare un evento all'argomento personalizzato
Attivare un evento per vedere come la Griglia di eventi distribuisce il messaggio nell'endpoint. Ottenere prima di tutto l'URL e la chiave per l'argomento personalizzato.
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Per semplificare questo articolo, si useranno dati di evento di esempio da inviare all'argomento personalizzato. In genere, i dati dell'evento vengono inviati da un'applicazione o un servizio di Azure. L'esempio seguente crea i dati di esempio dell'evento:
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
L'elemento data
del JSON è il payload dell'evento. Questo campo accetta qualsiasi JSON ben formato. È anche possibile usare il campo oggetto per il filtro e il routing avanzato.
CURL è un'utilità che invia richieste HTTP. In questo articolo CURL viene usato per inviare l'evento all'argomento.
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
È stato attivato l'evento e Griglia di eventi ha inviato il messaggio all'endpoint configurato al momento della sottoscrizione. Visualizzare l'app Web per vedere l'evento appena inviato.
[{
"id": "1807",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "2017-08-10T21:03:07+00:00",
"data": {
"make": "Ducati",
"model": "Monster"
},
"dataVersion": "1.0",
"metadataVersion": "1",
"topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]
Pulire le risorse
Se si intende continuare a usare questo evento o l'app per visualizzare gli eventi, non è necessario pulire le risorse create in questo articolo. In caso contrario, usare il comando seguente per eliminare le risorse create con questo articolo.
az group delete --name gridResourceGroup
Passaggi successivi
Ora che si è appreso come creare argomenti e sottoscrizioni di eventi, è possibile approfondire le operazioni possibili con la griglia di eventi:
- Informazioni sulla griglia di eventi
- Indirizzare gli eventi di archiviazione BLOB a un endpoint Web personalizzato (anteprima)
- Monitorare le modifiche alla macchina virtuale con la griglia di eventi di Azure e le app per la logica
- Trasmettere Big Data a un data warehouse
Vedere i campioni seguenti per scoprire di più sulla pubblicazione di eventi a e l'utilizzo di eventi da Griglia di eventi usando diversi linguaggi di programmazione.