Sviluppare Funzioni di Azure con Visual Studio Code

L'estensione Funzioni di Azure per Visual Studio Code consente di sviluppare funzioni in locale e di distribuirle in Azure. Se questa è la prima esperienza con Funzioni di Azure, è consigliabile leggere altre informazioni in Introduzione a Funzioni di Azure.

L'estensione Funzioni di Azure offre questi vantaggi:

  • Modificare, compilare ed eseguire funzioni nel computer di sviluppo locale.
  • Pubblicare il progetto Funzioni di Azure direttamente in Azure.
  • Scrivere le funzioni in vari linguaggi sfruttando i vantaggi di Visual Studio Code.

Si sta visualizzando la versione C# di questo articolo. Assicurarsi di selezionare il linguaggio di programmazione di Funzioni preferito all'inizio dell'articolo.

Se non si ha familiarità con Funzioni, è consigliabile completare prima di tutto l'articolo di avvio rapido di Visual Studio Code.

Si sta visualizzando la versione Java di questo articolo. Assicurarsi di selezionare il linguaggio di programmazione di Funzioni preferito all'inizio dell'articolo.

Se non si ha familiarità con Funzioni, è consigliabile completare prima di tutto l'articolo di avvio rapido di Visual Studio Code.

Si sta visualizzando la versione JavaScript di questo articolo. Assicurarsi di selezionare il linguaggio di programmazione di Funzioni preferito all'inizio dell'articolo.

Se non si ha familiarità con Funzioni, è consigliabile completare prima di tutto l'articolo di avvio rapido di Visual Studio Code.

Si sta visualizzando la versione di PowerShell di questo articolo. Assicurarsi di selezionare il linguaggio di programmazione di Funzioni preferito all'inizio dell'articolo.

Se non si ha familiarità con Funzioni, è consigliabile completare prima di tutto l'articolo di avvio rapido di Visual Studio Code.

Si sta visualizzando la versione Python di questo articolo. Assicurarsi di selezionare il linguaggio di programmazione di Funzioni preferito all'inizio dell'articolo.

Se non si ha familiarità con Funzioni, è consigliabile completare prima di tutto l'articolo di avvio rapido di Visual Studio Code.

Si sta visualizzando la versione TypeScript di questo articolo. Assicurarsi di selezionare il linguaggio di programmazione di Funzioni preferito all'inizio dell'articolo.

Se non si ha familiarità con Funzioni, è consigliabile completare prima di tutto l'articolo di avvio rapido di Visual Studio Code.

Importante

Non combinare lo sviluppo locale e lo sviluppo del portale per una singola app per le funzioni. Quando si pubblica da un progetto locale a un'app per le funzioni, il processo di distribuzione sovrascrive le funzioni sviluppate nel portale.

Prerequisiti

Questi prerequisiti sono necessari anche per eseguire ed eseguire il debug delle funzioni in locale. Non sono necessari solo per creare o pubblicare progetti in Funzioni di Azure.

  • Azure Functions Core Tools, che consente un'esperienza di debug locale integrata. Quando è installata l'estensione Funzioni di Azure, il modo più semplice per installare o aggiornare Core Tools consiste nell'eseguire il comando Azure Functions: Install or Update Azure Functions Core Tools dal riquadro comandi.

Creare un progetto di Funzioni di Azure

L'estensione Funzioni consente di creare il progetto dell'app per le funzioni richiesto contemporaneamente alla creazione della prima funzione. Usare questi passaggi per creare una funzione attivata tramite HTTP in un nuovo progetto. Un trigger HTTP è il modello di trigger di funzione più semplice da illustrare.

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi e cercare ed eseguire il comando Azure Functions: Create New Project.... Selezionare la posizione della directory per l'area di lavoro del progetto e quindi scegliere Seleziona.

    È possibile creare una nuova cartella o scegliere una cartella vuota per l'area di lavoro del progetto, ma non scegliere una cartella di progetto che fa già parte di un'area di lavoro.

    È invece possibile eseguire il comando Azure Functions: Create New Containerized Project... per ottenere anche un Dockerfile generato per il progetto.

  2. Quando richiesto, selezionare una lingua per il progetto. Se necessario, scegliere una versione specifica della lingua.

  3. Selezionare il modello di funzione trigger HTTP oppure selezionare Ignora per il momento per creare un progetto senza una funzione. È sempre possibile aggiungere una funzione al progetto in un secondo momento.

    Suggerimento

    È possibile visualizzare altri modelli selezionando l'opzione Modifica filtro modello e impostando il valore su Core o All.

  4. Per il nome della funzione immettere HttpExample, selezionare INVIO e quindi selezionare autorizzazione Funzione.

    Questo livello di autorizzazione richiede di fornire una chiave di funzione quando si chiama l'endpoint della funzione.

  5. Nell'elenco a discesa selezionare Aggiungi all'area di lavoro.

  6. Nella finestra Consideri attendibili gli autori dei file in questa cartella? selezionare .

Visual Studio Code crea una funzione nel linguaggio scelto e nel modello per una funzione attivata da HTTP.

File di progetto generati

