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, è possibile completare prima 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, è possibile completare prima 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, è possibile completare prima 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, è possibile completare prima 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, è possibile completare prima 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, è possibile completare prima 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.

  • L'Funzioni di Azure 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 Azure Functions: Install or Update Azure Functions Core Tools comando dal riquadro comandi.
  • Node.js, una delle versioni supportate. Usare il comando node --version per controllare la versione in uso.

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. Nella barra attività selezionare l'icona di Azure. Nell'area Area di lavoro (locale) aprire l'elenco + e selezionare Crea funzione.

    Screenshot della finestra di creazione di un nuovo progetto.

  2. Quando richiesto, selezionare Crea nuovo progetto. Selezionare il percorso 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.

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

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

    Screenshot per la selezione del trigger HTTP.

    Suggerimento

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

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

    Screenshot per la creazione dell'autorizzazione della funzione.

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

     Screenshot per selezionare Aggiungi all'area di lavoro.

  7. Nella finestra Considera attendibili gli autori dei file in questa cartella? selezionare .

    Screenshot per confermare l'attendibilità negli autori dei file.

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: gestisce le impostazioni usate quando si eseguono funzioni in locale. Queste impostazioni vengono usate solo quando si eseguono funzioni in locale. Per altre 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.

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:

  • File package.json nella cartella radice.

  • File denominato .js 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:

  • File di requirements.txt a livello di progetto che elenca i pacchetti richiesti da Funzioni.

  • 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 stringa di connessione per connettersi a un servizio, prepararlo prima di creare il trigger di 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.

  • File package.json nella cartella radice.

  • File denominato .js 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 MultiResponse oggetto 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 storageQueue funzione 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 associazione da aggiungere 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 l'associazione con la 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 Nome di un'impostazione dell'applicazione che contiene il stringa di connessione per l'account di archiviazione. L'impostazione AzureWebJobsStorage contiene il 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 associazione e seguire le stesse istruzioni.

In questo esempio, l'associazione seguente viene aggiunta alla bindings matrice 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:

L'elemento @queue_output Decorator nella funzione viene usato per definire un parametro di associazione denominato per l'output nella coda di archiviazione, dove func.Out definisce l'output scritto.

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

Poiché una funzione attivata da HTTP restituisce anche una risposta HTTP, la funzione restituisce un MultiResponse oggetto , 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 che include l'associazione MultiResponse 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 passare a e a HttpResponseData, a seconda che si usi o meno l'integrazione di ASP.NET IActionResult Core.HttpRequestDataHttpRequest

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 è già stato eseguito l'accesso, scegliere l'icona di Azure nella barra attività. Quindi nell'area Risorse scegliere Accedi ad Azure....

    Screenshot della finestra di accesso ad Azure all'interno di VS Code.

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

  2. Quando viene visualizzata la richiesta nel browser, scegliere 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.

Creare 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 avanzato. In questo modo, si ha maggiore controllo sulla creazione delle risorse remote.

Creazione rapida dell'app per le funzioni

In questa sezione viene creata un'app per le funzioni e le risorse correlate nella sottoscrizione di Azure.

  1. Scegliere l'icona di Azure nella barra attività. Nell'area Risorse selezionare quindi l'icona + e scegliere l'opzione Crea app per le funzioni in Azure .

    Creare una risorsa nella sottoscrizione di Azure

  2. Quando richiesto, immettere le informazioni seguenti:

    Prompt 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 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 uno stack di runtime Scegliere la versione della lingua in cui è stato eseguito localmente.
    Selezionare un percorso 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à.

    Log della creazione di risorse di Azure

  3. Al termine della creazione, nella sottoscrizione vengono create le risorse di Azure seguenti. Le risorse sono denominate in base al nome dell'app per le funzioni:

    • Gruppo di risorse, che è un contenitore logico per le risorse correlate.
    • Un account Archiviazione di Azure standard, che mantiene lo stato e altre informazioni sui progetti.
    • 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 servizio app, che definisce l'host sottostante per l'app per le funzioni.
    • Un'istanza di Application Insights connessa all'app per le funzioni, che tiene traccia dell'utilizzo 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 dell'app per le funzioni specificato. Per impostazione predefinita, vengono creati anche nello stesso nuovo gruppo di risorse con l'app per le funzioni. Se si desidera personalizzare i nomi di queste risorse o riutilizzare le risorse esistenti, è necessario pubblicare il progetto con opzioni di creazione avanzate.

Pubblicare un progetto in una nuova app per le funzioni in Azure usando opzioni avanzate

