Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando possibile, è necessario creare e convalidare il progetto di codice di Funzioni di Azure in un ambiente di sviluppo locale. Azure Functions Core Tools offre una versione di runtime locale di Funzioni di Azure che si integra con gli strumenti di sviluppo più diffusi per uno sviluppo integrato, il debug e le distribuzioni. Le funzioni locali possono anche connettersi ai servizi di Azure in tempo reale.
Questo articolo fornisce alcune indicazioni condivise per lo sviluppo locale, ad esempio l'uso del file dilocal.settings.json. Sono inoltre disponibili collegamenti a linee guida specifiche dell'ambiente di sviluppo.
Suggerimento
È possibile trovare informazioni dettagliate su come sviluppare funzioni in locale negli articoli di materiale sussidiario specifico dell'IDE collegato.
Ambienti di sviluppo locale
Il modo in cui si sviluppano le funzioni nel computer locale dipende dal linguaggio e dalle preferenze relative agli strumenti. Assicurarsi di scegliere la lingua preferita nella parte superiore dell'articolo.
Suggerimento
Tutto lo sviluppo locale si basa su Azure Functions Core Tools per fornire il runtime di Funzioni per il debug in un ambiente locale.
È possibile usare questi ambienti di sviluppo per codificare le funzioni in locale nel linguaggio preferito:
Environment | Descrizione |
---|---|
Visual Studio | Gli strumenti di Funzioni di Azure sono inclusi nel carico di lavoro Sviluppo di Azure di Visual Studio. Consente di compilare e distribuire il codice della funzione C# in Azure come libreria di classi .NET. Include gli strumenti di base per il test locale. Per altre informazioni, vedere Creare la prima funzione C# in Azure con Visual Studio |
Visual Studio Code | L'estensione Funzioni di Azure per Visual Studio Code aggiunge il supporto di Funzioni a Visual Studio Code. Richiede gli strumenti di base. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Visual Studio Code. |
Prompt dei comandi o terminal | Azure Functions Core Tools fornisce il runtime di base e i modelli per la creazione di funzioni, che consentono lo sviluppo locale. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare una funzione C# in Azure dalla riga di comando. |
Environment | Descrizione |
---|---|
Maven | L'archetipo Maven usa Core Tools per abilitare lo sviluppo di funzioni Java. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Java e Maven. |
Visual Studio Code | L'estensione Funzioni di Azure per Visual Studio Code aggiunge il supporto di Funzioni a Visual Studio Code. Richiede gli strumenti di base. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Visual Studio Code. |
IntelliJ IDEA | Maven archetype e Core Tools consentono di sviluppare le funzioni usando IntelliJ. Per altre informazioni, vedere Creare la prima funzione Java in Azure con IntelliJ. |
Eclissi | Maven archetipo e Core Tools consentono di sviluppare le funzioni usando Eclipse. Per altre informazioni, vedere Creare la prima funzione Java in Azure usando Ecplise. |
Environment | Descrizione |
---|---|
Visual Studio Code | L'estensione Funzioni di Azure per Visual Studio Code aggiunge il supporto di Funzioni a Visual Studio Code. Richiede gli strumenti di base. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Visual Studio Code. |
Prompt dei comandi o terminal | Azure Functions Core Tools fornisce il runtime di base e i modelli per la creazione di funzioni, che consentono lo sviluppo locale. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare una funzione di Node.js in Azure dalla riga di comando. |
Environment | Descrizione |
---|---|
Visual Studio Code | L'estensione Funzioni di Azure per Visual Studio Code aggiunge il supporto di Funzioni a Visual Studio Code. Richiede gli strumenti di base. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Visual Studio Code. |
Prompt dei comandi o terminal | Azure Functions Core Tools fornisce il runtime di base e i modelli per la creazione di funzioni, che consentono lo sviluppo locale. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare una funzione di PowerShell in Azure dalla riga di comando. |
Environment | Descrizione |
---|---|
Visual Studio Code | L'estensione Funzioni di Azure per Visual Studio Code aggiunge il supporto di Funzioni a Visual Studio Code. Richiede gli strumenti di base. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare la prima funzione con Visual Studio Code. |
Prompt dei comandi o terminal | Azure Functions Core Tools fornisce il runtime di base e i modelli per la creazione di funzioni, che consentono lo sviluppo locale. Supporta lo sviluppo in Linux, macOS e Windows. Per altre informazioni, vedere Creare una funzione Python in Azure dalla riga di comando. |
Ognuno di questi ambienti di sviluppo locale consente di creare progetti di app per le funzioni e di usare modelli di funzione predefiniti per creare nuove funzioni. Ognuno di essi usa gli strumenti di base per consentire di testare ed eseguire il debug delle funzioni con il runtime reale di Funzioni di Azure nel proprio computer esattamente come qualsiasi altra app. È anche possibile pubblicare il progetto dell'app per le funzioni da uno di questi ambienti in Azure.
File di progetto locali
Una directory del progetto Functions contiene i file seguenti nella cartella radice del progetto, indipendentemente dalla lingua:
Nome del file | Descrizione |
---|---|
host.json | Per altre informazioni, vedere le informazioni di riferimento su host.json. |
local.settings.json | Impostazioni usate da Core Tools durante l'esecuzione in locale, incluse le impostazioni dell'app. Per altre informazioni, vedere local.settings.file. |
gitignore | Impedisce la pubblicazione accidentale del file local.settings.json in un repository Git. Per altre informazioni, vedere local.settings.file. |
.vscode\extensions.json | File di impostazioni usato quando si apre la cartella del progetto in Visual Studio Code. |
Gli altri file nel progetto dipendono dal linguaggio e dalle funzioni specifiche. Per altre informazioni, vedere la guida per sviluppatori per il linguaggio in uso.
File di impostazioni locali
Il file local.settings.json
archivia le impostazioni dell'app e le impostazioni utilizzate dagli strumenti di sviluppo locali. Le impostazioni nel file local.settings.json
vengono usate solo quando si esegue il progetto in locale. Quando si pubblica il progetto in Azure, assicurarsi di aggiungere anche le impostazioni necessarie alle impostazioni per l'app per le funzioni.
Importante
Poiché il local.settings.json
file potrebbe contenere segreti, ad esempio le stringhe di connessione, è consigliabile prestare attenzione al controllo del codice sorgente. Gli strumenti che supportano Funzioni consentono di sincronizzare le impostazioni nel file local.settings.json
con le impostazioni app nell'app per le funzioni in cui viene distribuito il progetto.
Il local.settings.json
file ha questa struttura:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
Queste impostazioni sono supportate quando si eseguono progetti in locale:
Impostazione | Descrizione |
---|---|
IsEncrypted |
Quando questa impostazione è impostata su true , tutti i valori vengono crittografati con una chiave del computer locale. Usato con i comandi func settings . Il valore predefinito è false . Potrebbe essere necessario crittografare il file local.settings.json nel computer locale quando contiene segreti, ad esempio le stringhe di connessione al servizio. L'host decrittografa automaticamente le impostazioni durante l'esecuzione. Usare il comando func settings decrypt prima di provare a leggere le impostazioni crittografate in locale. |
Values |
Raccolta di impostazioni dell'applicazione usate quando un progetto è in esecuzione in locale. Queste coppie chiave-valore (stringa-stringa) corrispondono alle impostazioni dell'applicazione nell'app per le funzioni in Azure, ad esempio AzureWebJobsStorage . Molti trigger e associazioni includono una proprietà che fa riferimento a un'impostazione di app per la stringa di connessione, ad esempio Connection per il trigger di archiviazione BLOB. Per queste proprietà è necessaria un'impostazione dell'applicazione definita nella matrice Values . Vedere la tabella successiva per un elenco di impostazioni usate di frequente. I valori devono essere stringhe e non oggetti o matrici JSON. I nomi delle impostazioni non possono includere una sottolineatura doppia ( __ ) e non dovrebbero includere due punti (: ). I caratteri di sottolineatura doppia sono riservati dal runtime e i due punti sono riservati per supportare l'inserimento delle dipendenze. |
Host |
Le impostazioni in questa sezione consentono di personalizzare il processo host di Funzioni durante l'esecuzione dei progetti in locale. Queste impostazioni sono distinte da quelle del file host.json, che vengono applicate anche quando si eseguono progetti in Azure. |
LocalHttpPort |
Consente di impostare la porta predefinita usata durante l'esecuzione nell'host locale di Funzioni, ovvero func host start e func run . L'opzione --port della riga di comando ha la precedenza su questa impostazione. Ad esempio, quando si esegue nell'IDE di Visual Studio, è possibile modificare il numero di porta passando alla finestra "Proprietà progetto -> Debug" e specificando in modo esplicito il numero di porta in un comando host start --port <your-port-number> che può essere fornito nel campo "Argomenti applicazione". |
CORS |
Definisce le origini consentite per la condivisione di risorse tra le origini (CORS). Le origini sono elencate in un elenco delimitato dalla virgola senza spazi. È supportato il valore del carattere jolly (*) che consente le richieste di qualsiasi origine. |
CORSCredentials |
Quando è impostata su true , consente le richieste withCredentials . |
ConnectionStrings |
Raccolta. Non usare questa raccolta per le stringhe di connessione usate per le associazioni di funzione. Questa raccolta viene usata solo dai framework che in genere ottengono le stringhe di connessione dalla sezione ConnectionStrings di un file di configurazione, ad esempio Entity Framework. Le stringhe di connessione in questo oggetto vengono aggiunte all'ambiente con il tipo di provider di System.Data.SqlClient. Gli elementi in questa raccolta non vengono pubblicati in Azure con altre impostazioni di app. È necessario aggiungere questi valori in modo esplicito alla raccolta Connection strings delle impostazioni dell'app per le funzioni. Se si crea una connessione SqlConnection nel codice di funzione, è consigliabile archiviare il valore della stringa di connessione insieme alle altre connessioni in Impostazione applicazione nel portale. |
Le impostazioni dell'applicazione seguenti possono essere incluse nella matrice Values
durante l'esecuzione in locale:
Impostazione | Valori | Descrizione |
---|---|---|
AzureWebJobsStorage |
Stringa di connessione dell'account di archiviazione oppureUseDevelopmentStorage=true |
Contiene la stringa di connessione per un account di archiviazione di Azure. Obbligatoria quando si usano trigger diversi da HTTP. Per altre informazioni, vedere il riferimento AzureWebJobsStorage .Quando l'emulatore Azurite è installato in locale e si imposta AzureWebJobsStorage su UseDevelopmentStorage=true , Core Tools usa l'emulatore. Per altre informazioni, vedere Emulatore di archiviazione locale. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true |false |
Per disabilitare una funzione durante l'esecuzione in locale, aggiungere "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" alla raccolta, dove <FUNCTION_NAME> è il nome della funzione. Per altre informazioni, vedere Come disabilitare le funzioni in Funzioni di Azure. |
FUNCTIONS_WORKER_RUNTIME |
dotnet dotnet-isolated node java powershell python |
Indica il linguaggio di destinazione del runtime di Funzioni. Obbligatoria per la versione 2.x e successive del runtime di Funzioni. Questa impostazione viene generata per il progetto da Core Tools. Vedere le informazioni di riferimento per FUNCTIONS_WORKER_RUNTIME . |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
Indica di usare PowerShell 7 durante l'esecuzione in locale. Se non è impostata, viene usato PowerShell Core 6. Questa impostazione viene usata solo durante l'esecuzione in locale. La versione del runtime di PowerShell è determinata dall'impostazione di configurazione del sito powerShellVersion , quando eseguita in Azure, che può essere impostata nel portale. |
Sincronizzare le impostazioni
Quando si sviluppano le funzioni in locale, tutte le impostazioni locali richieste dall’app devono essere presenti anche nelle impostazioni dell’app della app per le funzioni in cui viene distribuito il codice. Potrebbe anche essere necessario scaricare le impostazioni attuali dall'applicazione di funzione nel progetto locale. Sebbene sia possibile configurare manualmente le impostazioni dell'app nel portale di Azure, gli strumenti seguenti consentono anche di sincronizzare le impostazioni dell'app con le impostazioni locali nel progetto:
Trigger e associazioni
Quando si sviluppano le funzioni in locale, è necessario prendere in considerazione i comportamenti di trigger e binding. Per i trigger HTTP, è possibile chiamare l'endpoint HTTP nel computer locale usando http://localhost/
. Per le funzioni attivate non HTTP, sono disponibili diverse opzioni per l'esecuzione in locale:
- Il modo più semplice per testare le associazioni durante lo sviluppo locale consiste nell'usare stringhe di connessione destinate ai servizi di Azure in tempo reale. È possibile impostare come destinazione i servizi live aggiungendo le impostazioni della stringa di connessione appropriate nella matrice
Values
nel file local.settings.json. Quando si esegue questa operazione, le esecuzioni locali durante i test potrebbero influire sui servizi di produzione. Prendere invece in considerazione la configurazione di servizi separati da usare durante lo sviluppo e il test e quindi passare a servizi diversi durante l'ambiente di produzione. - Per i trigger basati sull'archiviazione, è possibile usare un emulatore di archiviazione locale.
- È possibile eseguire manualmente funzioni di trigger non HTTP usando endpoint di amministratore speciali. Per altre informazioni, vedere Eseguire manualmente una funzione non attivata da HTTP.
Durante i test locali, è necessario eseguire l'host fornito da Core Tools (func.exe) in locale. Per altre informazioni, vedere Azure Functions Core Tools.
Strumenti di test HTTP
Durante lo sviluppo, è facile chiamare uno qualsiasi degli endpoint di funzione da un Web browser quando supportano il metodo HTTP GET. Tuttavia, per altri metodi HTTP che supportano payload, ad esempio POST o PUT, è necessario usare uno strumento di test HTTP per creare e inviare queste richieste HTTP agli endpoint di funzione.
Attenzione
Per gli scenari in cui le richieste devono includere dati sensibili, assicurarsi di usare uno strumento che protegga i dati e riduca il rischio di esposizione di dati sensibili al pubblico. I dati sensibili da proteggere possono includere: credenziali, segreti, token di accesso, chiavi API, dati di georilevazione, anche dati personali.
È possibile proteggere i dati scegliendo uno strumento di test HTTP che funzioni offline o in locale, non sincronizza i dati nel cloud e non richiede l'accesso a un account online. Alcuni strumenti possono anche proteggere i dati dall'esposizione accidentale implementando funzionalità di sicurezza specifiche.
Evitare di usare strumenti che archiviano centralmente la cronologia delle richieste HTTP (incluse le informazioni riservate), non seguono le procedure di sicurezza consigliate o non rispettano i problemi di privacy dei dati.
Prendere in considerazione l'uso di uno di questi strumenti per l'invio sicuro di richieste HTTP agli endpoint di funzione:
- Visual Studio Code con un'estensione di Visual Studio Marketplace, ad esempio client REST.
- PowerShell Invoke-RestMethod
- Microsoft Edge - Strumento console di rete
- Bruno
- curl
Emulatore di archiviazione locale
Durante lo sviluppo locale, è possibile usare l'emulatore Azurite locale durante il test delle funzioni con le associazioni di Archiviazione di Azure (archiviazione code, archiviazione BLOB e archiviazione tabelle), senza dover connettersi ai servizi di archiviazione remota. Azurite si integra con Visual Studio Code e Visual Studio ed è anche possibile eseguirlo dal prompt dei comandi usando npm. Per altre informazioni, vedere Usare l'emulatore Azurite per lo sviluppo locale di Archiviazione di Azure.
L'impostazione seguente nella raccolta Values
del file local.settings.json indica all'host funzioni locale di usare Azurite per la connessione predefinita AzureWebJobsStorage
:
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
Con questo valore di impostazione, qualsiasi trigger o associazione di Archiviazione di Azure che usa AzureWebJobsStorage
come connessione si connette a Azurite durante l'esecuzione in locale. Tenere presenti queste considerazioni quando si usa l'emulazione dell'archiviazione durante l'esecuzione locale:
- È necessario che Azurite sia installato e in esecuzione.
- È necessario testare con una connessione di archiviazione effettiva ai servizi di Azure prima di eseguire la pubblicazione in Azure.
- Quando si pubblica il progetto, non pubblicare l'impostazione
AzureWebJobsStorage
comeUseDevelopmentStorage=true
. In Azure l'impostazioneAzureWebJobsStorage
deve essere sempre la stringa di connessione dell'account di archiviazione usato dall'app per le funzioni. Per altre informazioni, vedereAzureWebJobsStorage
.
Articoli correlati
- Per altre informazioni sullo sviluppo locale di funzioni con Visual Studio, vedere Sviluppare funzioni di Azure con Visual Studio.
- Per altre informazioni sullo sviluppo locale di funzioni con Visual Studio Code in un computer Mac, Linux o Windows, vedere Sviluppare funzioni di Azure con Visual Studio Code.
- Per altre informazioni sullo sviluppo di funzioni al prompt dei comandi o terminal, vedere la pagina relativa agli strumenti di base per Funzioni di Azure.