Il modello di progetto crea un progetto nel linguaggio scelto e installa le dipendenze necessarie. Per qualsiasi linguaggio, il nuovo progetto include questi file:

  • host.json: consente di configurare l'host di Funzioni. Queste impostazioni si applicano quando si eseguono funzioni in locale e quando vengono eseguite in Azure. Per altre informazioni, vedere il riferimento su host.json.

  • local.settings.json: mantiene le impostazioni usate quando si eseguono funzioni localmente. Queste impostazioni vengono usate solo quando si eseguono funzioni in locale. Per maggiori informazioni, vedere File di impostazioni locali.

    Importante

    Poiché il file local.settings.json può contenere segreti, assicurarsi di escludere il file dal controllo del codice sorgente del progetto.

  • Dockerfile (facoltativo): consente di creare un'app per le funzioni in contenitori dal progetto usando un'immagine di base approvata per il progetto. Questo file viene visualizzato solo quando si esegue il comando Azure Functions: Create New Containerized Project.... È possibile aggiungere un Dockerfile a un progetto esistente usando il func init --docker-only comando in Core Tools.

A seconda della lingua, vengono creati questi altri file:

Un file di libreria di classi HttpExample.cs, il cui contenuto varia a seconda che il progetto venga eseguito in un processo di lavoro isolato o in-process con l'host Funzioni.

  • File pom.xml nella cartella radice che definisce i parametri di progetto e distribuzione, incluse le dipendenze del progetto e la versione Java. Il pom.xml contiene anche informazioni sulle risorse di Azure create durante una distribuzione.

  • File Functions.java nel percorso src che implementa la funzione.

I file generati dipendono dal modello di programmazione Node.js scelto per Funzioni:

  • Un file package.json nella cartella radice.

  • File .js denominato nella cartella src\functions, che contiene sia la definizione della funzione che il codice della funzione.

Cartella HttpExample che contiene:

I file generati dipendono dal modello di programmazione Python scelto per Funzioni:

  • Un file requirements.txt a livello di progetto che elenca i pacchetti richiesti da Funzioni di Azure.

  • File function_app.py che contiene sia la definizione della funzione che il codice.

A questo punto, è possibile eseguire la funzione trigger HTTP in locale.

Aggiungere una funzione al progetto

È possibile aggiungere una nuova funzione a un progetto esistente in base a uno dei modelli di trigger di Funzioni predefiniti. Per aggiungere un nuovo trigger di funzione, selezionare F1 per aprire il riquadro comandi e quindi trovare ed eseguire il comando Funzioni di Azure: Crea funzione. Seguire le istruzioni per scegliere il tipo di trigger e definire gli attributi necessari del trigger. Se il trigger richiede una chiave di accesso o una stringa di connessione per connettersi a un servizio, prepararlo prima di creare il trigger della funzione.

Questa azione aggiunge un nuovo file della libreria di classi C# (.cs) al progetto.

Questa azione aggiunge un nuovo file Java (.java) al progetto.

I risultati di questa azione dipendono dalla versione del modello Node.js.

  • Un file package.json nella cartella radice.

  • File .js denominato nella cartella src\functions, che contiene sia la definizione della funzione che il codice della funzione.

Questa azione crea una nuova cartella nel progetto. La cartella contiene un nuovo file function.json e il nuovo file di codice di PowerShell.

I risultati di questa azione dipendono dalla versione del modello Python.

Visual Studio Code aggiunge nuovo codice di funzione al file di function_app.py (comportamento predefinito) o a un altro file Python selezionato.

Connettersi ai servizi

È possibile connettere la funzione ad altri servizi di Azure aggiungendo associazioni di input e output. Le associazioni connettono la funzione ad altri servizi senza dover scrivere il codice di connessione.

Ad esempio, il modo in cui si definisce un'associazione di output che scrive i dati in una coda di archiviazione dipende dal modello di processo:

  1. Se necessario, aggiungere un riferimento al pacchetto che supporta l'estensione di associazione.

  2. Aggiornare il metodo function per aggiungere un attributo che definisce il parametro di associazione, ad esempio QueueOutput per un'associazione di output della coda. È possibile usare un oggetto MultiResponse per restituire più messaggi o più flussi di output.

Ad esempio, per aggiungere un'associazione di output che scrive i dati in una coda di archiviazione, aggiornare il metodo della funzione per aggiungere un parametro di associazione definito usando l'annotazione QueueOutput. L'oggetto OutputBinding<T> rappresenta i messaggi scritti in un'associazione di output al termine della funzione.

Ad esempio, il modo in cui si definisce l'associazione di output che scrive i dati in una coda di archiviazione dipende dalla versione del modello Node.js:

Usando il modello Node.js v4, è necessario aggiungere manualmente un'opzione return: nella definizione della funzione usando la funzione storageQueue nell'oggetto output, che definisce la coda di archiviazione per scrivere l'output return. L'output viene scritto al termine della funzione.

Visual Studio Code consente di aggiungere associazioni al file function.json seguendo un pratico set di richieste.

Per aggiungere un'associazione, aprire il pallet dei comandi (F1) e digitare Funzioni di Azure: aggiungere binding..., scegliere la funzione per la nuova associazione e quindi seguire i prompt, che variano a seconda del tipo di binding aggiunto alla funzione.

Di seguito sono riportati alcuni prompt di esempio per definire una nuova associazione di output di archiviazione:

Richiesta Valore Descrizione
Selezionare la direzione di binding out Il binding è un binding di output.
Selezionare il binding con direzione Azure Queue Storage Il binding è un binding della coda di archiviazione di Azure.
Il nome usato per identificare questo binding nel codice msg Nome che identifica il parametro di binding a cui viene fatto riferimento nel codice.
La coda a cui verrà inviato il messaggio outqueue Il nome della coda in cui scrive il binding. Se queueName non esiste, il binding lo crea al primo utilizzo.
Selezionare l'impostazione da "local.settings.json" MyStorageConnection Il nome dell'impostazione dell'applicazione che contiene la stringa di connessione per l'account di archiviazione. L'impostazione AzureWebJobsStorage contiene la stringa di connessione per l'account di archiviazione creato con l'app per le funzioni.

È anche possibile fare clic con il pulsante destro del mouse (CTRL+clic su macOS) direttamente nel file function.json nella cartella della funzione, selezionare Aggiungi binding e seguire le stesse istruzioni.

In questo esempio, l'associazione seguente viene aggiunta alla matrice bindings nel file function.json:

{
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "MyStorageConnection"
}

Ad esempio, il modo in cui si definisce l'associazione di output che scrive i dati in una coda di archiviazione dipende dalla versione del modello Python:

Il decorator @queue_output nella funzione viene usato per definire un parametro di associazione denominato per l'output nella coda di archiviazione, in cui func.Out definisce l'output scritto.

L'esempio seguente illustra la definizione della funzione dopo l'aggiunta di un'associazione di output di archiviazione code a una funzione attivata tramite HTTP:

Poiché una funzione attivata da HTTP restituisce anche una risposta HTTP, la funzione restituisce un oggetto MultiResponse, che rappresenta sia l'output HTTP che quello della coda.

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

Questo esempio è la definizione dell'oggetto MultiResponse che include l'associazione di output:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Quando si applica tale esempio al proprio progetto, potrebbe essere necessario modificare HttpRequest in HttpRequestData e IActionResult in HttpResponseData, a seconda che si usi ASP.NET core integration o meno.

I messaggi vengono inviati alla coda al termine della funzione. Il modo in cui si definisce l'associazione di output dipende dal modello di processo. Per altre informazioni, inclusi i collegamenti al codice di associazione di esempio a cui è possibile fare riferimento, vedere Aggiungere associazioni a una funzione.

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

Per altre informazioni, inclusi i collegamenti al codice di associazione di esempio a cui è possibile fare riferimento, vedere Aggiungere associazioni a una funzione.

Associazione di esempio per Node.js modello v4 non ancora disponibile.

Il modo in cui si definisce l'associazione di output dipende dalla versione del modello di Node.js. Per altre informazioni, inclusi i collegamenti al codice di associazione di esempio a cui è possibile fare riferimento, vedere Aggiungere associazioni a una funzione.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Per altre informazioni, inclusi i collegamenti al codice di associazione di esempio a cui è possibile fare riferimento, vedere Aggiungere associazioni a una funzione.

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

Il modo in cui si definisce l'associazione di output dipende dalla versione del modello Python. Per altre informazioni, inclusi i collegamenti al codice di associazione di esempio a cui è possibile fare riferimento, vedere Aggiungere associazioni a una funzione.

Associazione di esempio per Node.js modello v4 non ancora disponibile.

Il modo in cui si definisce l'associazione di output dipende dalla versione del modello di Node.js. Per altre informazioni, inclusi i collegamenti al codice di associazione di esempio a cui è possibile fare riferimento, vedere Aggiungere associazioni a una funzione.

Accedere ad Azure

Prima di poter creare risorse di Azure o pubblicare l'app, è necessario accedere ad Azure.

  1. Se non si è ancora effettuato l'accesso, selezionare l'icona di Azure nella barra attività. Successivamente, in Risorse, selezionare Accedi ad Azure.

    Screenshot della finestra di accesso ad Azure in Visual Studio Code.

    Se si è già connessi e si possono visualizzare le sottoscrizioni esistenti, passare alla sezione successiva. Se non si dispone ancora di un account Azure, selezionare Crea un account Azure. Gli studenti possono selezionare Crea un account Microsoft Azure for Students.

  2. Quando viene visualizzata la richiesta nel browser, selezionare l'account Azure e accedere con le credenziali corrispondenti. Se si crea un nuovo account, è possibile accedere dopo la creazione dell'account.

  3. Dopo avere eseguito l'accesso, è possibile chiudere la nuova finestra del browser. Le sottoscrizioni che appartengono all'account Azure vengono visualizzate nella barra laterale.

Creazione di risorse Azure

Prima di poter pubblicare il progetto di Funzioni in Azure, è necessario disporre di un'app per le funzioni e delle risorse correlate nella sottoscrizione di Azure per eseguire il codice. L'app per le funzioni fornisce un contesto di esecuzione per le funzioni. Quando si pubblica da Visual Studio Code in un'app per le funzioni in Azure, il progetto viene inserito in un pacchetto e distribuito nell'app per le funzioni selezionata nella sottoscrizione di Azure.

Quando si crea un'app per le funzioni in Azure, è possibile scegliere un percorso di creazione rapida dell'app per le funzioni usando le impostazioni predefinite o un percorso che offre opzioni avanzate, ad esempio l'uso di risorse di Azure esistenti. In questo modo, si ha maggiore controllo sulla creazione delle risorse remote.

In questa sezione vengono create un'app per le funzioni e le risorse correlate nella sottoscrizione di Azure. Molte delle decisioni di creazione delle risorse vengono prese in base ai comportamenti predefiniti.

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi. Al prompt (>), immettere e selezionare Funzioni di Azure: Crea app per le funzioni in Azure.

  2. Ai prompt, immettere le informazioni seguenti:

    Richiesta Azione
    Selezionare la sottoscrizione Selezionare la sottoscrizione di Azure da usare. Il prompt non è visualizzato quando è visibile una sola sottoscrizione in Risorse.
    Immettere un nome univoco a livello globale per l'app per le funzioni Inserire un nome valido in un percorso URL. Il nome inserito viene convalidato per assicurarsi che sia univoco in Funzioni di Azure.
    Selezionare uno stack di runtime Selezionare la versione della lingua attualmente eseguita in locale.
    Selezionare una località per le nuove risorse Selezionare un'area di Azure. Per prestazioni ottimali, scegliere un'area vicina.

    L'estensione di Azure mostra lo stato delle singole risorse durante la creazione in Azure nel pannello Azure: Log attività.

    Screenshot che mostra il log della creazione di risorse di Azure.

  3. Quando viene creata l'app per le funzioni, nella sottoscrizione di Azure vengono create le risorse correlate seguenti. Le risorse vengono denominate in base al nome immesso per l'app per le funzioni.

    • Un gruppo di risorse, ovvero un contenitore logico di risorse correlate.
    • Un account di Archiviazione di Azure standard, che mantiene lo stato e altre informazioni sul progetto.
    • Un'app per le funzioni, che fornisce l'ambiente per l'esecuzione del codice della funzione. Un'app per le funzioni consente di raggruppare le funzioni come un'unità logica per semplificare la gestione, la distribuzione e la condivisione delle risorse all'interno dello stesso piano di hosting.
    • Un piano di Servizio app di Azure, che definisce l'host sottostante per l'app per le funzioni.
    • Istanza di Application Insights connessa all'app per le funzioni e che tiene traccia dell'uso delle funzioni nell'app.

    Dopo la creazione dell'app per le funzioni e dopo l'applicazione del pacchetto di distribuzione viene visualizzata una notifica.

    Suggerimento

    Per impostazione predefinita, le risorse di Azure richieste dall'app per le funzioni vengono create in base al nome immesso per l'app per le funzioni. Per impostazione predefinita, le risorse vengono create con l'app per le funzioni nello stesso gruppo di risorse. Se si desidera personalizzare i nomi delle risorse associate o riutilizzare le risorse esistenti, pubblicare il progetto con opzioni di creazione avanzate.

Creare una distribuzione di App Contenitore di Azure

Si usa Visual Studio Code per creare risorse di Azure per un progetto di codice in contenitori. Quando l'estensione rileva la presenza di un Dockerfile durante la creazione di risorse, chiede se si vuole distribuire l'immagine del contenitore anziché solo il codice. Visual Studio Code crea un ambiente di App Contenitore di Azure per il progetto di codice in contenitori integrato con Funzioni di Azure. Per altre informazioni, vedere Hosting di App contenitore di Azure di Funzioni di Azure.

Nota

La distribuzione del contenitore richiede l'estensione App Azure Container per Visual Studio Code. Questa estensione è attualmente disponibile in anteprima.

Il processo di creazione dipende dal fatto che si scelga una creazione rapida o che sia necessario usare le opzioni avanzate:

  1. In Visual Studio Code premere F1 per aprire il riquadro comandi e cercare ed eseguire il comando Azure Functions: Create Function App in Azure....

  2. Quando richiesto, scegliere Immagine contenitore.

  3. Quando richiesto, immettere le informazioni seguenti:

    Richiesta Selezione
    Selezionare la sottoscrizione scegliere la sottoscrizione da usare. Questa richiesta non verrà visualizzata quando è visibile una sola sottoscrizione in Risorse.
    Immettere un nome univoco a livello globale per l'app per le funzioni: digitare un nome valido in un percorso URL. Il nome digitato viene convalidato per assicurarsi che sia univoco in Funzioni di Azure.
    Selezionare una località per le nuove risorse per prestazioni ottimali, scegliere un'area vicina.

    L'estensione mostra lo stato delle singole risorse durante la creazione in Azure nel pannello Azure: Log attività.

Per altre informazioni sulle risorse necessarie per eseguire le funzioni in contenitori in App contenitore, vedere Risorse necessarie.

Nota

Non è attualmente possibile usare Visual Studio Code per distribuire un'app per le funzioni in contenitori in un ambiente app contenitore Funzioni di Azure integrato. È invece necessario pubblicare l'immagine del contenitore in un registro contenitori e quindi impostare tale immagine del Registro di sistema come origine di distribuzione per l'app per le funzioni ospitata in App contenitore. Per altre informazioni, vedere Creare l'app per le funzioni in un contenitore e Aggiornare un'immagine nel Registro di sistema.

Distribuire i file di progetto

È consigliabile configurare la distribuzione continua in modo che l'app per le funzioni in Azure venga aggiornata quando si aggiornano i file di origine nel percorso di origine connesso. È anche possibile distribuire i file di progetto da Visual Studio Code. Quando si pubblica da Visual Studio Code, è possibile sfruttare la tecnologia di distribuzione zip.

Importante

La distribuzione in un'app per le funzioni esistente sovrascrive sempre il contenuto di tale app in Azure.

  1. Nel riquadro comandi immettere quindi selezionare Funzioni di Azure: Distribuisci nell'app per le funzioni.

  2. Selezionare l'app per le funzioni appena creata. Quando viene richiesto di sovrascrivere le distribuzioni precedenti, selezionare Distribuisci per distribuire il codice della funzione nella nuova risorsa dell'app per le funzioni.

  3. Al termine della distribuzione, selezionare Visualizza output per visualizzare i risultati della creazione e della distribuzione, incluse le risorse di Azure create. Se non si riesce a visualizzare la notifica, selezionare l'icona della campana nell'angolo in basso a destra per visualizzarla di nuovo.

    Screenshot della finestra Visualizza output.

