Come usare trigger e associazioni di Griglia di eventi in Funzioni di Azure

Funzioni di Azure offre l'integrazione predefinita con Griglia di eventi di Azure usando trigger e associazioni. Questo articolo illustra come configurare e valutare localmente i trigger e le associazioni di Griglia di eventi. Per altre informazioni sulle definizioni di trigger di Griglia di eventi ed esempi di associazione di output, vedere uno degli articoli di riferimento seguenti:

Creare una sottoscrizione di eventi

Per iniziare a ricevere richieste HTTP di Griglia di eventi, è necessaria una sottoscrizione agli eventi generati da Griglia di eventi. Le sottoscrizioni di eventi specificano l'URL dell'endpoint che richiama la funzione. Quando si crea una sottoscrizione di eventi dalla scheda Integrazione della funzione nel portale di Azure, l'URL viene fornito automaticamente. Quando si crea una sottoscrizione di eventi a livello di codice o quando si crea la sottoscrizione di eventi da Griglia di eventi, è necessario fornire l'endpoint. L'URL dell'endpoint contiene una chiave di sistema, che è necessario ottenere dalle API REST dell'amministratore di Funzioni.

Ottenere l'URL dell'endpoint del webhook

L'endpoint URL per la funzione attivata da Griglia di eventi dipende dalla versione del runtime di Funzioni. L'esempio seguente illustra il modello di URL specifico della versione:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

Nota

È disponibile una versione del trigger di archiviazione BLOB che usa anche sottoscrizioni di eventi. L'URL dell'endpoint per questo tipo di trigger di archiviazione BLOB ha un percorso /runtime/webhooks/blobs, mentre il percorso di un trigger di Griglia di eventi sarà /runtime/webhooks/EventGrid. Per un confronto delle opzioni per l'elaborazione dei BLOB, vedere Trigger in un contenitore BLOB.

Ottenere la chiave di sistema

L'endpoint URL creato include un valore di chiave di sistema. La chiave di sistema è una chiave di autorizzazione, specifica del webhook di Griglia di eventi, che deve essere inclusa in una richiesta all'URL dell'endpoint per un trigger di Griglia di eventi. La sezione seguente spiega come ottenere la chiave di sistema.

È anche possibile ottenere la chiave master per l'app per le funzioni dalle chiavi dell'app per le funzioni>nel portale.

Attenzione

La chiave master consente l'accesso di amministratore all'app per le funzioni. Non condividere questa chiave con terze parti né distribuirla in applicazioni client native.

Per altre informazioni, vedere Usare le chiavi di accesso in Funzioni di Azure.

È possibile ottenere la chiave di sistema dall'app per le funzioni usando le API di amministratore seguenti (HTTP GET):

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

Questa API REST è un'API amministratore, quindi richiede la chiave master dell'app per le funzioni. Non confondere la chiave di sistema (per richiamare una funzione trigger Griglia di eventi) con la chiave master (per l'esecuzione di attività amministrative nell'app per le funzioni). Quando si sottoscrive un argomento di Griglia di eventi, usare la chiave di sistema.

Di seguito è riportato un esempio di risposta fornita dalla chiave di sistema:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

Creare la sottoscrizione

È possibile creare una sottoscrizione di eventi dal portale di Azure o usando l'interfaccia della riga di comando di Azure.

Per le funzioni sviluppate nel portale di Azure con il trigger Griglia di eventi, selezionare Integrazione, quindi scegliere Trigger griglia di eventi e selezionare Crea sottoscrizione di Griglia di eventi.

Screenshot della connessione a una nuova sottoscrizione di eventi da attivare nel portale.

Quando si seleziona questo collegamento, nel portale si apre la pagina Crea sottoscrizione di eventi con l'endpoint del trigger corrente già definito.

Screenshot della creazione di una sottoscrizione di eventi con l'endpoint della funzione già definito.

