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:

Sottoscrizioni 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 nella 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.

Webhook endpoint URL

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/blobsmentre il percorso di un trigger di Griglia di eventi sarebbe /runtime/webhooks/EventGrid. Per un confronto delle opzioni per l'elaborazione dei BLOB, vedere Trigger in un contenitore BLOB.

Chiave di sistema

L'endpoint URL creato include il valore della chiave di sistema. La chiave di sistema è una chiave di autorizzazione che deve essere inclusa nell'URL dell'endpoint di un trigger Griglia di eventi. La sezione seguente spiega come ottenere la chiave di sistema.

È possibile ottenere la chiave di sistema tramite l'API seguente (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}"
    }
  ]
}

È possibile ottenere la chiave master per l'app per le funzioni dalla scheda Impostazioni dell'app per le funzioni nel portale.

Importante

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 Chiavi di autorizzazione nell'articolo di riferimento relativo al trigger HTTP.

Creare una sottoscrizione di eventi

È 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 of connecting to a new event subscription to trigger in the portal.

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

Screenshot of creating an event subscription with the function endpoint already defined.

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.

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

È anche possibile usare l'utilità ngrok per inoltrare richieste remote alle funzioni in esecuzione in locale. Per ulteriori informazioni, vedere questa esercitazione.

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.

Button to deploy the Resource Manager template to 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.

View new site

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.

Copy request body from web app

Inviare manualmente la richiesta

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

Usare uno strumento, ad esempio Postman o curl, 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 all'URL della funzione trigger Griglia di eventi.

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

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

Le schermate seguenti illustrano le intestazioni e il corpo della richiesta in Postman:

Headers in Postman

Request body in Postman

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

Sample Event Grid trigger function logs

Passaggi successivi

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