Tecnologie di distribuzione in Funzioni di Azure

È possibile usare alcune tecnologie diverse per distribuire il codice del progetto Funzioni di Azure in Azure. Questo articolo offre una panoramica dei metodi di distribuzione disponibili per l'utente e le raccomandazioni per il metodo migliore da usare in vari scenari. Fornisce anche un elenco completo di e dettagli chiave sulle tecnologie di distribuzione sottostanti.

Metodi di distribuzione

La tecnologia di distribuzione usata per pubblicare il codice nell'app per le funzioni in Azure dipende dalle esigenze specifiche e dal punto del ciclo di sviluppo. Ad esempio, durante lo sviluppo e il test è possibile distribuire direttamente dallo strumento di sviluppo, ad esempio Visual Studio Code. Quando l'app è in produzione, è più probabile pubblicare continuamente dal controllo del codice sorgente o usando una pipeline di pubblicazione automatizzata, che può includere la convalida e il test.

Nella tabella seguente vengono descritti i metodi di distribuzione disponibili per il progetto di codice.

Tipo di distribuzione Metodi Ideale per...
Strumenti basati su Pubblicazione di Visual Studio Code
Pubblicazione di Visual Studio
Pubblicazione degli strumenti di base
Distribuzioni durante lo sviluppo e altre distribuzioni improvvisate. Distribuzione del codice su richiesta tramite gli strumenti di sviluppo locali.
servizio app gestito Centro distribuzione (CI/CD)
Distribuzioni di contenitori
Distribuzione continua (CI/CD) dal controllo del codice sorgente o da un registro contenitori. Le distribuzioni vengono gestite dalla piattaforma servizio app (Kudu).
Pipeline esterne Azure Pipelines
GitHub Actions
Pipeline di produzione che includono convalida, test e altre azioni che devono essere eseguite come parte di una distribuzione automatizzata. Le distribuzioni vengono gestite dalla pipeline.

Le distribuzioni specifiche devono usare la tecnologia migliore in base allo scenario specifico. Molti dei metodi di distribuzione sono basati sulla distribuzione zip, consigliata per la distribuzione.

Disponibilità della tecnologia di distribuzione

Il metodo di distribuzione dipende anche dal piano di hosting e dal sistema operativo in cui si esegue l'app per le funzioni.
Attualmente, Funzioni offre tre piani di hosting:

Ogni piano ha comportamenti diversi. Non tutte le tecnologie di distribuzione sono disponibili per ogni piano di hosting e sistema operativo. Questo grafico fornisce informazioni sulle tecnologie di distribuzione supportate:

Tecnologia di distribuzione Consumo Windows Windows Premium Windows Dedicato Consumo Linux Linux Premium Linux dedicato
URLpacchetto esterno 1
Distribuzione zip
Contenitore Docker
Controllo del codice sorgente
Gitlocale 1
FTPS1
Modificanel portale 2

1 Le tecnologie di distribuzione che richiedono la sincronizzazione manuale dei trigger non sono consigliate.
2 La modifica nel portale è disabilitata quando il codice viene distribuito nell'app per le funzioni dall'esterno del portale. Per altre informazioni, inclusi i dettagli del supporto linguistico per la modifica nel portale, vedere Dettagli del supporto linguistico.

Concetti chiave

Alcuni concetti chiave sono fondamentali per comprendere il funzionamento delle distribuzioni in Funzioni di Azure.

Attivazione della sincronizzazione

Quando si modifica uno dei trigger, l'infrastruttura di Funzioni deve essere a conoscenza delle modifiche. La sincronizzazione avviene automaticamente per molte tecnologie di distribuzione. Tuttavia, in alcuni casi, è necessario sincronizzare manualmente i trigger.

È necessario sincronizzare manualmente i trigger quando si usano queste opzioni di distribuzione:

È possibile sincronizzare i trigger in uno dei tre modi seguenti:

  • Riavviare l'app per le funzioni nel portale di Azure.
  • Inviare una richiesta HTTP POST all'uso https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> della chiave master.
  • Inviare una richiesta HTTP POST a https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Sostituire i segnaposto con l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'app per le funzioni. Questa richiesta richiede un token di accesso nell'intestazione della Authorization richiesta.

Quando si distribuisce usando un URL del pacchetto esterno, è necessario riavviare manualmente l'app per le funzioni per sincronizzare completamente la distribuzione quando il pacchetto cambia senza modificare l'URL, che include la distribuzione iniziale.

Quando l'app per le funzioni è protetta da restrizioni di rete in ingresso, l'endpoint dei trigger di sincronizzazione può essere chiamato solo da un client all'interno della rete virtuale.

Compilazione remota

Funzioni di Azure possibile eseguire automaticamente le compilazioni sul codice ricevuto dopo le distribuzioni zip. Queste compilazioni variano a seconda che l'app sia in esecuzione in Windows o Linux.

Tutte le app per le funzioni in esecuzione in Windows hanno un'app di gestione di piccole dimensioni, il scm sito fornito da Kudu. Questo sito gestisce gran parte della distribuzione e della logica di compilazione per Funzioni di Azure.

Quando un'app viene distribuita in Windows, vengono eseguiti comandi specifici del linguaggio, ad esempio dotnet restore (C#) o npm install (JavaScript).

Quando si usano build remote durante la distribuzione, si applicano le considerazioni seguenti:

  • Le build remote sono supportate per le app per le funzioni in esecuzione in Linux nel piano a consumo. Tuttavia, le opzioni di distribuzione sono limitate per queste app perché non hanno un scm sito (Kudu).
  • Le app per le funzioni in esecuzione in Linux un piano Premium o in un piano dedicato (servizio app) hanno un scm sito (Kudu), ma è limitato rispetto a Windows.
  • Le compilazioni remote non vengono eseguite quando un'app usa run-from-package. Per informazioni su come usare la compilazione remota in questi casi, vedere Distribuzione zip.
  • Potrebbero verificarsi problemi con la compilazione remota quando l'app è stata creata prima che la funzionalità sia stata resa disponibile (1° agosto 2019). Per le app meno recenti, creare una nuova app per le funzioni o eseguire az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> per aggiornare l'app per le funzioni. Questo comando potrebbe richiedere due tentativi di esito positivo.

Archiviazione del contenuto dell'app

Diversi metodi di distribuzione archiviano il payload dell'applicazione distribuito o compilato nell'account di archiviazione associato all'app per le funzioni. Le funzioni tentano di usare la condivisione di contenuto File di Azure quando configurata, ma alcuni metodi archiviano invece il payload nell'istanza di archiviazione BLOB associata alla AzureWebJobsStorage connessione. Vedere i dettagli nei paragrafi In cui è archiviato il contenuto dell'app di ogni tecnologia di distribuzione illustrata nella sezione successiva.

Importante

L'account di archiviazione viene usato per archiviare dati importanti dell'app, a volte incluso il codice dell'applicazione stesso. È consigliabile limitare l'accesso da altre app e utenti all'account di archiviazione.

Dettagli della tecnologia di distribuzione

I metodi di distribuzione seguenti sono disponibili in Funzioni di Azure.

URL del pacchetto esterno

È possibile usare un URL del pacchetto esterno per fare riferimento a un file di pacchetto remoto (.zip) che contiene l'app per le funzioni. Il file viene scaricato dall'URL fornito e l'app viene eseguita in modalità Esegui dal pacchetto .

Come usarlo: aggiungere WEBSITE_RUN_FROM_PACKAGE alle impostazioni dell'applicazione. Il valore di questa impostazione deve essere un URL (il percorso del file di pacchetto specifico che si vuole eseguire). È possibile aggiungere impostazioni nel portale o usando l'interfaccia della riga di comando di Azure.

Se si usa l'archiviazione BLOB di Azure, usare un contenitore privato con una firma di accesso condiviso (SAS) per concedere a Funzioni l'accesso al pacchetto. Ogni volta che l'applicazione viene riavviata, recupera una copia del contenuto. Il riferimento deve essere valido per la durata dell'applicazione.

Quando usarlo: l'URL del pacchetto esterno è l'unico metodo di distribuzione supportato per Funzioni di Azure in esecuzione in Linux nel piano a consumo, se l'utente non vuole che si verifichi una compilazione remota. Ogni volta che si distribuisce il file di pacchetto a cui fa riferimento un'app per le funzioni, è necessario sincronizzare manualmente i trigger, inclusa la distribuzione iniziale. Quando si modifica il contenuto del file del pacchetto e non l'URL stesso, è anche necessario riavviare l'app per le funzioni per sincronizzare i trigger.

Dove viene archiviato il contenuto dell'app: il contenuto dell'app viene archiviato nell'URL specificato. Potrebbe trattarsi di BLOB di Azure, possibilmente nell'account di archiviazione specificato dalla AzureWebJobsStorage connessione. Per impostazione predefinita, alcuni strumenti client possono essere distribuiti in un BLOB in questo account. Ad esempio, per le app a consumo Linux, l'interfaccia della riga di comando di Azure tenterà di eseguire la distribuzione tramite un pacchetto archiviato in un BLOB nell'account specificato da AzureWebJobsStorage.

