Manuale dello sviluppatore di Funzioni di AzureAzure Functions developers guide

In Funzioni di Azure funzioni specifiche condividono alcuni concetti tecnici e componenti di base, indipendentemente dal linguaggio o dall'associazione che vengono usati.In Azure Functions, specific functions share a few core technical concepts and components, regardless of the language or binding you use. Prima di passare all'apprendimento di dettagli specifici per un linguaggio o un'associazione, assicurarsi di leggere questa panoramica generale.Before you jump into learning details specific to a given language or binding, be sure to read through this overview that applies to all of them.

Questo articolo presuppone che sia già stata letta la Panoramica di Funzioni di Azure e si abbia familiarità con i concetti di WebJobs SDK, ad esempio trigger, associazione e runtime JobHost.This article assumes that you've already read the Azure Functions overview and are familiar with WebJobs SDK concepts such as triggers, bindings, and the JobHost runtime. Funzioni di Azure si basa su WebJobs SDK.Azure Functions is based on the WebJobs SDK.

Codice di funzioneFunction code

La funzione è il concetto primario in Funzioni di Azure.A function is the primary concept in Azure Functions. Il codice per una funzione viene scritto in un linguaggio di propria scelta, quindi il codice e i file di configurazione vengono salvati nella stessa cartella.You write code for a function in a language of your choice and save the code and configuration files in the same folder. La configurazione viene denominata function.json, che contiene i dati di configurazione JSON.The configuration is named function.json, which contains JSON configuration data. I linguaggi supportati sono numerosi e quindi è possibile scegliere quello con cui si lavora meglio, in base alla propria esperienza.Various languages are supported, and each one has a slightly different experience optimized to work best for that language.

Il file function.json definisce le associazioni di funzione e altre impostazioni di configurazione.The function.json file defines the function bindings and other configuration settings. Il runtime usa questo file per determinare gli eventi da monitorare e come passare i dati e restituirli dall'esecuzione di funzioni.The runtime uses this file to determine the events to monitor and how to pass data into and return data from function execution. Di seguito è riportato un esempio di file function.json.The following is an example function.json file.

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

Impostare la proprietà disabled su true per impedire l'esecuzione della funzione.Set the disabled property to true to prevent the function from being executed.

La proprietà bindings è quella che consente di configurare trigger e associazioni.The bindings property is where you configure both triggers and bindings. Ogni associazione condivide alcune impostazioni comuni e altre specifiche per tipo.Each binding shares a few common settings and some settings, which are specific to a particular type of binding. Ogni associazione richiede le impostazioni seguenti:Every binding requires the following settings:

ProprietàProperty Valori/tipiValues/Types CommentiComments
type stringastring Tipo di associazione.Binding type. Ad esempio, queueTrigger.For example, queueTrigger.
direction 'in', 'out''in', 'out' Indica se l'associazione consente la ricezione di dati nella funzione o l'invio di dati dalla funzione.Indicates whether the binding is for receiving data into the function or sending data from the function.
name stringstring Il nome che viene usato per i dati associati nella funzione.The name that is used for the bound data in the function. Per C#, si tratta di un nome di argomento, per JavaScript è la chiave in un elenco di chiavi/valori.For C#, this is an argument name; for JavaScript, it's the key in a key/value list.

App per le funzioniFunction app

Un'app per le funzioni è costituita da una o più singole funzioni che vengono gestite insieme dal servizio app di Azure.A function app is comprised of one or more individual functions that are managed together by Azure App Service. Tutte le funzioni in un'app per le funzioni condividono lo stesso piano tariffario, la stessa distribuzione continua e la stessa versione runtime.All of the functions in a function app share the same pricing plan, continuous deployment and runtime version. Funzioni scritte in più linguaggi possono condividere la stessa app per le funzioni.Functions written in multiple languages can all share the same function app. Un'app per le funzioni può essere considerata un modo per organizzare e gestire collettivamente le funzioni.Think of a function app as a way to organize and collectively manage your functions.

Runtime (host di script e host Web)Runtime (script host and web host)

Il runtime, o host di script, è l'host di WebJobs SDK sottostante che rimane in ascolto degli eventi, raccoglie e invia dati e infine esegue il codice.The runtime, or script host, is the underlying WebJobs SDK host that listens for events, gathers and sends data, and ultimately runs your code.

Per facilitare i trigger HTTP, è disponibile anche un host Web che è progettato per precedere l'host di script negli scenari di produzione.To facilitate HTTP triggers, there is also a web host that is designed to sit in front of the script host in production scenarios. Avere due host aiuta a isolare l'host di script dal traffico front-end gestito dall'host Web.Having two hosts helps to isolate the script host from the front end traffic managed by the web host.

Struttura di cartelleFolder Structure

Il codice per tutte le funzioni in una determinata app per le funzioni si trova in una cartella radice contenente un file di configurazione host e una o più sottocartelle, ognuna delle quali contiene un codice per una funzione separata, come nell'esempio seguente:The code for all of the functions in a given function app lives in a root folder that contains a host configuration file and one or more subfolders, each of which contain the code for a separate function, as in the following example:

wwwroot
 | - host.json
 | - mynodefunction
 | | - function.json
 | | - index.js
 | | - node_modules
 | | | - ... packages ...
 | | - package.json
 | - mycsharpfunction
 | | - function.json
 | | - run.csx

Il file host.json contiene alcune configurazioni specifiche del runtime e si trova nella cartella radice dell'app per le funzioni.The host.json file contains some runtime-specific configuration and sits in the root folder of the function app. Per informazioni sulle impostazioni disponibili vedere il riferimento host.json.For information on settings that are available, see host.json reference.

Ogni funzione ha una cartella che contiene uno o più file di codice, la configurazione function.json e altre dipendenze.Each function has a folder that contains one or more code files, the function.json configuration and other dependencies.

Quando si configura un progetto per la distribuzione di funzioni in un'app per le funzioni di un servizio app di Azure, questa struttura di cartelle può essere considerata il codice del sito.When setting-up a project for deploying functions to a function app in Azure App Service, you can treat this folder structure as your site code. È possibile usare gli strumenti esistenti come l' integrazione e la distribuzione continue o gli script di distribuzione personalizzata per l'installazione del pacchetto di distribuzione o la transpilazione del codice.You can use existing tools like continuous integration and deployment, or custom deployment scripts for doing deploy time package installation or code transpilation.

Nota

Verificare di distribuire il file host.json e le cartelle di funzione direttamente nella cartella wwwroot.Make sure to deploy your host.json file and function folders directly to the wwwroot folder. Non includere la cartella wwwroot nelle distribuzioni.Do not include the wwwroot folder in your deployments. In caso contrario, verranno create le cartelle wwwroot\wwwroot.Otherwise, you end up with wwwroot\wwwroot folders.

Come aggiornare i file delle app per le funzioniHow to update function app files

L'editor funzioni incorporato nel portale di Azure consente di aggiornare il file function.json e il file di codice di una funzione.The function editor built into the Azure portal lets you update the function.json file and the code file for a function. Per caricare o aggiornare altri file, ad esempio package.json o project.json o le relative dipendenze, è necessario usare altri metodi di distribuzione.To upload or update other files such as package.json or project.json or dependencies, you have to use other deployment methods.

Le app per le funzioni sono basate sul servizio app, quindi tutte le opzioni di distribuzione disponibili per le app Web standard sono disponibili anche per le app per le funzioni.Function apps are built on App Service, so all the deployment options available to standard web apps are also available for function apps. Ecco alcuni metodi per caricare o aggiornare file delle app per le funzioni.Here are some methods you can use to upload or update function app files.

Per usare l'editor del servizio appTo use App Service Editor

  1. Nel portale Funzioni di Azure fare clic su Funzionalità della piattaforma.In the Azure Functions portal, click Platform features.
  2. Nella sezione Strumenti di sviluppo fare clic su Editor del servizio app.In the DEVELOPMENT TOOLS section, click App Service Editor.
    Dopo il caricamento dell'editor del servizio app, il file host.json e le cartelle delle funzioni vengono visualizzati in wwwroot.After App Service Editor loads, you'll see the host.json file and function folders under wwwroot.
  3. Aprire i file per modificarli oppure selezionare e trascinare i file dal computer di sviluppo per caricarli.Open files to edit them, or drag and drop from your development machine to upload files.

Per usare l'endpoint SCM (Kudu) dell'app per le funzioniTo use the function app's SCM (Kudu) endpoint

  1. Accedere a https://<function_app_name>.scm.azurewebsites.net.Navigate to: https://<function_app_name>.scm.azurewebsites.net.
  2. Fare clic su Debug Console (Console di debug) > CMD.Click Debug Console > CMD.
  3. Passare a D:\home\site\wwwroot\ per aggiornare host.json o a D:\home\site\wwwroot\<function_name> per aggiornare i file di una funzione.Navigate to D:\home\site\wwwroot\ to update host.json or D:\home\site\wwwroot\<function_name> to update a function's files.
  4. Selezionare e trascinare un file da caricare nella cartella appropriata della griglia di file.Drag-and-drop a file you want to upload into the appropriate folder in the file grid. Nella griglia di file è possibile rilasciare un file in due aree.There are two areas in the file grid where you can drop a file. Per i file ZIP viene visualizzata una casella con l'etichetta "Drag here to upload and unzip" (Trascinare qui per caricare e decomprimere).For .zip files, a box appears with the label "Drag here to upload and unzip." Gli altri tipi di file devono essere rilasciati nella griglia di file ma all'esterno della casella per la decompressione.For other file types, drop in the file grid but outside the "unzip" box.

Per usare la distribuzione continuaTo use continuous deployment

Seguire le istruzioni illustrate nell'argomento Distribuzione continua per Funzioni di Azure.Follow the instructions in the topic Continuous deployment for Azure Functions.

Esecuzione parallelaParallel execution

Quando si verificano rapidamente più eventi di trigger di quanti il runtime della funzione a thread singolo riesca a elaborare, il runtime chiama la funzione più volte in parallelo.When multiple triggering events occur faster than a single-threaded function runtime can process them, the runtime may invoke the function multiple times in parallel. Se un'app per le funzioni usa il piano di hosting a consumo, il numero di istanze dell'app può aumentare automaticamente.If a function app is using the Consumption hosting plan, the function app could scale out automatically. Ogni istanza dell'app per le funzioni, indipendentemente dal fatto che venga eseguita in un piano di hosting a consumo o in un normale piano di hosting del servizio app, può elaborare chiamate di funzione simultanee in parallelo usando più thread.Each instance of the function app, whether the app runs on the Consumption hosting plan or a regular App Service hosting plan, might process concurrent function invocations in parallel using multiple threads. Il numero massimo di chiamate di funzione simultanee in ogni istanza dell'app per le funzioni dipende dal tipo di trigger usato e dalle risorse usate dalle altre funzioni nell'app per le funzioni.The maximum number of concurrent function invocations in each function app instance varies based on the type of trigger being used as well as the resources used by other functions within the function app.

Controllo delle versioni del runtime di FunzioniFunctions runtime versioning

È possibile configurare la versione del runtime di Funzioni usando le impostazioni dell'app FUNCTIONS_EXTENSION_VERSION.You can configure the version of the Functions runtime using the FUNCTIONS_EXTENSION_VERSION app setting. Ad esempio, il valore "~ 1" indica che l'app per le funzioni userà 1 come numero di versione principale.For example, the value "~1" indicates that your Function App will use 1 as its major version. Le app per le funzioni vengono aggiornate a ogni nuova versione secondaria appena rilasciata.Function Apps are upgraded to each new minor version as they are released. Per altre informazioni, incluso come visualizzare la versione esatta dell'app per le funzioni, vedere Come specificare le versioni del runtime per Funzioni di Azure.For more information, including how to view the exact version of your function app, see How to target Azure Functions runtime versions.

RepositoryRepositories

Il codice di Funzioni di Azure è open source e archiviato in repository GitHub:The code for Azure Functions is open source and stored in GitHub repositories:

AssociazioniBindings

La tabella riportata di seguito elenca tutte le associazioni supportate.Here is a table of all supported bindings.

La tabella seguente mostra le associazioni supportate nelle due principali versioni del runtime di Funzioni di Azure.The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

TipoType 1.x1.x 2.x2.x TriggerTrigger InputInput OutputOutput
Archiviazione BLOBBlob Storage
Cosmos DBCosmos DB 11
Hub eventiEvent Hubs
File esterno2External File2
Tabella esterna2External Table2
HTTPHTTP
Microsoft Graph
Tabelle di Excel
Microsoft Graph
Excel tables
11
Microsoft Graph
File di OneDrive
Microsoft Graph
OneDrive files
11
Microsoft Graph
Indirizzo e-mail Outlook
Microsoft Graph
Outlook email
11
Microsoft Graph
Eventi
Microsoft Graph
Events
11
Microsoft Graph
Token di autenticazione
Microsoft Graph
Auth tokens
11
App per dispositivi mobiliMobile Apps 11
Hub di notifica di AzureNotification Hubs
Archiviazione codeQueue storage
SendGridSendGrid 11
Bus di servizioService Bus 11
Archiviazione tabelleTable storage
TimerTimer
TwilioTwilio 11
WebhookWebhooks

1 Deve essere registrato come un'estensione di associazione nella versione 2. x.1 Must be registered as a binding extension in 2.x. Vedere Problemi noti nella versione 2.x.See Known issues in 2.x.

2 Sperimentale — Non supportato e potrebbe venire abbandonato in futuro.2 Experimental — not supported and might be abandoned in the future.

Segnalazione di problemiReporting Issues

ItemItem DescrizioneDescription CollegamentoLink
RuntimeRuntime Host di script, trigger e associazioni, supporto del linguaggioScript Host, Triggers & Bindings, Language Support Registrare un problemaFile an Issue
ModelliTemplates Problemi di codice nel modello di creazioneCode Issues with Creation Template Registrare un problemaFile an Issue
PortalePortal Problema con l'esperienza utente o l'interfaccia utenteUser Interface or Experience Issue Registrare un problemaFile an Issue

Passaggi successiviNext steps

Per altre informazioni, vedere le seguenti risorse:For more information, see the following resources: