Eseguire manualmente una funzione non attivata da HTTP

Questo articolo illustra come eseguire manualmente una funzione non attivata da HTTP tramite una richiesta HTTP con formattazione speciale.

In alcuni contesti, ad esempio durante lo sviluppo e la risoluzione dei problemi, potrebbe essere necessario eseguire "su richiesta" una funzione di Azure attivata indirettamente. Esempi di trigger indiretti includono funzioni in base a una pianificazione o a funzioni eseguite come risultato di eventi.

Postman viene usato nell'esempio seguente, ma è possibile usare cURL, Fiddler o qualsiasi altro strumento come per inviare richieste HTTP.

La procedura descritta in questo articolo equivale all'uso della funzionalità Test/Esecuzione della scheda Codice e test di una funzione nella portale di Azure. È anche possibile usare Visual Studio Code per eseguire manualmente le funzioni.

Definire il percorso della richiesta

Per eseguire una funzione non attivata da HTTP, è necessario una modalità per inviare una richiesta in Azure per eseguire la funzione. L'URL usato per effettuare questa richiesta richiede un modulo specifica.

Define the request location: host name + folder path + function name

  • Nome host: la posizione pubblica dell'app per le funzioni costituita dal nome dell'app per le funzioni più azurewebsites.net o dal dominio personalizzato. Quando si usano gli slot di distribuzione usati per la gestione temporanea, la parte del nome host host è il nome host di produzione con -<slotname> aggiunta. Nell'esempio precedente l'URL sarà myfunctiondemos-staging.azurewebsites.net per uno slot denominato staging.
  • Percorso cartella: per accedere a funzioni non attivate da HTTP tramite una richiesta HTTP, è necessario inviare la richiesta tramite il percorso admin/functions. Le API nel /admin/ percorso sono accessibili solo con l'autorizzazione.
  • Nome funzione: nome della funzione che si vuole eseguire.

Quando si effettuano richieste agli endpoint di amministratore nell'app per le funzioni, si applicano le considerazioni seguenti:

  • Quando si effettuano richieste a qualsiasi endpoint nel /admin/ percorso, è necessario specificare la chiave master dell'app nell'intestazione x-functions-key della richiesta.
  • Quando si esegue in locale, l'autorizzazione non viene applicata e la chiave master della funzione non è necessaria. È possibile chiamare la funzione direttamente omettendo l'intestazione x-functions-key.
  • Quando si accede agli endpoint dell'app per le funzioni in uno slot di distribuzione, assicurarsi di usare il nome host specifico dello slot nell'URL della richiesta, insieme alla chiave master specifica dello slot.

Ottenere la chiave master

È possibile ottenere la chiave master dal portale di Azure o usando l'interfaccia della riga di comando di Azure.

Attenzione

Date le autorizzazioni elevate concesse dalla chiave master nell'app per le funzioni, è consigliabile non condividere questa chiave con terze parti o distribuirla in un'applicazione. La chiave deve essere inviata solo a un endpoint HTTPS.

  1. Passare all'app per le funzioni nella portale di Azure, selezionare Chiavi app e quindi la _master chiave.

    Locate the master key to copy.

  2. Nella sezione Modifica chiave copiare il valore della chiave negli Appunti e quindi selezionare OK.

    Copy the master key to the clipboard.

Chiamare la funzione

  1. Nella portale di Azure passare all'app per le funzioni e scegliere la funzione.

  2. Selezionare Codice e test e quindi selezionare Log. Quando si esegue manualmente la funzione da Postman, vengono visualizzati i messaggi della funzione registrata qui.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Aprire Postman (o uno strumento di composizione HTTP equivalente) e immettere il percorso della richiesta nella casella di testo URL.

  4. Assicurarsi che il metodo HTTP sia impostato su POST, selezionare la scheda Intestazioni e aggiungere queste due coppie chiave-valore di intestazione:

    Chiave valore
    x-functions-key Valore della chiave master incollato dagli Appunti.
    Content-Type application/json

    Postman headers settings.

  5. Selezionare la scheda Corpo e digitare { "input": "<TRIGGER_INPUT>" } come corpo della richiesta.

    Postman body settings.

    La specifica specificata <TRIGGER_INPUT> dipende dal tipo di trigger, ma può essere solo un valore stringa, numerico o booleano. Per i servizi che usano payload JSON, ad esempio bus di servizio di Azure, il payload JSON di test deve essere preceduto da escape e serializzato come stringa.

    Se non si desidera passare i dati di input alla funzione, è comunque necessario specificare un dizionario {} vuoto come corpo della richiesta POST. Per altre informazioni, vedere l'articolo di riferimento per il trigger non HTTP specifico.

  6. Selezionare Invia.

    Send a request with Postman.

    Postman indica quindi uno stato 202-Accettato.

  7. Quindi, ritornare alla funzione nel portale di Azure. Esaminare i log e visualizzare i messaggi provenienti dalla chiamata manuale alla funzione.

    View the logs to see the master key test results.

Il modo in cui si accede ai dati inviati al trigger dipende dal tipo di trigger e dal linguaggio di funzione. Per altre informazioni, vedere gli esempi di riferimento per il trigger specifico.

Passaggi successivi