Ottenere l'URL di una funzione attivata tramite HTTP in Azure

Per chiamare una funzione attivata tramite HTTP da un client, è necessario l'URL della funzione, disponibile dopo la distribuzione nell'app per le funzioni. Questo URL include tutte le chiavi di funzione necessarie. È possibile usare l'estensione per ottenere questi URL per le funzioni distribuite. Se si vuole solo eseguire la funzione remota in Azure, usare la funzionalità usa la funzione Execute ora dell'estensione.

  1. Selezionare F1 per aprire il riquadro comandi e quindi trovare ed eseguire il comando Funzioni di Azure: Copia URL funzione.

  2. Seguire le istruzioni per selezionare l'app per le funzioni in Azure e quindi il trigger HTTP specifico che si vuole richiamare.

L'URL della funzione viene copiato negli Appunti, insieme alle chiavi necessarie passate dal parametro di query code. Usare uno strumento HTTP per inviare richieste POST o un browser per inviare richieste GET alla funzione remota.

Quando l'estensione ottiene l'URL di una funzione in Azure, l'estensione usa l'account Azure per recuperare automaticamente le chiavi necessarie per avviare la funzione. Altre informazioni sulle chiavi di accesso alle funzioni. L'avvio di funzioni attivate non HTTP richiede l'uso della chiave di amministrazione.

Eseguire funzioni

L'estensione Funzioni di Azure consente di eseguire singole funzioni. È possibile eseguire funzioni nel progetto nel computer di sviluppo locale o nella sottoscrizione di Azure.

Per le funzioni trigger HTTP, l'estensione chiama l'endpoint HTTP. Per altri tipi di trigger, l'estensione chiama le API amministratore per avviare la funzione. Il corpo del messaggio della richiesta inviata alla funzione dipende dal tipo di trigger. Quando un trigger richiede dati di test, viene richiesto di immettere i dati in un formato JSON specifico.

Eseguire funzioni in Azure

Per eseguire una funzione in Azure da Visual Studio Code, seguire questa procedura:

  1. Nel riquadro comandi immettere Funzioni di Azure: Esegui funzione ora e selezionare la sottoscrizione di Azure.

  2. Nell'elenco scegliere l'app per le funzioni in Azure. Se l'app per le funzioni non viene visualizzata, assicurarsi di aver eseguito l'accesso alla sottoscrizione corretta.

  3. Nell'elenco scegliere la funzione da eseguire. In Immettere il corpo della richiesta digitare il corpo del messaggio della richiesta e premere INVIO per inviare il messaggio di richiesta alla funzione.

    Il testo predefinito in Immettere il corpo della richiesta indica il formato del corpo. Se l'app per le funzioni non ha funzioni, viene visualizzato un errore di notifica con questo errore.

    Quando la funzione viene eseguita in Azure e restituisce una risposta, Visual Studio Code visualizza una notifica.

È anche possibile eseguire la funzione dall'area Azure: Funzioni aprendo il menu di scelta rapida per la funzione che si vuole eseguire dall'app per le funzioni nella sottoscrizione di Azure e quindi selezionando Esegui funzione ora....

Quando si eseguono le funzioni in Azure da Visual Studio Code, l'estensione usa l'account Azure per recuperare automaticamente le chiavi necessarie per avviare la funzione. Altre informazioni sulle chiavi di accesso alle funzioni. L'avvio di funzioni attivate non HTTP richiede l'uso della chiave di amministrazione.

Eseguire funzioni localmente

Il runtime locale è lo stesso runtime che ospita l'app per le funzioni in Azure. Le impostazioni locali vengono lette dal file local.settings.json. Per eseguire il progetto funzioni in locale, è necessario soddisfare altri requisiti.

Configurare il progetto per l'esecuzione in locale

Il runtime di Funzioni usa internamente un account di archiviazione di Azure per tutti i tipi di trigger diversi da HTTP e webhook. È quindi necessario impostare la chiave Values.AzureWebJobsStorage su una stringa di connessione valida dell'account di archiviazione di Azure.

Questa sezione usa l'estensione Archiviazione di Azure per Visual Studio Code con Azure Storage Explorer per connettersi e recuperare la stringa di connessione di archiviazione.

Per impostare la stringa di connessione dell'account di archiviazione:

  1. In Visual Studio aprire Cloud Explorer, espandere Account di archiviazione>Your Storage Account (Account di archiviazione personale), e quindi selezionare Proprietà e copiare il valore Stringa di connessione primaria.

  2. Nel progetto aprire il file local.settings.json e impostare il valore della chiave AzureWebJobsStorage sulla stringa di connessione copiata.

  3. Ripetere il passaggio precedente per aggiungere chiavi univoche alla matrice di Valori per tutte le altre connessioni richieste dalle funzioni.

Per maggiori informazioni, vedere File di impostazioni locali.

Eseguire il debug delle funzioni in locale

Per eseguire il debug delle funzioni, selezionare F5. Se Core Tools non è disponibile, viene richiesto di installarlo. Quando Core Tools è installato e in esecuzione, l'output viene visualizzato nel terminale. Questo passaggio equivale all'esecuzione del comando func start Core Tools dal terminale, ma con attività di compilazione aggiuntive e un debugger collegato.