Per altre informazioni su come creare sottoscrizioni tramite il portale di Azure, vedere Creare eventi personalizzati con il portale di Azure nella documentazione relativa a Griglia di eventi.

Per altre informazioni su come creare una sottoscrizione, vedere la guida introduttiva all'archiviazione BLOB o le altre guide introduttive a Griglia di eventi.

Test locale con l'app visualizzatore Web

Per testare un trigger Griglia di eventi in locale, è necessario ottenere le richieste HTTP di Griglia di eventi inviate dalla rispettiva origine nel cloud al computer locale. A tale scopo, è possibile acquisire le richieste online e rinviarle manualmente al computer locale:

  1. Creare un'app visualizzatore Web che acquisisce i messaggi di evento.
  2. Creare una sottoscrizione di Griglia di eventi per inviare gli eventi all'app visualizzatore.
  3. Generare una richiesta e copiare il corpo della richiesta dall'app visualizzatore.
  4. Inviare manualmente la richiesta all'URL localhost della funzione trigger Griglia di eventi.

Per inviare una richiesta http post, è necessario uno strumento di test HTTP. Assicurarsi di scegliere uno strumento che consente di proteggere i dati. Per altre informazioni, vedere Strumenti di test HTTP.

Al termine del test, è possibile usare la stessa sottoscrizione per scopi di produzione aggiornando l'endpoint. Usare il comando az eventgrid event-subscription update dell'interfaccia della riga di comando di Azure.

Creare un'app visualizzatore Web

Per semplificare l'acquisizione di messaggi di evento, è possibile distribuire 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.

Selezionare Distribuisci in Azure per distribuire la soluzione nella sottoscrizione. Nel portale di Azure specificare i valori per i parametri.

Pulsante per distribuire il modello di Resource Manager in Azure.

Per il completamento della distribuzione possono essere necessari 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

Viene visualizzato il sito, ma nessun evento è ancora stato pubblicato.

Visualizzare il nuovo sito

Creare una sottoscrizione di Griglia di eventi

Creare una sottoscrizione di Griglia di eventi della tipologia da testare e assegnargli l'URL dall'app Web come endpoint per la notifica degli eventi. L'endpoint per l'app Web deve includere il suffisso /api/updates/. Pertanto, l'URL completo è https://<your-site-name>.azurewebsites.net/api/updates

Per altre informazioni su come creare sottoscrizioni tramite il portale di Azure, vedere Creare eventi personalizzati con il portale di Azure nella documentazione relativa a Griglia di eventi.

Generare una richiesta

Attivare un evento che genera traffico HTTP nell'app Web. Ad esempio, se è stata creata una sottoscrizione di archiviazione BLOB, caricare o eliminare un BLOB. Quando nell'app Web viene visualizzata una richiesta, copiare il corpo della richiesta.

Si riceverà prima la richiesta di convalida della sottoscrizione. Ignorare tutte le richieste di convalida e copiare la richiesta di evento.

Copiare il corpo della richiesta dall'app Web

Inviare manualmente la richiesta

Eseguire la funzione di Griglia di eventi in locale. Le intestazioni Content-Type e aeg-event-type devono essere impostate manualmente, mentre e tutti gli altri valori possono essere lasciati come predefiniti.

Usare lo strumento di test HTTP per creare una richiesta HTTP POST:

  • Impostare un'intestazione Content-Type: application/json.

  • Impostare un'intestazione aeg-event-type: Notification.

  • Incollare i dati di RequestBin nel corpo della richiesta.

  • Inviare una richiesta HTTP POST all'endpoint che avvia manualmente il trigger di Griglia di eventi.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

Il parametro functionName deve corrispondere al nome specificato nell'attributo FunctionName.

La funzione trigger Griglia di eventi viene eseguita e vengono visualizzati log simili all'esempio seguente:

Log di esempio della funzione trigger Griglia di eventi

Passaggi successivi

Per altre informazioni su Griglia di eventi con Funzioni, vedere gli articoli seguenti: