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.
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.
Prerequisiti
Gli esempi in questo articolo usano uno strumento di test HTTP. Assicurarsi di scegliere uno strumento che consente di proteggere i dati. Per altre informazioni, vedere Strumenti di test HTTP.
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.
- 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 denominatostaging
. - 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'intestazionex-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.
Passare all'app per le funzioni nella portale di Azure, selezionare Chiavi app e quindi la
_master
chiave.Nella sezione Modifica chiave copiare il valore della chiave negli Appunti e quindi selezionare OK.
Chiamare la funzione
Nella portale di Azure passare all'app per le funzioni e scegliere la funzione.
Selezionare Codice e test e quindi selezionare Log. Quando si esegue manualmente la funzione dallo strumento di test HTTP, vengono visualizzati messaggi dalla funzione registrata qui.
Nello strumento di test HTTP usare il percorso della richiesta definito come URL della richiesta, assicurarsi che il metodo di richiesta HTTP sia POST e includere queste due intestazioni di richiesta:
Chiave valore x-functions-key
Valore della chiave master incollato dagli Appunti. Content-Type
application/json
Assicurarsi che il payload/corpo della richiesta POST sia
{ "input": "<TRIGGER_INPUT>" }
. 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.Inviare la richiesta HTTP POST. La risposta deve essere una risposta HTTP 202 (accettata).
Quindi, ritornare alla funzione nel portale di Azure. Esaminare i log e visualizzare i messaggi provenienti dalla chiamata manuale alla funzione.
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.