Quando il progetto è in esecuzione, è possibile usare la funzionalità Esegui funzione ora... dell'estensione per attivare le funzioni come si farebbe quando il progetto viene distribuito in Azure. Con il progetto in esecuzione in modalità di debug, i punti di interruzione vengono raggiunti in Visual Studio Code come previsto.

  1. Nel riquadro comandi immettere Funzioni di Azure: Esegui funzione ora e scegliere Progetto locale.

  2. Scegliere la funzione da eseguire nel progetto e digitare il corpo del messaggio della richiesta in Immettere il corpo della richiesta. Premere INVIO per inviare il messaggio di richiesta alla funzione. Il testo predefinito in Immettere il corpo della richiesta deve indicare il formato del corpo. Se l'app per le funzioni non ha funzioni, viene visualizzato un errore di notifica con questo errore.

  3. Quando la funzione viene eseguita in locale e dopo la ricezione della risposta, viene generata una notifica in Visual Studio Code. Le informazioni sull'esecuzione della funzione sono visualizzate nel riquadro Terminale.

Le chiavi non sono necessarie durante l'esecuzione in locale, e questo vale sia per i tasti funzione che per i tasti di livello amministratore.

Usare le impostazioni dell'app in locale

Quando si esegue in un'app per le funzioni in Azure, le impostazioni richieste dalle funzioni vengono archiviate in modo sicuro nelle impostazioni dell'app. Durante lo sviluppo locale, queste impostazioni vengono invece aggiunte alla raccolta Values nel file local.settings.json. Il file local.settings.json archivia anche le impostazioni usate dagli strumenti di sviluppo locali.

Gli elementi nella raccolta di Values nel file di local.settings.json del progetto sono destinati a eseguire il mirroring degli elementi nelle impostazioni di applicazione dell'app per le funzioni in Azure.

Per impostazione predefinita, queste impostazioni non vengono migrate automaticamente quando il progetto viene pubblicato in Azure. Al termine della pubblicazione, è possibile pubblicare le impostazioni da local.settings.json all'app per le funzioni in Azure. Per altre informazioni, vedere Pubblicare le impostazioni dell'applicazione.

I valori in ConnectionStrings non vengono mai pubblicati.

I valori delle impostazioni dell'applicazione di funzione possono anche essere letti nel codice come variabili di ambiente. Per altre informazioni, vedere Variabili di ambiente.

  • I valori delle impostazioni dell'app di funzione possono anche essere letti nel codice come variabili di ambiente. Per altre informazioni, vedere Variabili di ambiente.
  • I valori delle impostazioni dell'app di funzione possono anche essere letti nel codice come variabili di ambiente. Per altre informazioni, vedere Variabili di ambiente.
  • I valori delle impostazioni dell'app di funzione possono anche essere letti nel codice come variabili di ambiente. Per altre informazioni, vedere Variabili di ambiente.
  • I valori delle impostazioni dell'app di funzione possono anche essere letti nel codice come variabili di ambiente. Per altre informazioni, vedere Variabili di ambiente.

Impostazioni dell'applicazione in Azure

Le impostazioni nel file local.settings.json nel progetto devono corrispondere alle impostazioni dell'applicazione nell'app per le funzioni in Azure. Tutte le impostazioni aggiunte a local.settings.json devono essere aggiunte anche all'app funzione in Azure. Queste impostazioni non vengono caricate automaticamente quando si pubblica il progetto. Analogamente, tutte le impostazioni create nell'app per le funzioni nel portale devono essere scaricate nel progetto locale.

Pubblicare le impostazioni dell'applicazione

Il modo più semplice per pubblicare le impostazioni necessarie nell'app per le funzioni in Azure consiste nell'usare il collegamento Carica impostazioni visualizzato dopo la pubblicazione del progetto:

Screenshot per caricare le impostazioni dell'applicazione.

È anche possibile pubblicare le impostazioni usando il comando Funzioni di Azure: Carica impostazione locale nel riquadro comandi. È possibile aggiungere singole impostazioni alle impostazioni dell'applicazione in Azure usando il comando Funzioni di Azure: Aggiungi nuova impostazione.

Suggerimento

Assicurarsi di salvare il file local.settings.json prima di pubblicarlo.

Se il file locale è crittografato, viene decrittografato, pubblicato e crittografato di nuovo. Se sono presenti impostazioni con valori in conflitto nelle due posizioni, viene richiesto di scegliere come procedere.

Visualizzare le impostazioni dell'app esistenti nell'area Azure: Funzioni espandendo la sottoscrizione, l'app per le funzioni e le impostazioni dell'applicazione.

 Screenshot per la visualizzazione delle impostazioni dell'app per le funzioni in Visual Studio Code.

Scaricare le impostazioni da Azure

Se sono state create le impostazioni dell'applicazione in Azure, è possibile scaricarle nel file local.settings.json usando il comando Funzioni di Azure: Scaricare le impostazioni remote.

Come per il caricamento, se il file locale è crittografato, viene decrittografato, aggiornato e crittografato di nuovo. Se sono presenti impostazioni con valori in conflitto nelle due posizioni, viene richiesto di scegliere come procedere.

Installare le estensioni di binding

Ad eccezione dei trigger HTTP e timer, i binding vengono implementati in pacchetti di estensione.

È necessario installare in modo esplicito i pacchetti di estensione per i trigger e le associazioni che ne hanno bisogno. Il pacchetto specifico installato dipende dal modello di processo del progetto.

Eseguire il comando dotnet add package nella finestra Terminale per installare i pacchetti di estensione necessari nel progetto. Questo modello illustra come aggiungere un'associazione per una libreria di classi processo isolato:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>

Sostituire <BINDING_TYPE_NAME> con il nome del pacchetto che contiene l'associazione necessaria. È possibile trovare l'articolo di riferimento di binding desiderato nell'elenco delle associazioni supportate.

Sostituire <TARGET_VERSION> nell'esempio con una specifica versione del pacchetto, come 3.0.0-beta5. Le versioni valide sono elencate nelle pagine dei singoli pacchetti in NuGet.org. Le versioni principali che corrispondono al runtime di Funzioni corrente vengono specificate nell'articolo di riferimento per l'associazione.

Suggerimento

È anche possibile usare i comandi NuGet in C# Dev Kit per installare i pacchetti di estensione di associazione.

Lo script C# usa bundle di estensioni.

Il modo più semplice per installare le estensioni di binding è consentire aggregazioni di estensione. Quando si abilitano i bundle, viene installato automaticamente un set predefinito di pacchetti di estensioni.

Per abilitare i bundle di estensioni, aprire il file host.json e aggiornarne il contenuto in modo che corrisponda al codice seguente:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.*, 4.0.0)"
    }
}

Se per qualche motivo non è possibile usare un bundle di estensione per installare le estensioni di associazione per il progetto, vedere Installazione esplicita delle estensioni.

Monitoraggio delle funzioni

Quando si eseguono funzioni in locale, i dati di log vengono trasmessi alla console del terminale. È anche possibile ottenere dati di log quando il progetto di Funzioni è in esecuzione in un'app per le funzioni in Azure. È possibile connettersi ai log di streaming in Azure per visualizzare i dati di log quasi in tempo reale. È consigliabile abilitare Application Insights per una comprensione più completa del comportamento dell'app per le funzioni.

Streaming dei log

Quando si sviluppa un'applicazione, è spesso utile visualizzare le informazioni di registrazione in tempo quasi reale. È possibile visualizzare un flusso di file di log generati dalle funzioni. Attivare i log dal pallet dei comandi con il comando Azure Functions: Start streaming logs. Questo output è un esempio di log di streaming per una richiesta a una funzione attivata da HTTP:

Screenshot per l'output dei log di streaming per il trigger H T T P.

Per altre informazioni, vedere Streaming dei log.

Application Insights

È consigliabile monitorare l'esecuzione delle funzioni integrando l'app per le funzioni con Application Insights. Quando si crea un'app per le funzioni nel portale di Azure, questa integrazione viene eseguita per impostazione predefinita. Quando si crea l'app per le funzioni durante la pubblicazione di Visual Studio, è necessario integrare manualmente Application Insights. Per informazioni su come, vedere Abilitare l'integrazione di Application Insights.

Per altre informazioni sul monitoraggio con Application Insights, vedere Monitorare Funzioni di Azure.

Progetti script C#

Per impostazione predefinita, tutti i progetti C# vengono creati come progetti di libreria di classi compilati in C#. Se invece si preferisce usare progetti script C#, è necessario selezionare script C# come linguaggio predefinito nelle impostazioni dell'estensione funzioni di Azure:

  1. Selezionare File>Preferenze>Impostazioni.

  2. Passare a Impostazioni utente>Estensioni>Funzioni di Azure.

  3. Selezionare C#Script da Funzione di Azure: Linguaggio di progetto.

Dopo aver completato questi passaggi, le chiamate effettuate agli strumenti di base sottostanti includono l'opzione --csx, che genera e pubblica file di progetto script C# (con estensione csx). Dopo aver specificato questo linguaggio predefinito, tutti i progetti creati per impostazione predefinita sono progetti script C#. Non viene richiesto di scegliere una lingua del progetto quando è impostata un'impostazione predefinita. Per creare progetti in altre lingue, è necessario modificare questa impostazione o rimuoverla dal file settings.json utente. Dopo aver rimosso questa impostazione, viene nuovamente richiesto di scegliere la lingua quando si crea un progetto.

Informazioni di riferimento sul riquadro comandi

L'estensione Funzioni di Azure offre un'interfaccia grafica utile nell'area per interagire con le app per le funzioni in Azure. La stessa funzionalità è disponibile anche come comandi nel riquadro comandi (F1). Questi comandi di Funzioni di Azure sono disponibili:

