Indirizzare eventi personalizzati all'endpoint Web con il portale di Azure e l'Griglia di eventi di Azure

Griglia di eventi è un servizio completamente gestito che consente di gestire facilmente gli eventi in molti servizi e applicazioni di Azure diversi. Semplifica la creazione di applicazioni basate su eventi e serverless. Per una panoramica del servizio, vedere Panoramica di Griglia di eventi.

In questo articolo viene usato il portale di Azure per eseguire le attività seguenti:

  1. Creare un argomento personalizzato.
  2. Sottoscrivere l'argomento personalizzato.
  3. Attivare l'evento.
  4. Visualizzare il risultato. 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.

Prerequisiti

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Registrare il provider di risorse di Griglia di eventi

Se non si è usato Griglia di eventi prima, sarà necessario registrare il provider di risorse Griglia di eventi. Se è già stato usato Griglia di eventi, passare alla sezione successiva.

Nella portale di Azure seguire questa procedura:

  1. Nel menu a sinistra selezionare Sottoscrizioni.

  2. Selezionare la sottoscrizione da usare per Griglia di eventi dall'elenco delle sottoscrizioni.

  3. Nella pagina Sottoscrizione selezionare Provider di risorse in Impostazioni nel menu a sinistra.

  4. Cercare Microsoft.EventGrid e verificare che lo stato non sia registrato.

  5. Selezionare Microsoft.EventGrid nell'elenco dei provider.

  6. Selezionare Registra sulla barra dei comandi.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

  7. Aggiornare per assicurarsi che lo stato di Microsoft.EventGrid sia cambiato in Registrato.

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

Creare un argomento personalizzato

Un argomento di Griglia di eventi fornisce un endpoint definito dall'utente a cui si pubblicano gli eventi.

  1. Accedi al portale di Azure.

  2. Nella barra di ricerca dell'argomento digitare Argomenti di Griglia di eventi e quindi selezionare Argomenti di Griglia di eventi nell'elenco a discesa.

    Screenshot showing the Azure port search bar to search for Event Grid topics.

  3. Nella pagina Argomenti di Griglia di eventi selezionare + Crea sulla barra degli strumenti.

    Screenshot showing the Create Topic button on Event Grid topics page.

  4. Nella pagina Crea argomento procedere come segue:

    1. Selezionare la sottoscrizione di Azure.

    2. Selezionare un gruppo di risorse esistente oppure selezionare Crea nuovo e immettere un nome per il gruppo di risorse.

    3. Specificare un nome univoco per l'argomento personalizzato. Il nome dell'argomento deve essere univoco perché è rappresentato da una voce DNS. Non usare il nome visualizzato nell'immagine In alternativa, creare un nome personalizzato di lunghezza compresa tra 3 e 50 caratteri e contenente solo valori compresi tra a e z, A e Z, 0 e 9 e "-".

    4. Selezionare un percorso per l'argomento Griglia di eventi.

    5. Selezionare Rivedi e crea nella parte inferiore della pagina.

      Create Topic page

    6. Nella scheda Rivedi e crea della pagina Crea argomento selezionare Crea.

      Review settings and create

  5. Al termine della distribuzione, selezionare Vai alla risorsa per passare alla pagina Argomento di Griglia di eventi per l'argomento. Tenere aperta questa pagina. Verrà usata in seguito nell'argomento di avvio rapido.

    Screenshot showing the Event Grid topic home page.

    Nota

    Per semplificare la guida introduttiva, si userà solo la pagina Informazioni di base per creare un argomento. Per informazioni dettagliate sulla configurazione delle impostazioni di residenza dei dati, sicurezza e rete in altre pagine della procedura guidata, vedere Creare un argomento personalizzato.

Creare un endpoint del messaggio

Prima di creare una sottoscrizione per l'argomento personalizzato, creare un endpoint per il messaggio dell'evento. L'endpoint richiede in genere azioni basate sui dati degli eventi. Per semplificare questa guida introduttiva, si distribuisce un'app Web predefinita 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.

  1. Nella pagina dell'articolo selezionare Distribuisci in Azure per distribuire la soluzione nella sottoscrizione. Nel portale di Azure specificare i valori per i parametri.

    Button to deploy the Resource Manager template to Azure.

  2. Nella pagina Distribuzione personalizzata procedere come segue:

    1. Per Gruppo di risorse selezionare il gruppo di risorse creato durante la creazione dell'account di archiviazione. Sarà più semplice eseguire la pulizia dopo aver completato l'esercitazione eliminando il gruppo di risorse.

    2. Per Nome sito immettere un nome per l'app Web.

    3. Per Nome piano di hosting immettere un nome per il piano del servizio app da usare per l'hosting dell'app Web.

    4. Selezionare Rivedi e crea.

      Screenshot showing the Custom deployment page.

  3. Nella pagina Rivedi e crea selezionare Crea.

  4. Per il completamento della distribuzione possono essere necessari alcuni minuti. Selezionare Avvisi (icona della campana) nel portale e quindi Vai al gruppo di risorse.

    Screenshot showing the successful deployment message with a link to navigate to the resource group.

  5. Nell'elenco di risorse della pagina Gruppo di risorse selezionare l'app Web creata. Questo elenco include anche il piano di servizio app e l'account di archiviazione.

    Screenshot that shows the Resource Group page with the deployed resources.

  6. Nella pagina Servizio app per l'app Web selezionare l'URL per passare al sito Web. Il file deve essere nel formato https://<your-site-name>.azurewebsites.net.

    Screenshot that shows the App Service page with the link to the site highlighted.

  7. Verificare che venga visualizzato il sito ma che al suo interno non sono stati ancora pubblicati eventi.

    Screenshot that shows the Event Grid Viewer sample app.

Sottoscrivere eventi per un argomento personalizzato

Si sottoscrive un argomento di Griglia di eventi per indicare a Griglia di eventi gli eventi da tenere traccia e dove inviare gli eventi.

  1. Nella pagina Argomento di Griglia di eventi relativa all'argomento personalizzato selezionare + Sottoscrizione di eventi sulla barra degli strumenti.

    Add event subscription button

  2. Nella pagina Crea sottoscrizione di eventi procedere come segue:

    1. Immettere un nome per la sottoscrizione di eventi.

    2. Selezionare Webhook per Tipo di endpoint.

    3. Scegliere Seleziona endpoint.

      Provide event subscription values

    4. Per l'endpoint del webhook, specificare l'URL dell'app Web e aggiungere api/updates all'URL della home page. Selezionare Confermare la selezione.

      Provide endpoint URL

    5. Nella pagina Crea sottoscrizione di eventi selezionare Crea.

  3. 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.

    Screenshot of the Event Grid Viewer app with the Subscription Validated event.

Inviare un evento all'argomento

A questo punto, attivare un evento per vedere come la griglia di eventi distribuisce il messaggio nell'endpoint. Usare l'interfaccia della riga di comando di Azure o PowerShell per inviare un evento di test all'argomento personalizzato. In genere, i dati dell'evento vengono inviati da un'applicazione o un servizio di Azure.

Il primo esempio usa l'interfaccia della riga di comando di Azure. Ottiene l'URL e la chiave per l'argomento personalizzato e i dati dell'evento di esempio. Usare il nome dell'argomento personalizzato per <topic name>. Verranno creati i dati dell'evento di esempio. 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.

Interfaccia della riga di comando di Azure

  1. Nel portale di Azure selezionare Cloud Shell. Cloud Shell verrà aperto nel riquadro inferiore del Web browser.

    Select Cloud Shell icon

  2. Selezionare Bash nell'angolo in alto a sinistra della finestra Cloud Shell.

    Screenshot that shows the Cloud Shell with Bash selected in the top-left corner.

  3. Eseguire il comando seguente per ottenere l'endpoint per l'argomento: dopo aver copiato e incollato il comando, aggiornare il nome dell'argomento e il nome del gruppo di risorse prima di eseguire il comando. Gli eventi di esempio vengono pubblicati in questo endpoint dell'argomento.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. Eseguire il comando seguente per ottenere la chiave per l'argomento personalizzato: dopo aver copiato e incollato il comando, aggiornare il nome dell'argomento e il nome del gruppo di risorse prima di eseguire il comando. Si tratta della chiave primaria dell'argomento di Griglia di eventi. Per ottenere questa chiave dal portale di Azure, passare alla scheda Chiavi di accesso della pagina Argomento di Griglia di eventi. Per poter pubblicare un evento in un argomento personalizzato, è necessaria la chiave di accesso.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. Copiare l'istruzione seguente con la definizione di evento e premere INVIO.

    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"} ]'
    
  6. Eseguire il comando Curl seguente per pubblicare l'evento: nel comando l'intestazione aeg-sas-key è impostata sulla chiave di accesso ottenuta in precedenza.

    curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
    

Azure PowerShell

Il secondo esempio usa PowerShell per eseguire passaggi simili.

  1. Nel portale di Azure selezionare Cloud Shell (in alternativa, passare a https://shell.azure.com/). Cloud Shell verrà aperto nel riquadro inferiore del Web browser.

    Select Cloud Shell icon

  2. In Cloud Shell selezionare PowerShell nell'angolo in alto a sinistra della finestra Cloud Shell. Vedere l'esempio di immagine di finestra Cloud Shell nella sezione sull'interfaccia della riga di comando di Azure.

  3. Impostare le variabili seguenti. Dopo aver copiato e incollato ogni singolo comando, aggiornare il nome dell'argomento e il nome del gruppo di risorse prima di eseguirlo:

    Gruppo di risorse:

    $resourceGroupName = "<resource group name>"
    

    Nome dell'argomento di Griglia di eventi:

    $topicName = "<topic name>"
    
  4. Eseguire i comandi seguenti per ottenere l'endpoint e le chiavi per l'argomento:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. Preparare l'evento. Copiare ed eseguire le istruzioni nella finestra Cloud Shell.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  6. Usare il cmdlet Invoke-WebRequest per inviare l'evento.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Verificare nel visualizzatore Griglia di eventi

È 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.

Event Grid Viewer

Pulire le risorse

Se si intende continuare a usare questo evento, non è necessario pulire le risorse create con questo articolo. In caso contrario, eliminare le risorse create in questo articolo.

  1. Selezionare Gruppi di risorse nel menu sinistro. Se l'opzione non viene visualizzata nel menu sinistro, selezionare Tutti i servizi nel menu sinistro e quindi Gruppi di risorse.

    Screenshot that shows the Resource Groups page.

  2. Selezionare il gruppo di risorse per avviare la pagina Gruppo di risorse.

  3. Selezionare Elimina gruppo di risorse sulla barra degli strumenti.

  4. Confermare l'eliminazione immettendo il nome del gruppo di risorse e selezionare Elimina.

    L'altro gruppo di risorse visualizzato nella pagina è stato creato e usato dalla finestra Cloud Shell. Eliminarlo se non si prevede di usare la finestra Cloud Shell in seguito.

Passaggi successivi

Ora che si è appreso come creare argomenti personalizzati e sottoscrizioni di eventi, è possibile approfondire le operazioni possibili con Griglia di eventi:

Vedere gli esempi seguenti per informazioni sulla pubblicazione di eventi in e sull'utilizzo di eventi da Griglia di eventi usando linguaggi di programmazione diversi.