Distribuzione zip

Usare zip deploy per eseguire il push di un file di .zip che contiene l'app per le funzioni in Azure. Facoltativamente, puoi impostare l'app per avviare l'esecuzione dal pacchetto o specificare che si verifica una compilazione remota.

Come usarlo: eseguire la distribuzione usando lo strumento client preferito: Visual Studio Code, Visual Studio o dalla riga di comando usando Funzioni di Azure Core Tools. Per impostazione predefinita, questi strumenti usano la distribuzione zip ed eseguono dal pacchetto. Core Tools e l'estensione di Visual Studio Code consentono entrambe la compilazione remota durante la distribuzione in Linux. Per distribuire manualmente un file .zip nell'app per le funzioni, seguire le istruzioni in Distribuire da un file o un URL .zip.

Quando si esegue la distribuzione tramite zip deploy, è possibile impostare l'app da eseguire dal pacchetto. Per eseguire dal pacchetto, impostare il valore dell'impostazione dell'applicazione WEBSITE_RUN_FROM_PACKAGE su 1. È consigliabile distribuire zip. Offre tempi di caricamento più rapidi per le applicazioni ed è l'impostazione predefinita per VS Code, Visual Studio e l'interfaccia della riga di comando di Azure.

Quando usarlo: zip deploy è la tecnologia di distribuzione consigliata per Funzioni di Azure.

Dove viene archiviato il contenuto dell'app: il contenuto dell'app da una distribuzione ZIP per impostazione predefinita viene archiviato nel file system, che può essere supportato da File di Azure dall'account di archiviazione specificato al momento della creazione dell'app per le funzioni. In Utilizzo linux, il contenuto dell'app viene invece salvato in modo permanente in un BLOB nell'account di archiviazione specificato dalla AzureWebJobsStorage connessione.

Contenitore Docker

È possibile distribuire un'app per le funzioni in esecuzione in un contenitore Linux.

Come usarla: Creare le funzioni in un contenitore Linux e quindi distribuire il contenitore in un piano Premium o Dedicato in Funzioni di Azure o in un altro host contenitore. Usare Funzioni di Azure Core Tools per creare un Dockerfile personalizzato per il progetto usato per compilare un'app per le funzioni in contenitori. È possibile usare il contenitore nelle distribuzioni seguenti:

Quando usarlo: usare l'opzione contenitore Docker quando è necessario un maggiore controllo sull'ambiente Linux in cui viene eseguita l'app per le funzioni e dove è ospitato il contenitore. Questo meccanismo di distribuzione è disponibile solo per le funzioni in esecuzione in Linux.

Dove viene archiviato il contenuto dell'app: il contenuto dell'app viene archiviato nel registro contenitori specificato come parte dell'immagine.

Controllo del codice sorgente

È possibile abilitare l'integrazione continua tra l'app per le funzioni e un repository di codice sorgente. Con il controllo del codice sorgente abilitato, un aggiornamento al codice nel repository di origine connesso attiva la distribuzione del codice più recente dal repository. Per altre informazioni, vedere Distribuzione continua per Funzioni di Azure.

Come usarlo: il modo più semplice per configurare la pubblicazione dal controllo del codice sorgente è dal Centro distribuzione nell'area Funzioni del portale. Per altre informazioni, vedere Distribuzione continua per Funzioni di Azure.

Quando usarlo: l'uso del controllo del codice sorgente è la procedura consigliata per i team che collaborano alle app per le funzioni. Il controllo del codice sorgente è un'opzione di distribuzione valida che consente pipeline di distribuzione più sofisticate. Il controllo del codice sorgente è in genere abilitato in uno slot di staging, che può essere scambiato in produzione dopo la convalida degli aggiornamenti dal repository. Per altre informazioni, vedere Funzioni di Azure slot di distribuzione.

Dove viene archiviato il contenuto dell'app: il contenuto dell'app si trova nel sistema di controllo del codice sorgente, ma un contenuto dell'app clonato e compilato da viene archiviato nel file system dell'app, che può essere supportato da File di Azure dall'account di archiviazione specificato al momento della creazione dell'app per le funzioni.

Repository Git locale

È possibile usare Git locale per eseguire il push del codice dal computer locale per Funzioni di Azure usando Git.

Come usarlo: seguire le istruzioni riportate in Distribuzione Git locale per app Azure Servizio.

