Usare Strumenti di base di Funzioni di AzureWork with Azure Functions Core Tools

Strumenti di base di Funzioni di Azure consente di sviluppare e testare le funzioni nel computer locale dal prompt dei comandi o terminale.Azure Functions Core Tools lets you develop and test your functions on your local computer from the command prompt or terminal. Le funzioni locali possono connettersi ai servizi di Azure attivi ed è possibile eseguire il debug delle funzioni nel computer locale usando il runtime completo di Funzioni di Azure.Your local functions can connect to live Azure services, and you can debug your functions on your local computer using the full Functions runtime. È anche possibile distribuire un'app per le funzioni all'abbonamento di Azure.You can even deploy a function app to your Azure subscription.

Importante

Non combinare lo sviluppo locale con lo sviluppo del portale nella stessa app per le funzioni.Do not mix local development with portal development in the same function app. Quando si creano e si pubblicano le funzioni da un progetto locale, non tentare di gestire o modificare il codice di progetto nel portale.When you create and publish functions from a local project, you should not try to maintain or modify project code in the portal.

Lo sviluppo di funzioni nel computer locale e la relativa pubblicazione in Azure usando strumenti di base segue questi passaggi di base:Developing functions on your local computer and publishing them to Azure using Core Tools follows these basic steps:

Le versioni degli strumenti di baseCore Tools versions

Sono disponibili due versioni degli strumenti di base di Funzioni di Azure.There are two versions of Azure Functions Core Tools. La versione in uso dipende dall'ambiente di sviluppo locale, dalla scelta della lingua e dal livello di supporto richiesto:The version you use depends on your local development environment, choice of language, and level of support required:

Se non specificato diversamente, gli esempi in questo articolo si riferiscono alla versione 2.x.Unless otherwise noted, the examples in this article are for version 2.x.

Installare gli strumenti di base per Funzioni di AzureInstall the Azure Functions Core Tools

Strumenti di base di Funzioni di Azure comprende una versione dello stesso runtime che alimenta Funzioni di Azure che è possibile eseguire nel computer di sviluppo locale.Azure Functions Core Tools includes a version of the same runtime that powers Azure Functions runtime that you can run on your local development computer. Fornisce anche i comandi per creare le funzioni, connettersi ad Azure e distribuire i progetti della funzione.It also provides commands to create functions, connect to Azure, and deploy function projects.

Versione 2.xVersion 2.x

La versione 2.x degli strumenti usa il runtime di Funzioni di Azure 2.x basata su .NET Core.Version 2.x of the tools uses the Azure Functions runtime 2.x that is built on .NET Core. Questa versione è supportata su tutte le piattaforme supportate da .NET Core 2.x, incluse Windows, macOS e Linux.This version is supported on all platforms .NET Core 2.x supports, including Windows, macOS, and Linux.

Importante

È possibile ignorare il requisito dell'installazione di .NET Core 2.x SDK usando bundle estensione.You can bypass the requirement for installing the .NET Core 2.x SDK by using extension bundles.

WindowsWindows

I passaggi seguenti usano npm per installare gli strumenti di base in Windows.The following steps use npm to install Core Tools on Windows. È anche possibile usare Chocolatey.You can also use Chocolatey. Per altre informazioni, vedere il file leggimi degli strumenti di base.For more information, see the Core Tools readme.

  1. Installare Node.js, che include npm.Install Node.js, which includes npm. Per la versione 2.x degli strumenti, sono supportate solo le versioni Node.js 8.5 e successive.For version 2.x of the tools, only Node.js 8.5 and later versions are supported.

  2. Installare il pacchetto degli strumenti di base:Install the Core Tools package:

    npm install -g azure-functions-core-tools
    
  3. Se non si prevede di utilizzare bundle estensione, installare il .NET Core 2.x SDK per Windows.If you do not plan to use extension bundles, install the .NET Core 2.x SDK for Windows.

MacOS con HomebrewMacOS with Homebrew

I passaggi seguenti usano Homebrew per installare gli strumenti di base su macOS.The following steps use Homebrew to install the Core Tools on macOS.

  1. Installare Homebrew, se non è già installato.Install Homebrew, if it's not already installed.

  2. Installare il pacchetto degli strumenti di base:Install the Core Tools package:

    brew tap azure/functions
    brew install azure-functions-core-tools
    
  3. Se non si prevede di utilizzare bundle estensione, installare .NET Core 2.x SDK per macOS.If you do not plan to use extension bundles, install .NET Core 2.x SDK for macOS.

Linux (Ubuntu/Debian) con APTLinux (Ubuntu/Debian) with APT

La procedura seguente usa APT per installare gli strumenti di base nella distribuzione Ubuntu/Debian Linux.The following steps use APT to install Core Tools on your Ubuntu/Debian Linux distribution. Per altre distribuzioni Linux, vedere il file leggimi degli strumenti di base.For other Linux distributions, see the Core Tools readme.

  1. Registrare il codice Product Key di Microsoft come attendibile:Register the Microsoft product key as trusted:

    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
    sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
    
  2. Verificare che il server Ubuntu esegua uno delle versioni appropriate nella tabella seguente.Verify your Ubuntu server is running one of the appropriate versions from the table below. Per aggiungere l'origine apt, eseguire:To add the apt source, run:

    sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
    sudo apt-get update
    
    Distribuzione LinuxLinux distribution VersionVersion
    Ubuntu 18.10Ubuntu 18.10 cosmic
    Ubuntu 18.04Ubuntu 18.04 bionic
    Ubuntu 17.04Ubuntu 17.04 zesty
    Ubuntu 16.04/Linux Mint 18Ubuntu 16.04/Linux Mint 18 xenial
  3. Installare il pacchetto degli strumenti di base:Install the Core Tools package:

    sudo apt-get install azure-functions-core-tools
    
  4. Se non si prevede di utilizzare bundle estensione, installare .NET Core 2.x SDK per Linux.If you do not plan to use extension bundles, install .NET Core 2.x SDK for Linux.

Creare un progetto Funzioni localeCreate a local Functions project

Una directory del progetto Funzioni contiene i file host.json e local.settings.json nonché le sottocartelle che includono il codice per le singole funzioni.A functions project directory contains the files host.json and local.settings.json, along with subfolders that contain the code for individual functions. Questa directory è l'equivalente di un'app per le funzioni in Azure.This directory is the equivalent of a function app in Azure. Per altre informazioni sulla struttura delle cartelle di Funzioni, vedere la Guida per sviluppatori di Funzioni di Azure.To learn more about the Functions folder structure, see the Azure Functions developers guide.

La versione 2.x richiede la selezione di una lingua predefinita per il progetto quando esso viene inizializzato e tutte le funzioni aggiunte usano modelli di lingua predefiniti.Version 2.x requires you to select a default language for your project when it is initialized, and all functions added use default language templates. Nella versione 1.x, specificare la lingua ogni volta che si crea una funzione.In version 1.x, you specify the language each time you create a function.

Nella finestra del terminale o da un prompt dei comandi, eseguire il comando seguente per creare il progetto e l’archivio Git locale:In the terminal window or from a command prompt, run the following command to create the project and local Git repository:

func init MyFunctionProj

Quando si fornisce un nome di progetto, viene creata e inizializzata una nuova cartella con lo stesso nome.When you provide a project name, a new folder with that name is created and initialized. In caso contrario, viene inizializzata la cartella corrente.Otherwise, the current folder is initialized.
Nella versione 2.x, quando si esegue il comando è necessario scegliere un runtime per il progetto.In version 2.x, when you run the command you must choose a runtime for your project. Se si prevede di sviluppare funzioni di JavaScript, scegliere nodo:If you plan to develop JavaScript functions, choose node:

Select a worker runtime:
dotnet
node

Usare le frecce su/giù per scegliere una lingua, quindi premere INVIO.Use the up/down arrow keys to choose a language, then press Enter. L'output ha un aspetto simile all'esempio seguente per un progetto JavaScript:The output looks like the following example for a JavaScript project:

Select a worker runtime: node
Writing .gitignore
Writing host.json
Writing local.settings.json
Writing C:\myfunctions\myMyFunctionProj\.vscode\extensions.json
Initialized empty Git repository in C:/myfunctions/myMyFunctionProj/.git/

func init supporta le opzioni seguenti, che sono disponibili solo nella versione 2.x, se non specificato diversamente:func init supports the following options, which are version 2.x-only, unless otherwise noted:

OpzioneOption DescrizioneDescription
--csx Inizializza un progetto di script C# (file con estensione csx).Initializes a C# script (.csx) project. È necessario specificare --csx nei comandi successivi.You must specify --csx in subsequent commands.
--docker Creare un Dockerfile per un contenitore usando un'immagine di base che è basata sulla classe --worker-runtime selezionata.Create a Dockerfile for a container using a base image that is based on the chosen --worker-runtime. Usare questa opzione quando si prevede di pubblicare in un contenitore Linux personalizzato.Use this option when you plan to publish to a custom Linux container.
--force Inizializzare il progetto anche se contiene file esistenti.Initialize the project even when there are existing files in the project. Questa impostazione sovrascrive i file esistenti con lo stesso nome.This setting overwrites existing files with the same name. Gli altri file nella cartella del progetto non sono interessati.Other files in the project folder aren't affected.
--no-source-control -n Impedisce la creazione predefinita di un repository GIT nella versione 1.x.Prevents the default creation of a Git repository in version 1.x. Nella versione 2.x il repository GIT non viene creato per impostazione predefinita.In version 2.x, the git repository isn't created by default.
--source-control Controlla se viene creato un repository GIT.Controls whether a git repository is created. Per impostazione predefinita, non viene creato un repository.By default, a repository isn't created. Quando è true viene creato un repository.When true, a repository is created.
--worker-runtime Imposta il runtime del linguaggio per il progetto.Sets the language runtime for the project. I valori supportati sono dotnet, node (JavaScript), java e python.Supported values are dotnet, node (JavaScript), java, and python. Quando non è impostato, durante l'inizializzazione viene richiesto di scegliere il runtime.When not set, you are prompted to choose your runtime during initialization.

Importante

Per impostazione predefinita, la versione 2.x degli strumenti di base crea progetti di app per le funzioni per il runtime .NET come progetti di classe C# (file con estensione csproj).By default, version 2.x of the Core Tools creates function app projects for the .NET runtime as C# class projects (.csproj). Tali progetti C#, che possono essere usati con Visual Studio o Visual Studio Code, vengono compilati durante la fase di test e alla pubblicazione in Azure.These C# projects, which can be used with Visual Studio or Visual Studio Code, are compiled during testing and when publishing to Azure. Se invece si prevede di creare e usare gli stessi file di script C# (con estensione csx) creati nella versione 1.x e nel portale, è necessario includere il parametro --csx quando si creano e si distribuiscono funzioni.If you instead want to create and work with the same C# script (.csx) files created in version 1.x and in the portal, you must include the --csx parameter when you create and deploy functions.

Registrare le estensioniRegister extensions

Nella versione 2.x del runtime di Funzioni di Azure è necessario registrare in modo esplicito le estensioni delle associazioni(tipi di associazioni) usate nell'app per le funzioni.In version 2.x of the Azure Functions runtime, you have to explicitly register the binding extensions (binding types) that you use in your function app.

Bundle di estensione per apportare tutte le associazioni pubblicate dal team di funzioni di Azure disponibile tramite un'impostazione nel host. JSON file.Extension bundles make all bindings published by the Azure Functions team available through a setting in the host.json file. Per lo sviluppo locale, assicurarsi di aver la versione più recente di Azure Functions Core Tools.For local development, ensure you have the latest version of Azure Functions Core Tools.

Per usare pacchetti di estensione, aggiornare il host. JSON file da includere la voce seguente per extensionBundle:To use extension bundles, update the host.json file to include the following entry for extensionBundle:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}
  • Il id proprietà fa riferimento a spazio dei nomi per il bundle di estensione per funzioni di Microsoft Azure.The id property references the namespace for Microsoft Azure Functions extension bundles.
  • Il version fa riferimento alla versione del bundle.The version references the version of the bundle.

Riunire incremento delle versioni in pacchetti le modifiche di bundle.Bundle versions increment as packages in the bundle changes. Modifiche di versione principale si verificano quando i pacchetti del bundle spostare solo una versione principale.Major version changes happen only when packages in the bundle move a major version. Il version utilizzata dalla proprietà di notazione di intervallo per la specifica di intervalli di versione.The version property uses the interval notation for specifying version ranges. Il runtime di funzioni sceglie sempre la versione massima consentita definita per l'intervallo e intervallo di versioni.The Functions runtime always picks the maximum permissible version defined by the version range or interval.

Quando si fa riferimento i bundle di estensione nel progetto, quindi tutte le associazioni predefinite sono disponibili per le funzioni.Once you reference the extension bundles in your project, then all default bindings are available to your functions. Le associazioni disponibili nel bundle estensione sono:The bindings available in the extension bundle are:

PacchettoPackage VersionVersion
Microsoft.Azure.WebJobs.Extensions.CosmosDBMicrosoft.Azure.WebJobs.Extensions.CosmosDB 3.0.33.0.3
Microsoft.Azure.WebJobs.Extensions.DurableTaskMicrosoft.Azure.WebJobs.Extensions.DurableTask 1.8.01.8.0
Microsoft.Azure.WebJobs.Extensions.EventGridMicrosoft.Azure.WebJobs.Extensions.EventGrid 2.0.02.0.0
Microsoft.Azure.WebJobs.Extensions.EventHubsMicrosoft.Azure.WebJobs.Extensions.EventHubs 3.0.33.0.3
Microsoft.Azure.WebJobs.Extensions.SendGridMicrosoft.Azure.WebJobs.Extensions.SendGrid 3.0.03.0.0
Microsoft.Azure.WebJobs.Extensions.ServiceBusMicrosoft.Azure.WebJobs.Extensions.ServiceBus 3.0.33.0.3
Microsoft.Azure.WebJobs.Extensions.SignalRServiceMicrosoft.Azure.WebJobs.Extensions.SignalRService 1.0.01.0.0
Microsoft.Azure.WebJobs.Extensions.StorageMicrosoft.Azure.WebJobs.Extensions.Storage 3.0.43.0.4
Microsoft.Azure.WebJobs.Extensions.TwilioMicrosoft.Azure.WebJobs.Extensions.Twilio 3.0.03.0.0

Per altre informazioni, vedere Concetti relativi a trigger e associazioni in Funzioni di Azure.For more information, see Azure Functions triggers and bindings concepts.

File di impostazioni localiLocal settings file

Il file local.settings.json archivia le impostazioni di app, le stringhe di connessione e le impostazioni per Strumenti di base di Funzioni di Azure.The file local.settings.json stores app settings, connection strings, and settings for Azure Functions Core Tools. Le impostazioni nel file local.settings.json vengono usate solo per gli strumenti delle funzioni durante l'esecuzione in locale.Settings in the local.settings.json file are only used by Functions tools when running locally. Per impostazione predefinita, queste impostazioni non vengono migrate automaticamente quando il progetto viene pubblicato in Azure.By default, these settings are not migrated automatically when the project is published to Azure. Utilizzare lo switch --publish-local-settings durante la pubblicazione per assicurarsi che queste impostazioni vengano aggiunte all'app della funzione in Azure.Use the --publish-local-settings switch when you publish to make sure these settings are added to the function app in Azure. I valori in ConnectionStrings non vengono mai pubblicati.Values in ConnectionStrings are never published. Il file presenta la struttura seguente:The file has the following structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}
ImpostazioneSetting DescrizioneDescription
IsEncrypted Se impostato su true, tutti i valori sono crittografati usando una chiave del computer locale.When set to true, all values are encrypted using a local machine key. Usato con i comandi func settings.Used with func settings commands. Il valore predefinito è false.Default value is false.
Values Raccolta di impostazioni dell'applicazione e stringhe di connessioni usate durante l'esecuzione in locale.Collection of application settings and connection strings used when running locally. Questi valori corrispondono alle impostazioni dell'app nell'app per le funzioni in Azure, ad esempio AzureWebJobsStorage .These values correspond to app settings in your function app in Azure, such as AzureWebJobsStorage. Molti trigger e associazioni presentano una proprietà che fa riferimento a un'impostazione app stringa di connessione, ad esempio Connection per il trigger di archiviazione Blob.Many triggers and bindings have a property that refers to a connection string app setting, such as Connection for the Blob storage trigger. Per tali proprietà, è necessario un'impostazione dell'applicazione definita nel Values matrice.For such properties, you need an application setting defined in the Values array.
AzureWebJobsStorage è l'impostazione app obbligatoria per i trigger diversi da HTTP.AzureWebJobsStorage is a required app setting for triggers other than HTTP.
Versione 2.x del runtime di funzioni richiede la FUNCTIONS_WORKER_RUNTIME impostazione, che viene generato per il progetto da strumenti di base.Version 2.x of the Functions runtime requires the FUNCTIONS_WORKER_RUNTIME setting, which is generated for your project by Core Tools.
Quando si dispone di emulatore di archiviazione di Azure installato in locale, è possibile impostare AzureWebJobsStorage a UseDevelopmentStorage=true e strumenti di base usa l'emulatore.When you have the Azure storage emulator installed locally, you can set AzureWebJobsStorage to UseDevelopmentStorage=true and Core Tools uses the emulator. Ciò è utile durante lo sviluppo, ma è consigliabile testare con una connessione di archiviazione reale prima della distribuzione.This is useful during development, but you should test with an actual storage connection before deployment.
Host Le impostazioni in questa sezione consentono di personalizzare il processo host di Funzioni durante l'esecuzione in locale.Settings in this section customize the Functions host process when running locally.
LocalHttpPort Consente di impostare la porta predefinita usata durante l'esecuzione nell'host locale di Funzioni, ovvero func host start e func run.Sets the default port used when running the local Functions host (func host start and func run). L'opzione --port della riga di comando ha la precedenza su questo valore.The --port command-line option takes precedence over this value.
CORS Definisce le origini consentite per la condivisione di risorse tra le origini (CORS).Defines the origins allowed for cross-origin resource sharing (CORS). Le origini sono elencate in un elenco delimitato dalla virgola senza spazi.Origins are supplied as a comma-separated list with no spaces. È supportato il valore del carattere jolly (*) che consente le richieste di qualsiasi origine.The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials Impostarla su true per consentire withCredentials richiesteSet it to true to allow withCredentials requests
ConnectionStrings Non usare questa raccolta per le stringhe di connessione usate per l'associazione di funzione.Do not use this collection for the connection strings used by your function bindings. Questa raccolta viene usata solo da parte di Framework che in genere ottengono le stringhe di connessione dal ConnectionStrings sezione di configurazione di una file, ad esempio Entity Framework.This collection is only used by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, such as Entity Framework. Le stringhe di connessione in questo oggetto vengono aggiunte all'ambiente con il tipo di provider di System.Data.SqlClient.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Gli elementi in questa raccolta non vengono pubblicati in Azure con altre impostazioni di app.Items in this collection are not published to Azure with other app settings. È necessario aggiungere in modo esplicito questi valori per il Connection strings raccolta di impostazioni dell'app di funzione.You must explicitly add these values to the Connection strings collection of your function app settings. Se si sta creando un SqlConnection nel codice della funzione, è consigliabile archiviare il valore di stringa di connessione nel le impostazioni dell'applicazione nel portale con le altre connessioni.If you are creating a SqlConnection in your function code, you should store the connection string value in Application Settings in the portal with your other connections.

I valori delle impostazioni dell'app di funzione possono anche essere letti nel codice come variabili di ambiente.The function app settings values can also be read in your code as environment variables. Per altre informazioni, vedere la sezione Variabili di ambiente negli argomenti di riferimento specifici del linguaggio seguenti:For more information, see the Environment variables section of these language-specific reference topics:

Quando non è impostata alcuna stringa di connessione di archiviazione valida per AzureWebJobsStorage e l'emulatore non viene usata, viene visualizzato il messaggio di errore seguente:When no valid storage connection string is set for AzureWebJobsStorage and the emulator isn't being used, the following error message is shown:

Valore mancante per AzureWebJobsStorage in local.settings.json.Missing value for AzureWebJobsStorage in local.settings.json. È necessario per tutti i trigger diversi da HTTP.This is required for all triggers other than HTTP. È possibile eseguire 'func azure functionapp fetch-app-settings <functionAppName>' o specificare una stringa di connessione in local.settings.json.You can run 'func azure functionapp fetch-app-settings <functionAppName>' or specify a connection string in local.settings.json.

Ottenere le stringhe di connessione di archiviazioneGet your storage connection strings

Anche quando si usa l'emulatore di archiviazione per lo sviluppo, si può desiderare di eseguire il test con una connessione di archiviazione effettiva.Even when using the storage emulator for development, you may want to test with an actual storage connection. Se si dispone che si è già creato un account di archiviazione, è possibile ottenere una stringa di connessione di archiviazione valida in uno dei modi seguenti:Assuming you have already created a storage account, you can get a valid storage connection string in one of the following ways:

  • Nel portale di Azure.From the Azure portal. Passare all'account di archiviazione, selezionare Chiavi di accesso in Impostazioni, quindi copiare uno dei valori della Stringa di connessione.Navigate to your storage account, select Access keys in Settings, then copy one of the Connection string values.

    Copiare la stringa di connessione dal portale di Azure

  • Usare Azure Storage Explorer per collegarsi all'account di Azure.Use Azure Storage Explorer to connect to your Azure account. In Explorer, espandere la propria sottoscrizione, selezionare l'account di archiviazione e copiare la stringa di connessione primaria o secondaria.In the Explorer, expand your subscription, select your storage account, and copy the primary or secondary connection string.

    Copiare la stringa di connessione da Storage Explorer

  • Usare strumenti di base per scaricare la stringa di connessione da Azure con uno dei seguenti comandi:Use Core Tools to download the connection string from Azure with one of the following commands:

    • Scaricare tutte le impostazioni di un'app di funzione esistente:Download all settings from an existing function app:

      func azure functionapp fetch-app-settings <FunctionAppName>
      
    • Ottenere la stringa di connessione per uno specifico account di archiviazione:Get the Connection string for a specific storage account:

      func azure storage fetch-connection-string <StorageAccountName>
      

      Quando l'accesso ad Azure non è ancora stato eseguito, viene richiesto di farlo.When you are not already signed in to Azure, you are prompted to do so.

Creare una funzioneCreate a function

Eseguire il comando seguente per creare una funzione:To create a function, run the following command:

func new

Nella versione 2.x, quando si esegue func new viene richiesto di scegliere un modello nella lingua predefinita dell'app per le funzioni, quindi viene anche richiesto di scegliere un nome per la funzione.In version 2.x, when you run func new you are prompted to choose a template in the default language of your function app, then you are also prompted to choose a name for your function. Nella versione 1.x, viene anche richiesto di scegliere la lingua.In version 1.x, you are also prompted to choose the language.

Select a language: Select a template:
Blob trigger
Cosmos DB trigger
Event Grid trigger
HTTP trigger
Queue trigger
SendGrid
Service Bus Queue trigger
Service Bus Topic trigger
Timer trigger

Il codice della funzione viene generato in una sottocartella con il nome della funzione fornito, come è possibile vedere nell'output del trigger della coda seguente:Function code is generated in a subfolder with the provided function name, as you can see in the following queue trigger output:

Select a language: Select a template: Queue trigger
Function name: [QueueTriggerJS] MyQueueTrigger
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\index.js
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\readme.md
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\sample.dat
Writing C:\myfunctions\myMyFunctionProj\MyQueueTrigger\function.json

È anche possibile specificare queste opzioni nel comando usando gli argomenti seguenti:You can also specify these options in the command using the following arguments:

ArgomentoArgument DescrizioneDescription
--csx (Versione 2.x) Genera gli stessi modelli script C# (con estensione csx) usati nella versione 1.x e nel portale.(Version 2.x) Generates the same C# script (.csx) templates used in version 1.x and in the portal.
--language -l Il linguaggio di programmazione del modello, come C#, F# o JavaScript.The template programming language, such as C#, F#, or JavaScript. Questa opzione è necessaria nella versione 1.x.This option is required in version 1.x. Nella versione 2.x non usare questa opzione o scegliere una lingua che corrisponda al runtime del ruolo di lavoro.In version 2.x, do not use this option or choose a language that matches the worker runtime.
--name -n Il nome della funzione.The function name.
--template -t Usare il comando func templates list per visualizzare l'elenco completo dei modelli disponibili per ogni linguaggio supportato.Use the func templates list command to see the complete list of available templates for each supported language.

Ad esempio, per creare un trigger HTTP JavaScript in un singolo comando, eseguire:For example, to create a JavaScript HTTP trigger in a single command, run:

func new --template "Http Trigger" --name MyHttpTrigger

Per creare una funzione attivata dalla coda in un singolo comando, eseguire:To create a queue-triggered function in a single command, run:

func new --template "Queue Trigger" --name QueueTriggerJS

Eseguire funzioni localmenteRun functions locally

Per eseguire un progetto Funzioni, eseguire l'host di Funzioni.To run a Functions project, run the Functions host. L'host abilita i trigger per tutte le funzioni del progetto:The host enables triggers for all functions in the project:

func host start

Il comando host è richiesto solo nella versione 1.x.The host command is only required in version 1.x.

func host start supporta le opzioni seguenti:func host start supports the following options:

OpzioneOption DescrizioneDescription
--no-build Per il progetto corrente non viene creata una build prima dell'esecuzione.Do no build current project before running. Solo per progetti dotnet.For dotnet projects only. Il valore predefinito è false.Default is set to false. Solo versione 2.x.Version 2.x only.
--cert Il percorso in un file con estensione pfx che contiene una chiave privata.The path to a .pfx file that contains a private key. Usato solo con --useHttps.Only used with --useHttps. Solo versione 2.x.Version 2.x only.
--cors-credentials Consente richieste autenticate da più origini, ad esempio cookie e l'intestazione di autenticazione. Solo versione 2.x.Allow cross-origin authenticated requests (i.e. cookies and the Authentication header) Version 2.x only.
--cors Un elenco delimitato dalla virgola di origini CORS, senza spazi.A comma-separated list of CORS origins, with no spaces.
--language-worker Argomenti per configurare il ruolo di lavoro del linguaggio.Arguments to configure the language worker. Solo versione 2.x.Version 2.x only.
--nodeDebugPort -n La porta per il debugger di nodo da usare.The port for the node debugger to use. Predefinito: un valore di launch.json o 5858.Default: A value from launch.json or 5858. Solo versione 1.x.Version 1.x only.
--password La password o un file che contiene la password per un file con estensione pfx.Either the password or a file that contains the password for a .pfx file. Usati solo con --cert.Only used with --cert. Solo versione 2.x.Version 2.x only.
--port -p La porta locale su cui ascoltare.The local port to listen on. Valore predefinito: 7071.Default value: 7071.
--pause-on-error Sospendere per l'input aggiuntivo prima dell'uscita dal processo.Pause for additional input before exiting the process. Viene usato quando si avvia Core Tools da un ambiente di sviluppo integrato (IDE).Used only when launching Core Tools from an integrated development environment (IDE).
--script-root --prefix Viene usato per specificare il percorso della radice dell'app per le funzioni da eseguire o distribuire.Used to specify the path to the root of the function app that is to be run or deployed. Viene usato per progetti compilati che generano file di progetto in una sottocartella.This is used for compiled projects that generate project files into a subfolder. Ad esempio, quando si crea un progetto di libreria di classi C#, i file host.json, local.settings.json e function.json vengono generati in una sottocartella radice con un percorso simile a MyProject/bin/Debug/netstandard2.0.For example, when you build a C# class library project, the host.json, local.settings.json, and function.json files are generated in a root subfolder with a path like MyProject/bin/Debug/netstandard2.0. In questo caso, impostare il prefisso come --script-root MyProject/bin/Debug/netstandard2.0.In this case, set the prefix as --script-root MyProject/bin/Debug/netstandard2.0. Questa è la radice dell'app per le funzioni durante l'esecuzione in Azure.This is the root of the function app when running in Azure.
--timeout -t Il timeout per l'host di Funzioni da avviare, in secondi.The timeout for the Functions host to start, in seconds. Predefinito: 20 secondi.Default: 20 seconds.
--useHttps Eseguire l'associazione a https://localhost:{port} anziché a http://localhost:{port}.Bind to https://localhost:{port} rather than to http://localhost:{port}. Per impostazione predefinita, questa opzione crea un certificato attendibile nel computer in uso.By default, this option creates a trusted certificate on your computer.

Per un progetto di libreria di classi C# (con estensione csproj), è necessario includere l'opzione --build per generare la libreria .dll.For a C# class library project (.csproj), you must include the --build option to generate the library .dll.

Quando viene avviato l'host di Funzioni, restituisce come output l'URL delle funzioni attivate da HTTP:When the Functions host starts, it outputs the URL of HTTP-triggered functions:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

Importante

Per l'esecuzione in locale, l'autenticazione non viene applicata per gli endpoint HTTP.When running locally, authentication isn't enforced for HTTP endpoints. Questo significa che tutte le richieste HTTP locali vengono gestite come authLevel = "anonymous".This means that all local HTTP requests are handled as authLevel = "anonymous". Per altre informazioni, vedere l'articolo sul binding HTTP.For more information, see the HTTP binding article.

Passaggio di dati di test a una funzionePassing test data to a function

Per testare le funzioni localmente, avviare l'host di Funzioni e chiamare gli endpoint nel server locale usando richieste HTTP.To test your functions locally, you start the Functions host and call endpoints on the local server using HTTP requests. L'endpoint chiamato dipende dal tipo di funzione.The endpoint you call depends on the type of function.

Nota

Gli esempi in questo argomento usano lo strumento cURL per inviare richieste HTTP dal terminale o da un prompt dei comandi.Examples in this topic use the cURL tool to send HTTP requests from the terminal or a command prompt. È possibile usare lo strumento preferito per inviare richieste HTTP al server locale.You can use a tool of your choice to send HTTP requests to the local server. Lo strumento cURL è disponibile per impostazione predefinita nei sistemi basati su Linux.The cURL tool is available by default on Linux-based systems. In Windows è necessario prima scaricare e installare lo strumento cURL.On Windows, you must first download and install the cURL tool.

Per informazioni più generali sui test delle funzioni, vedere Strategie per il test del codice in Funzioni di Azure.For more general information on testing functions, see Strategies for testing your code in Azure Functions.

Funzioni attivate tramite HTTP e webhookHTTP and webhook triggered functions

È possibile chiamare l'endpoint seguente per eseguire localmente funzioni attivate tramite HTTP e webhook:You call the following endpoint to locally run HTTP and webhook triggered functions:

http://localhost:{port}/api/{function_name}

Assicurarsi di usare lo stesso nome server e la stessa porta su cui è in ascolto l'host di Funzioni.Make sure to use the same server name and port that the Functions host is listening on. Questi valori sono visualizzati nell'output generato all'avvio dell'host di Funzioni.You see this in the output generated when starting the Function host. È possibile chiamare questo URL usando qualsiasi metodo HTTP supportato dal trigger.You can call this URL using any HTTP method supported by the trigger.

Il comando cURL seguente attiva la funzione di avvio rapido MyHttpTrigger da una richiesta GET con il parametro name passato nella stringa di query.The following cURL command triggers the MyHttpTrigger quickstart function from a GET request with the name parameter passed in the query string.

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

L'esempio seguente è la stessa funzione chiamata da una richiesta POST passando name nel corpo della richiesta:The following example is the same function called from a POST request passing name in the request body:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'

È possibile effettuare richieste GET da un browser passando dati nella stringa di query.You can make GET requests from a browser passing data in the query string. Per tutti gli altri metodi HTTP è necessario usare cURL, Fiddler, Postman o uno strumento analogo per i test HTTP.For all other HTTP methods, you must use cURL, Fiddler, Postman, or a similar HTTP testing tool.

Funzione attivate non da HTTPNon-HTTP triggered functions

Per tutti i tipi di funzioni diverse dai trigger HTTP e dai webhook, è possibile testare localmente le funzioni chiamando un endpoint di amministrazione.For all kinds of functions other than HTTP triggers and webhooks, you can test your functions locally by calling an administration endpoint. Chiamando questo endpoint con una richiesta HTTP POST sul server locale si attiva la funzione.Calling this endpoint with an HTTP POST request on the local server triggers the function. È facoltativamente possibile passare dati di test all'esecuzione nel corpo del messaggio della richiesta POST.You can optionally pass test data to the execution in the body of the POST request. Questa funzionalità è analoga alla scheda Test del portale di Azure.This functionality is similar to the Test tab in the Azure portal.

Chiamare l'endpoint di amministrazione seguente per attivare funzioni non HTTP:You call the following administrator endpoint to trigger non-HTTP functions:

http://localhost:{port}/admin/functions/{function_name}

Per passare dati di test all'endpoint di amministrazione di una funzione, è necessario fornire i dati nel corpo di un messaggio di richiesta POST.To pass test data to the administrator endpoint of a function, you must supply the data in the body of a POST request message. Il corpo del messaggio deve avere il formato JSON seguente:The message body is required to have the following JSON format:

{
    "input": "<trigger_input>"
}

Il valore <trigger_input> contiene dati nel formato previsto dalla funzione.The <trigger_input> value contains data in a format expected by the function. L'esempio cURL seguente è una richiesta POST per una funzione QueueTriggerJS.The following cURL example is a POST to a QueueTriggerJS function. In questo caso l'input è una stringa che equivale al messaggio previsto nella coda.In this case, the input is a string that is equivalent to the message expected to be found in the queue.

curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTriggerJS

Uso del comando func run nella versione 1.xUsing the func run command in version 1.x

Importante

Il comando func run non è supportato nella versione 2.x degli strumenti.The func run command is not supported in version 2.x of the tools. Per altre informazioni, vedere l'argomento Come specificare le versioni del runtime per Funzioni di Azure.For more information, see the topic How to target Azure Functions runtime versions.

È anche possibile richiamare una funzione direttamente tramite func run <FunctionName> e offrire dati di input per la funzione.You can also invoke a function directly by using func run <FunctionName> and provide input data for the function. Questo comando è simile all'esecuzione di una funzione con la scheda Test nel portale di Azure.This command is similar to running a function using the Test tab in the Azure portal.

func run supporta le opzioni seguenti:func run supports the following options:

OpzioneOption DescrizioneDescription
--content -c Contenuto inline.Inline content.
--debug -d Associare un debugger al processo host prima di eseguire la funzione.Attach a debugger to the host process before running the function.
--timeout -t Tempo di attesa (in secondi) fino a quando l'host locale di Funzioni è pronto.Time to wait (in seconds) until the local Functions host is ready.
--file -f Il nome del file da usare come contenuto.The file name to use as content.
--no-interactive Non richiede input.Does not prompt for input. Utile per scenari di automazione.Useful for automation scenarios.

Ad esempio, per chiamare una funzione attivata da HTTP e passare il corpo del contenuto, eseguire il comando seguente:For example, to call an HTTP-triggered function and pass content body, run the following command:

func run MyHttpTrigger -c '{\"name\": \"Azure\"}'

Pubblicazione in AzurePublish to Azure

Azure Functions Core Tools supporta due tipi di distribuzione: distribuzione di file di progetto (funzione) direttamente in app per le funzioni tramite Zipdeploy e distribuendo un contenitore Docker personalizzato.The Azure Functions Core Tools supports two types of deployment: deploying function project files directly to your function app via Zip Deploy and deploying a custom Docker container. È necessario disporre già creata un'app per le funzioni nella sottoscrizione di Azure, a cui si distribuirà il codice.You must have already created a function app in your Azure subscription, to which you'll deploy your code. I progetti che richiedono la compilazione devono essere compilati in modo che i file binari possano essere distribuiti.Projects that require compilation should be built so that the binaries can be deployed.

Distribuzione (file di progetto)Deployment (project files)

Per pubblicare il codice locale in un'app per le funzioni in Azure, usare il publish comando:To publish your local code to a function app in Azure, use the publish command:

func azure functionapp publish <FunctionAppName>

Questo comando consente di pubblicare un'app per le funzioni esistente in Azure.This command publishes to an existing function app in Azure. Si otterrà un errore se si prova a pubblicare una <FunctionAppName> che non esiste nella sottoscrizione.You'll get an error if you try to publish to a <FunctionAppName> that doesn't exist in your subscription. Per informazioni su come creare un'app per le funzioni dal prompt dei comandi o dalla finestra del terminale usando l'interfaccia della riga di comando di Azure, vedere Creare un'app per le funzioni per l'esecuzione senza server.To learn how to create a function app from the command prompt or terminal window using the Azure CLI, see Create a Function App for serverless execution. Per impostazione predefinita, il comando abiliterà l'app venga eseguita eseguiti dal pacchetto modalità.By default, this command will enable your app to run in Run From Package mode.

Importante

Quando si crea un'app per le funzioni nel portale di Azure, questa usa la versione 2.x del runtime di Funzioni per impostazione predefinita.When you create a function app in the Azure portal, it uses version 2.x of the Function runtime by default. Per far eseguire la versione 1.x del runtime all'app per le funzioni, osservare le istruzioni riportate in Run on version 1.x (Esecuzione sulla versione 1.x).To make the function app use version 1.x of the runtime, follow the instructions in Run on version 1.x. Non è possibile modificare la versione di runtime per un'app per le funzioni che ha funzioni esistenti.You can't change the runtime version for a function app that has existing functions.

Le opzioni di pubblicazione seguenti si applicano per entrambe le versioni, versioni 1.x e 2.x:The following publish options apply for both versions, 1.x and 2.x:

OpzioneOption DescrizioneDescription
--publish-local-settings -i Pubblicare le impostazioni di local.settings.json in Azure, suggerendo di sovrascrivere eventuali impostazioni esistenti.Publish settings in local.settings.json to Azure, prompting to overwrite if the setting already exists. Se si usa l'emulatore di archiviazione, si modifica l'impostazione dell'app portandola a connessione di archiviazione effettiva.If you are using the storage emulator, you change the app setting to an actual storage connection.
--overwrite-settings -y Eliminare il prompt per sovrascrivere le impostazioni dell'app quando si usa --publish-local-settings -i.Suppress the prompt to overwrite app settings when --publish-local-settings -i is used.

Le opzioni di pubblicazione seguenti sono supportate solo nella versione 2.x:The following publish options are only supported in version 2.x:

OpzioneOption DescrizioneDescription
--publish-settings-only -o Pubblicare solo le impostazioni e ignorare il contenuto.Only publish settings and skip the content. Viene suggerito il valore predefinito.Default is prompt.
--list-ignored-files Visualizza un elenco di file che vengono ignorati durante la pubblicazione basato sul file con estensione funcignore.Displays a list of files that are ignored during publishing, which is based on the .funcignore file.
--list-included-files Visualizza un elenco di file che vengono pubblicati basato sul file con estensione .funcignore.Displays a list of files that are published, which is based on the .funcignore file.
--nozip Disattiva la modalità Run-From-Package predefinita.Turns the default Run-From-Package mode off.
--build-native-deps Ignora la generazione della cartella .wheels durante la pubblicazione delle app per le funzioni di python.Skips generating .wheels folder when publishing python function apps.
--additional-packages Elenco di pacchetti da installare durante la creazione di dipendenze native.List of packages to install when building native dependencies. Ad esempio: python3-dev libevent-dev.For example: python3-dev libevent-dev.
--force Ignora la verifica preliminare alla pubblicazione in determinati scenari.Ignore pre-publishing verification in certain scenarios.
--csx Pubblica un progetto di script C# (file con estensione csx).Publish a C# script (.csx) project.
--no-build Ignora la compilazione di funzioni dotnet.Skip building dotnet functions.
--dotnet-cli-params Quando si pubblicano funzioni C# compilate (con estensione csproj), Core Tools chiama "dotnet build --output bin/publish".When publishing compiled C# (.csproj) functions, the core tools calls 'dotnet build --output bin/publish'. Tutti i parametri passati a questa opzione verranno aggiunti alla riga di comando.Any parameters passed to this will be appended to the command line.

Distribuzione (il contenitore personalizzato)Deployment (custom container)

Funzioni di Azure ti permette di distribuire il progetto di funzione in una contenitore Docker personalizzato.Azure Functions lets you deploy your function project in a custom Docker container. Per altre informazioni, consultare Creare una funzione in Linux tramite un'immagine personalizzata (anteprima).For more information, see Create a function on Linux using a custom image. I contenitori personalizzati devono disporre di un Dockerfile.Custom containers must have a Dockerfile. Per creare un'app con un Dockerfile, utilizzare l'opzione - dockerfile su func init.To create an app with a Dockerfile, use the --dockerfile option on func init.

func deploy

Sono disponibili le opzioni di distribuzione del contenitore personalizzato seguenti:The following custom container deployment options are available:

OpzioneOption DescrizioneDescription
--registry Il nome di un registro Docker a cui l'utente corrente ha eseguito l'accesso.The name of a Docker Registry the current user signed-in to.
--platform Piattaforma di hosting per le app per le funzioni.Hosting platform for the function app. Le opzioni valide sono kubernetesValid options are kubernetes
--name Nome dell'app per le funzioni.Function app name.
--max Facoltativamente, imposta il numero massimo di istanze di app per le funzioni su cui eseguire la distribuzione.Optionally, sets the maximum number of function app instances to deploy to.
--min Facoltativamente, imposta il numero minimo di istanze di app per le funzioni su cui eseguire la distribuzione.Optionally, sets the minimum number of function app instances to deploy to.
--config Imposta un file di configurazione della distribuzione opzionale.Sets an optional deployment configuration file.

Monitoraggio delle funzioniMonitoring functions

È consigliabile monitorare l'esecuzione delle funzioni grazie all'integrazione con Azure Application Insights.The recommended way to monitor the execution of your functions is by integrating with Azure Application Insights. Quando si crea un'app per le funzioni nel portale di Azure, questa integrazione avviene automaticamente per impostazione predefinita.When you create a function app in the Azure portal, this integration is done for you by default. Quando tuttavia si crea l'app per le funzioni usando l'interfaccia della riga di comando di Azure, l'integrazione nell'app per le funzioni in Azure non viene eseguita.However, when you create your function app by using the Azure CLI, the integration in your function app in Azure isn't done.

Per abilitare Application Insights per l'app per le funzioni:To enable Application Insights for your function app:

Funzioni semplifica l'aggiunta dell'integrazione di Application Insights a un'app per le funzioni dal portale di Azure.Functions makes it simple to add Application Insights integration to a function app from the Azure portal.

  1. Nel portale, selezionare Tutti i servizi > App per le funzioni, selezionare la propria app per le funzioni, quindi scegliere il banner Application Insights in alto nella finestraIn the portal, select All services > Function Apps, select your function app, and then choose the Application Insights banner at the top of the window

    Abilitare Application Insights nel portale

  2. Creare una risorsa di Application Insights usando le impostazioni specificate nella tabella sotto l'immagine:Create an Application Insights resource by using the settings specified in the table below the image:

    Creare una risorsa di Application Insights

    ImpostazioneSetting Valore consigliatoSuggested value DescrizioneDescription
    NomeName Nome app univocoUnique app name È più facile usare lo stesso nome dell'app per le funzioni, che deve essere univoco nella sottoscrizione.It's easiest to use the same name as your function app, which must be unique in your subscription.
    PosizioneLocation Europa occidentaleWest Europe Se possibile, usare la stessa regione dell'app per le funzioni o una limitrofa.If possible, use the same region as your function app, or near to it.
  3. Scegliere OK.Choose OK. La risorsa di Application Insights viene creata nella stesso gruppo di risorse e nella stessa sottoscrizione dell'app per le funzioni.The Application Insights resource is created in the same resource group and subscription as your function app. Dopo aver completato la creazione, chiudere la finestra di Application Insights.After creation completes, close the Application Insights window.

  4. Nell'app per le funzioni, selezionare Impostazioni applicazione e scorrere fino a Impostazioni applicazione.Back in your function app, select Application settings, and scroll down to Application settings. Quando viene visualizzata un'impostazione denominata APPINSIGHTS_INSTRUMENTATIONKEY, significa che l'integrazione di Application Insights è abilitata per l'app per le funzioni in esecuzione in Azure.When you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, it means that Application Insights integration is enabled for your function app running in Azure.

Per altre informazioni, vedere Monitorare Funzioni di Azure.To learn more, see Monitor Azure Functions.

Passaggi successiviNext steps

Strumenti di base di Funzioni di Azure è open source ed è ospitato su GitHub.Azure Functions Core Tools is open source and hosted on GitHub.
Per registrare una richiesta per un bug o una funzionalità aprire un problema di GitHub.To file a bug or feature request, open a GitHub issue.