Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 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/Run della funzionalità Code + Test nel 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 l'ubicazione della richiesta
Per eseguire una funzione non attivata da HTTP, è necessario un modo per inviare una richiesta a Azure per eseguire la funzione. L'URL usato per effettuare questa richiesta richiede un modulo specifica.
-
Nome host: 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 per il staging, la parte del nome host è il nome host di produzione con
-<slotname>aggiunto. Nell'esempio precedente l'URL saràmyfunctiondemos-staging.azurewebsites.netper 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 da 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-keydella richiesta. - Quando si esegue in locale, l'autorizzazione non viene applicata e la chiave master della funzione non è necessaria. È possibile chiamare direttamente la funzione 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.
Ottieni la chiave master
È possibile ottenere la chiave master dal portale di Azure o usando il Azure CLI.
Attenzione
A causa delle autorizzazioni elevate nell'app per le funzioni concesse dalla chiave master, non è consigliabile 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 nel portale Azure, selezionare Chiavi app e quindi la chiave
_master.
Nella sezione Modifica chiave, copia il valore della chiave negli Appunti e quindi seleziona OK.
Chiamare la funzione
Nel 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, è possibile vedere qui i messaggi loggati dalla funzione.
Nello strumento di test HTTP usare il percorso della richiesta definito come URL della richiesta, assicurarsi che il metodo della richiesta HTTP sia POST e includere queste due intestazioni di richiesta:
Chiave valore x-functions-keyValore della chiave master incollato dagli appunti. Content-Typeapplication/jsonAssicurarsi 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 Azure Service Bus, il payload JSON di test deve essere sottoposto a 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).
Tornare quindi 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.