Condividi tramite


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

Definire il percorso della richiesta: nome host + percorso cartella + nome funzione

  • 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.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 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'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 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.

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

    Individuare la chiave principale da copiare.

  2. Nella sezione Modifica chiave, copia il valore della chiave negli Appunti e quindi seleziona OK.

    Copia la chiave master negli appunti.

Chiamare la funzione

  1. Nel 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 dallo strumento di test HTTP, è possibile vedere qui i messaggi loggati dalla funzione.

    Screenshot che mostra la pagina

  3. 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-key Valore della chiave master incollato dagli appunti.
    Content-Type application/json
  4. 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 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.

  5. Inviare la richiesta HTTP POST. La risposta deve essere una risposta HTTP 202 (accettata).

  6. Tornare quindi alla funzione nel portale di Azure. Esaminare i log e visualizzare i messaggi provenienti dalla chiamata manuale alla funzione.

    Visualizzare i log per visualizzare i risultati del test della chiave master.

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