Quando usarlo: per ridurre la probabilità di errori, è consigliabile evitare di usare metodi di distribuzione che richiedono il passaggio aggiuntivo di sincronizzazione manuale dei trigger. Usare la distribuzione zip quando possibile.

Dove viene archiviato il contenuto dell'app: il contenuto dell'app viene archiviato nel file system, che può essere supportato da File di Azure dall'account di archiviazione specificato al momento della creazione dell'app per le funzioni.

FTP/S

È possibile usare FTP/S per trasferire direttamente i file in Funzioni di Azure, anche se questo metodo di distribuzione non è consigliato. Quando non si prevede di usare FTP, è consigliabile disabilitarlo. Se si sceglie di usarlo, è necessario applicare FTPS. Per informazioni su come nella portale di Azure, vedere Applicare FTPS.

Come usarlo: seguire le istruzioni riportate in Impostazioni di distribuzione FTPS per ottenere l'URL e le credenziali che è possibile usare per eseguire la distribuzione nell'app per le funzioni tramite FTPS.

Quando usarlo: per ridurre la probabilità di errori, è consigliabile evitare di usare metodi di distribuzione che richiedono il passaggio aggiuntivo di sincronizzazione manuale dei trigger. Usare la distribuzione zip quando possibile.

Dove viene archiviato il contenuto dell'app: il contenuto dell'app viene archiviato nel file system, che può essere supportato da File di Azure dall'account di archiviazione specificato al momento della creazione dell'app per le funzioni.

Modifica del portale

Nell'editor basato sul portale è possibile modificare direttamente i file presenti nell'app per le funzioni (essenzialmente distribuendo ogni volta che si salvano le modifiche).

Come usarlo: per poter modificare le funzioni nel portale di Azure, è necessario aver creato le funzioni nel portale. Per mantenere un'unica origine di verità, l'uso di qualsiasi altro metodo di distribuzione rende la funzione di sola lettura e impedisce la modifica continua del portale. Per tornare a uno stato in cui è possibile modificare i file nella portale di Azure, è possibile ripristinare e rimuovere manualmente le impostazioni dell'applicazione correlate alla Read/Write distribuzione ( ad esempio WEBSITE_RUN_FROM_PACKAGE).

Quando usarlo: il portale è un buon modo per iniziare a usare Funzioni di Azure. Per operazioni di sviluppo più avanzate, è consigliabile usare uno degli strumenti client seguenti:

Dove viene archiviato il contenuto dell'app: il contenuto dell'app viene archiviato nel file system, che può essere supportato da File di Azure dall'account di archiviazione specificato al momento della creazione dell'app per le funzioni.

La tabella seguente illustra i sistemi operativi e le lingue che supportano la modifica nel portale:

Lingua Consumo Windows Windows Premium Windows Dedicato Consumo Linux Linux Premium Linux dedicato
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 La modifica nel portale è supportata solo per i file di script C#, che vengono eseguiti in-process con l'host. Per altre informazioni, vedere le informazioni di riferimento per sviluppatori Funzioni di Azure script C# (con estensione csx).
2 La modifica nel portale è supportata solo per il modello di programmazione Python v1.

Comportamenti di distribuzione

Quando si distribuiscono gli aggiornamenti al codice dell'app per le funzioni, le funzioni attualmente in esecuzione vengono terminate. Al termine della distribuzione, il nuovo codice viene caricato per avviare l'elaborazione delle richieste. Vedere Migliorare le prestazioni e l'affidabilità di Funzioni di Azure per informazioni su come scrivere funzioni senza stato e difensive.

Se è necessario un maggiore controllo su questa transizione, è consigliabile usare gli slot di distribuzione.

Slot di distribuzione

Quando si distribuisce l'app per le funzioni in Azure, è possibile eseguire la distribuzione in uno slot di distribuzione separato anziché direttamente nell'ambiente di produzione. La distribuzione in uno slot di distribuzione e quindi lo scambio in produzione dopo la verifica è il modo consigliato per configurare la distribuzione continua.

Il modo in cui si esegue la distribuzione in uno slot dipende dallo strumento di distribuzione specifico usato. Ad esempio, quando si usa Funzioni di Azure Core Tools, si include l'opzione--slot per indicare il nome di uno slot specifico per il func azure functionapp publish comando.

Per altre informazioni sugli slot di distribuzione, vedere la documentazione relativa agli slot di distribuzione Funzioni di Azure per informazioni dettagliate.

Passaggi successivi

Leggere questi articoli per altre informazioni sulla distribuzione delle app per le funzioni: