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.

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

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

    Individuare la chiave master da copiare.

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

    Copiare la chiave master negli Appunti.

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 dallo strumento di test HTTP, vengono visualizzati messaggi dalla funzione registrata qui.

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

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

  6. Quindi, ritornare 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