I passaggi seguenti pubblicano il progetto in una nuova app per le funzioni creata con opzioni di creazione avanzate:

  1. Nel riquadro comandi immettere Funzioni di Azure: Crea app per le funzioni in Azure... (Avanzate).

  2. Se non è stato effettuato l'accesso, viene richiesto di accedere ad Azure. È anche possibile creare un account di Azure gratuito. Dopo aver eseguito l'accesso dal browser, tornare a Visual Studio Code.

  3. Seguendo le istruzioni, specificare queste informazioni:

    Prompt Selezione
    Immettere un nome univoco globale per la nuova app per le funzioni. Digitare un nome univoco globale che identifichi la nuova app per le funzioni e quindi selezionare INVIO. I caratteri validi per un nome di app per le funzioni sono a-z, 0-9 e -.
    Selezionare uno stack di runtime. Scegliere la versione della lingua in esecuzione in locale.
    Selezionare un sistema operativo. Scegliere Linux o Windows. Le app Python devono essere eseguite in Linux.
    Selezionare un gruppo di risorse per le nuove risorse. Scegliere Crea nuovo gruppo di risorse e immettere un nome di gruppo di risorse, ad esempio myResourceGroup. È anche possibile selezionare un gruppo di risorse esistente.
    Select a location for new resources. Selezionare una località in un'area vicina o vicino ad altri servizi a cui accedono le funzioni.
    Selezionare un piano di hosting. Scegliere Consumo per l'hosting del piano a consumo serverless, in cui vengono addebitati costi solo quando le funzioni vengono eseguite.
    Selezionare un account di archiviazione. Scegliere Crea nuovo account di archiviazione e al prompt immettere un nome univoco globale per il nuovo account di archiviazione usato dall'app per le funzioni. Archiviazione nomi di account devono avere una lunghezza compresa tra 3 e 24 caratteri e può contenere solo numeri e lettere minuscole. È anche possibile selezionare un account esistente.
    Selezionare una risorsa di Application Insights per l'app. Scegliere Crea nuova risorsa di Application Insights e al prompt immettere un nome per l'istanza usata per archiviare i dati di runtime dalle funzioni.

    Una notifica viene visualizzata dopo la creazione dell'app per le funzioni e il pacchetto di distribuzione viene applicato. Per visualizzare i risultati della creazione e della distribuzione, incluse le risorse di Azure create, selezionare Visualizza output in questa notifica.

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 funzione Execute ora funzionalità 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 code query. 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.

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

Importante

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

  1. Nell'area Risorse dell'attività di Azure individuare la risorsa dell'app per le funzioni appena creata, fare clic con il pulsante destro del mouse sulla risorsa e scegliere Distribuisci nell'app per le funzioni....

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

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 Invio corpo della richiesta digitare il corpo del messaggio della richiesta e premere INVIO per inviare il messaggio di richiesta alla funzione.

    Il testo predefinito nel corpo della richiesta Enter 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 Funzioni di Azure 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 un account Archiviazione di Azure internamente per tutti i tipi di trigger diversi da HTTP e webhook. È quindi necessario impostare la chiave Values.AzureWebJobs Archiviazione su un account Archiviazione di Azure valido stringa di connessione.

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

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

  1. In Visual Studio aprire Cloud Explorer, espandere Archiviazione Account>Account Archiviazione Account e quindi selezionare Proprietà e copiare il valore Stringa 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 altre 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 func start comando 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 che si vuole 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 nel corpo della richiesta Enter 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, che si applicano sia alle chiavi di funzione che alle chiavi a livello di 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 Values raccolta nel file local.settings.json. Il file local.settings.json archivia anche le impostazioni usate dagli strumenti di sviluppo locali.

Gli elementi nella Values raccolta nel file di local.settings.json del progetto sono destinati a eseguire il mirroring degli elementi nelle impostazioni dell'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 per le funzioni 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 è necessario aggiungere anche all'app per le funzioni 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 l'applicazione Impostazioni.

 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 di local.settings.json usando il comando Funzioni di Azure: Scaricare Impostazioni remoto.

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, le associazioni vengono implementate nei 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 di 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 singole pagine del pacchetto in NuGet.org. Le versioni principali che corrispondono al runtime di Funzioni corrente vengono specificate nell'articolo di riferimento per l'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 quasi in tempo reale. È possibile visualizzare un flusso di file di log generati dalle funzioni. Attivare i log dal pallet dei comandi con il Azure Functions: Start streaming logs comando . 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 nella 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 di estensione Funzioni di Azure:

  1. Selezionare Preferenze> file>Impostazioni.

  2. Passare a User Impostazioni> Extensions> 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 fornisce 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 Funzioni di Azure sono disponibili:

comando Funzioni di Azure Descrizione
Aggiungi nuovo 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 Connessione l'app per le funzioni in Azure in un repository Git locale. Per altre informazioni, vedere Distribuzione continua per Funzioni di Azure.
Connessione al repository GitHub Connessione l'app per le funzioni in un repository GitHub.
Copy Function URL 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 Impostazioni Decrittografa le impostazioni locali crittografate da Funzioni di Azure: Crittografa 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 eliminarla anche. Altre risorse, ad esempio gli account di archiviazione e i gruppi di risorse, non vengono eliminate. Per rimuovere tutte le risorse, è invece necessario eliminare il gruppo di risorse. Il progetto locale non è interessato.
Funzione Delete 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 Funzioni di Azure dall'app per le funzioni in Azure. Per altre informazioni sui proxy, vedere Usare Funzioni di Azure proxy.
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.
Scaricare remote Impostazioni 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.
Modificare le 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 Values matrice 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 project 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 Funzioni di Azure Core Tools Installa o aggiorna Funzioni di Azure Core Tools, usato 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.
Rinominare 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 AzureWebJobs Archiviazione Imposta il valore dell'impostazione dell'applicazione AzureWebJobsStorage . Questa impostazione è richiesta da Funzioni di Azure. Viene impostato quando viene creata un'app per le funzioni in Azure.
Avviare Avvia un'app per le funzioni arrestata in Azure.
Avviare i log di streaming 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.
Arrestare i log di streaming 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 Funzioni di Azure Core Tools Rimuove Funzioni di Azure Core Tools, richiesto dall'estensione .
Caricare 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 i log di distribuzione Mostra i log per una distribuzione specifica nell'app per le funzioni in Azure.

Passaggi successivi

Per altre informazioni su Funzioni di Azure Core Tools, vedere Usare Funzioni di Azure 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 ad esempi di come usare gli attributi per dichiarare i vari tipi di associazioni supportate da Funzioni di Azure.