Comando funzioni di Azure Descrizione
Aggiungi nuove impostazioni Crea una nuova impostazione dell'applicazione in Azure. Per altre informazioni, vedere Pubblicare le impostazioni dell'applicazione. Potrebbe anche essere necessario scaricare questa impostazione nelle impostazioni locali.
Configurare l'origine della distribuzione Connette l'app per le funzioni in Azure a un repository Git locale. Per altre informazioni, vedere Distribuzione continua per Funzioni di Azure.
Connettersi al repository GitHub Connette l'app per le funzioni a un repository GitHub.
Copiare l'URL della funzione Ottiene l'URL remoto di una funzione attivata tramite HTTP in esecuzione in Azure. Per altre informazioni, vedere Ottenere l'URL della funzione distribuita.
Creare un'app per le funzioni in Azure Crea una nuova app per le funzioni nella sottoscrizione in Azure. Per altre informazioni, vedere la sezione relativa alla pubblicazione in una nuova app per le funzioni in Azure.
Decrittografare le impostazioni Decrittografa le impostazioni locali crittografate da Funzioni di Azure: Crittografa le impostazioni.
Eliminare l'app per le funzioni Rimuove un'app per le funzioni dalla sottoscrizione in Azure. Quando non sono presenti altre app nel piano di servizio app, è possibile eliminare anche quella. Altre risorse, ad esempio gli account di archiviazione e i gruppi di risorse, non vengono eliminate. Per rimuovere tutte le risorse, è consigliabile eliminare il gruppo di risorse. Il progetto locale non è interessato.
Elimina funzione Rimuove una funzione esistente da un'app per le funzioni in Azure. Poiché questa eliminazione non influisce sul progetto locale, prendere invece in considerazione la rimozione della funzione in locale e quindi la ripubblicazione del progetto.
Elimina proxy Rimuove un proxy di Funzioni di Azure dall'app per le funzioni in Azure. Per altre informazioni sui proxy, vedere Usare proxy di Funzioni di Azure.
Elimina impostazione Elimina un'impostazione dell'app per le funzioni in Azure. Questa eliminazione non influisce sulle impostazioni nel file local.settings.json.
Disconnettersi dal repository Rimuove la connessione di distribuzione continua tra un'app per le funzioni in Azure e un repository di controllo del codice sorgente.
Scarica impostazioni remote Scarica le impostazioni dall'app per le funzioni scelta in Azure nel file local.settings.json. Se il file locale è crittografato, viene decrittografato, aggiornato e crittografato di nuovo. Se sono presenti impostazioni con valori in conflitto nelle due posizioni, viene richiesto di scegliere come procedere. Assicurarsi di salvare le modifiche apportate al file local.settings.json prima di eseguire questo comando.
Modifica impostazioni Modifica il valore di un'impostazione esistente dell'app per le funzioni in Azure. Questo comando non influisce sulle impostazioni nel file local.settings.json.
Crittografare le impostazioni Crittografa i singoli elementi nella matrice di Values nelle impostazioni locali. In questo file IsEncrypted viene inoltre impostato su true, che specifica che le impostazioni di decrittografia del runtime locale prima di usarle. Crittografare le impostazioni locali per ridurre il rischio di perdita di informazioni preziose. In Azure le impostazioni dell'applicazione vengono sempre archiviate crittografate.
Esegui funzione ora Avvia manualmente una funzione usando le API di amministrazione. Questo comando viene usato per i test, sia in locale durante il debug che sulle funzioni in esecuzione in Azure. All'avvio di una funzione in Azure, l'estensione ottiene automaticamente una chiave di amministrazione, usata per chiamare le API di amministrazione remota che avviano le funzioni in Azure. Il corpo del messaggio inviato all'API dipende dal tipo di trigger. I trigger timer non richiedono il passaggio di dati.
Inizializzare il progetto per l'uso con VS Code Aggiunge i file di progetto di Visual Studio Code necessari a un progetto di Funzioni esistente. Usare questo comando per lavorare con un progetto creato usando Core Tools.
Installare o aggiornare gli strumenti di base di Funzioni di Azure Installa o aggiorna gli strumenti di base di Funzioni di Azure, che vengono usati per eseguire funzioni in locale.
Ripetere la distribuzione Consente di ridistribuire i file di progetto da un repository Git connesso a una distribuzione specifica in Azure. Per ripubblicare gli aggiornamenti locali da Visual Studio Code, ripubblicare il progetto.
Rinomina impostazioni Modifica il nome della chiave di un'impostazione esistente dell'app per le funzioni in Azure. Questo comando non influisce sulle impostazioni nel file local.settings.json. Dopo aver rinominato le impostazioni in Azure, è necessario scaricare tali modifiche nel progetto locale.
Riavviare Riavvia l'app per le funzioni in Azure. La distribuzione degli aggiornamenti riavvia anche l'app per le funzioni.
Impostare AzureWebJobsStorage Imposta il valore dell'impostazione dell'applicazione AzureWebJobsStorage. Questa impostazione è richiesta da Funzioni di Azure. Viene impostata quando viene creata un'app per le funzioni in Azure.
Avviare Avvia un'app per le funzioni arrestata in Azure.
Avviare lo streaming dei log Avvia i log di streaming per l'app per le funzioni in Azure. Usare i log di streaming durante la risoluzione dei problemi remoti in Azure se è necessario visualizzare le informazioni di registrazione quasi in tempo reale. Per altre informazioni, vedere Streaming dei log.
Stop Arresta un'app per le funzioni in esecuzione in Azure.
Arresta streaming dei log Arresta i log di streaming per l'app per le funzioni in Azure.
Attiva/disattiva come impostazione slot Se abilitata, garantisce che un'impostazione dell'applicazione sia persistente per uno slot di distribuzione specifico.
Disinstallare gli strumenti di base di Funzioni di Azure Rimuove gli strumenti di base di Funzioni di Azure, richiesti dall'estensione.
Carica impostazioni locali Carica le impostazioni dal file local.settings.json all'app per le funzioni scelta in Azure. Se il file locale è crittografato, viene decrittografato, caricato e crittografato di nuovo. Se sono presenti impostazioni con valori in conflitto nelle due posizioni, viene richiesto di scegliere come procedere. Assicurarsi di salvare le modifiche apportate al file local.settings.json prima di eseguire questo comando.
Visualizzare il commit in GitHub Mostra il commit più recente in una distribuzione specifica quando l'app per le funzioni è connessa a un repository.
Visualizzare registri di distribuzione Mostra i log per una distribuzione specifica nell'app per le funzioni in Azure.

Passaggi successivi

Per altre informazioni sugli strumenti di base di Funzioni di Azure, vedere Usare Azure Functions Core Tools.

Per altre informazioni sullo sviluppo di funzioni come librerie di classi .NET, vedere Guida di riferimento per gli sviluppatori C# di Funzioni di Azure. Questo articolo fornisce anche collegamenti a esempi d'uso degli attributi per dichiarare i vari tipi di associazioni supportati da Funzioni di Azure.