Tecnologie di distribuzione in Funzioni di Azure

È possibile usare alcune tecnologie diverse per distribuire il codice Funzioni di Azure progetto in Azure. Questo articolo offre una panoramica dei metodi di distribuzione disponibili e consigli per il metodo migliore da usare in diversi scenari. Fornisce anche un elenco completo dei dettagli chiave e delle tecnologie di distribuzione sottostanti.

Metodi di distribuzione

La tecnologia di distribuzione che si usa per pubblicare il codice in Azure è in genere determinata dal modo in cui si pubblica l'app. Il metodo di distribuzione appropriato è determinato da esigenze specifiche e dal punto nel ciclo di sviluppo. Ad esempio, durante lo sviluppo e il test è possibile eseguire la distribuzione direttamente dallo strumento di sviluppo, ad esempio Visual Studio Code. Quando l'app è in produzione, è più probabile che la pubblicazione sia continua dal controllo del codice sorgente o tramite una pipeline di pubblicazione automatizzata, che include convalida e test aggiuntivi.

La tabella seguente descrive i metodi di distribuzione disponibili per il progetto Function.

Tipo di distribuzione Metodi Ideale per...
Basato su strumenti Visual Studio Code pubblicazione
Visual Studio pubblicazione
Pubblicazione di Core Tools
Distribuzioni durante lo sviluppo e altre distribuzioni ad hock. Le distribuzioni vengono gestite in locale dagli strumenti.
Gestito dal servizio app 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 del servizio app (Kudu).
Pipeline esterne Azure Pipelines
GitHub azioni
Le pipeline DevOps di produzione che includono convalida aggiuntiva, test e altre azioni vengono eseguite come parte di una distribuzione automatizzata. Le distribuzioni vengono gestite dalla pipeline.

Mentre le distribuzioni di Funzioni specifiche usano la tecnologia migliore in base al contesto, la maggior parte dei metodi di distribuzione si basa sulla distribuzione zip.

Disponibilità della tecnologia di distribuzione

Funzioni di Azure supporta lo sviluppo e l'hosting locali multipiattaforma in Windows e Linux. Attualmente sono disponibili tre piani di hosting:

Ogni piano ha comportamenti diversi. Non tutte le tecnologie di distribuzione sono disponibili per ogni versione di Funzioni di Azure. Il grafico seguente mostra le tecnologie di distribuzione supportate per ogni combinazione di sistema operativo e piano di hosting:

Tecnologia di distribuzione Windows consumo Windows Premium Windows dedicato a consumo per Linux Linux Premium Linux dedicato
URL pacchettoesterno 1
Zip deploy
Contenitore Docker
Distribuzione Web
Controllo del codice sorgente
Git1 locale
Sincronizzazione cloud1
FTP1
Modifica nel portale 2 2

1 Tecnologia di distribuzione che richiede la sincronizzazione manuale dei trigger. 2 La modifica del portale è abilitata solo per i trigger HTTP e Timer per Funzioni in Linux che usano Premium e dedicati.

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. In alcuni casi, tuttavia, è necessario sincronizzare manualmente i trigger. Quando si distribuiscono gli aggiornamenti facendo riferimento a un URL del pacchetto esterno, a git locale, a una sincronizzazione cloud o a FTP, è necessario sincronizzare manualmente i trigger. È 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 a https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> usando la chiave https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>.
  • 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.

Compilazione remota

Funzioni di Azure possibile eseguire automaticamente compilazioni sul codice ricevuto dopo le distribuzioni ZIP. Queste compilazioni si comportano in modo leggermente diverso a seconda che l'app sia in esecuzione Windows o Linux. Le compilazioni remote non vengono eseguite quando un'app è stata impostata in precedenza per l'esecuzione in modalità Esegui da pacchetto. Per informazioni su come usare la compilazione remota, passare a ZIP deploy.

Nota

Se si verificano problemi con la compilazione remota, è possibile che l'app sia stata creata prima che la funzionalità fosse resa disponibile (1 agosto 2019). Provare a creare una nuova app per le funzioni o a eseguire az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> per aggiornare l'app per le funzioni. Questo comando potrebbe richiedere due tentativi.

Compilazione remota in Windows

Tutte le app per le funzioni Windows hanno una piccola app di gestione, il sito SCM (o Kudu). Questo sito gestisce gran parte della logica di distribuzione e compilazione per Funzioni di Azure.

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

Compilazione remota in Linux

Per abilitare la compilazione remota in Linux, è necessario impostare le impostazioni dell'applicazione seguenti:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

Per impostazione predefinita, sia Azure Functions Core Tools che l'estensione Funzioni di Azure per Visual Studio Code eseguire compilazioni remote durante la distribuzione in Linux. Per questo, entrambi gli strumenti creano automaticamente queste impostazioni in Azure.

Quando le app vengono compilate in modalità remota in Linux, vengono eseguite dal pacchetto di distribuzione.

Piano a consumo

Le app per le funzioni Linux in esecuzione nel piano a consumo non hanno un sito SCM/Kudu, che limita le opzioni di distribuzione. Tuttavia, le app per le funzioni in Linux in esecuzione nel piano a consumo supportano le compilazioni remote.

Piani dedicati e Premium servizio

Anche le app per le funzioni in esecuzione in Linux nel piano dedicato (servizio app) e nel piano Premium hanno un sito SCM/Kudu limitato.

Dettagli della tecnologia di distribuzione

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

URL del pacchetto esterno

È possibile usare un URL di 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 specificato e l'app viene eseguita in modalità Esegui da pacchetto.

Come usarlo: Aggiungere alle impostazioni dell'applicazione. Il valore di questa impostazione deve essere un URL (il percorso del file del pacchetto specifico che si vuole eseguire). È possibile aggiungere impostazioni nel portale o tramite 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 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. Quando si aggiorna il file del pacchetto a cui fa riferimento un'app per le funzioni, è necessario sincronizzare manualmente i trigger per indicare ad Azure che l'applicazione è stata modificata.

Zip deploy

Usare zip deploy per eseguire il push di un file .zip che contiene l'app per le funzioni in Azure. Facoltativamente, è possibile impostare l'app per l'avvio dell'esecuzionedal pacchetto o specificare che si verifica una compilazione remota.

Come usarlo: Eseguire la distribuzione usando lo strumento client preferito: Visual Studio Code, Visual Studioo dalla riga di comando usando il Azure Functions Core Tools. Per impostazione predefinita, questi strumenti usano la distribuzione ZIP ed eseguono dal pacchetto. Core Tools e l'estensione Visual Studio Code consentono entrambi 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 .zip o un URL.

Quando si esegue la distribuzione tramite zip deploy, è possibile impostare l'app per l'esecuzione dal pacchetto. Per eseguire dal pacchetto, impostare il valore WEBSITE_RUN_FROM_PACKAGE dell'impostazione dell'applicazione su 1 . È consigliabile usare la distribuzione zip. Consente 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.

Contenitore Docker

È possibile distribuire un'immagine del contenitore Linux che contiene l'app per le funzioni.

Come usarlo: Creare un'app per le funzioni Linux nel piano Premium o Dedicato e specificare l'immagine del contenitore da cui eseguire. Questa operazione può essere eseguita in due modi:

  • Creare un'app per le funzioni Linux Servizio app di Azure un piano di distribuzione nel portale di Azure. Per Pubblicaselezionare Immagine Dockere quindi configurare il contenitore. Immettere il percorso in cui è ospitata l'immagine.
  • Creare un'app per le funzioni Linux in un piano di servizio app usando l'interfaccia della riga di comando di Azure. Per informazioni, vedere Creare una funzione in Linux usando un'immagine personalizzata.

Per eseguire la distribuzione in un'app esistente usando un contenitore personalizzato, in Azure Functions Core Toolsusare il comando .

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

Distribuzione Web (MSDeploy)

Distribuzione Web pacchetti e distribuisce le applicazioni Windows in qualsiasi server IIS, incluse le app per le funzioni in esecuzione Windows in Azure.

Come usarlo: Usare Visual Studio strumenti per Funzioni di Azure. Deselezionare la casella di controllo Esegui dal file del pacchetto (scelta consigliata).

È anche possibile scaricare Distribuzione Web 3.6 e chiamare direttamente .

Quando usarlo: Distribuzione Web è supportato e non presenta problemi, ma il meccanismo preferito è la distribuzione ZIP con l'opzione Esegui da pacchetto abilitata. Per altre informazioni, vedere la guida Visual Studio sviluppo.

Controllo del codice sorgente

Usare il controllo del codice sorgente per connettere l'app per le funzioni a un repository Git. Un aggiornamento del codice nel repository attiva la distribuzione. Per altre informazioni, vedere il wiki di Kudu.

Come usarlo: Usare Centro distribuzione nell'area Funzioni del portale per configurare la pubblicazione dal controllo del codice sorgente. 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.

Repository Git locale

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

Come usarlo: Seguire le istruzioni in Distribuzione git locale per Servizio app di Azure.

Quando usarlo: In generale, è consigliabile usare un metodo di distribuzione diverso. Quando si pubblica da Git locale, è necessario sincronizzare manualmente i trigger.

Sincronizzazione cloud

Usare la sincronizzazione cloud per sincronizzare il contenuto Dropbox e OneDrive con Funzioni di Azure.

Come usarlo: Seguire le istruzioni in Sincronizzare il contenuto da una cartella cloud.

Quando usarlo: In generale, è consigliabile usare altri metodi di distribuzione. Quando si pubblica usando la sincronizzazione cloud, è necessario sincronizzare manualmente i trigger.

FTP

È possibile usare FTP per trasferire direttamente i file Funzioni di Azure.

Come usarlo: Seguire le istruzioni in Distribuire il contenuto tramite FTP/s.

Quando usarlo: In generale, è consigliabile usare altri metodi di distribuzione. Quando si pubblica tramite FTP, è necessario sincronizzare manualmente i trigger.

Modifica nel 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 una singola origine di dati, 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 nel portale di Azure, è possibile ripristinare manualmente la modalità di modifica e rimuovere eventuali impostazioni dell'applicazione correlate alla Read/Write distribuzione( ad esempio WEBSITE_RUN_FROM_PACKAGE .

Quando usarlo: Il portale è un ottimo modo per iniziare a usare Funzioni di Azure. Per un lavoro di sviluppo più intenso, è consigliabile usare uno degli strumenti client seguenti:

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

Linguaggio Windows consumo Windows Premium Windows dedicato a consumo per Linux Linux Premium Linux dedicato
C#
Script C# * *
F#
Java
JavaScript (Node.js) * *
Python (anteprima)
PowerShell (anteprima)
TypeScript (Node.js)

*La modifica del portale è abilitata solo per i trigger HTTP e Timer per Funzioni in Linux Premium e dedicati.

Comportamenti di distribuzione

Quando si esegue una distribuzione, a tutte le esecuzioni esistenti è consentito il completamento o il timeout, dopo il quale il nuovo codice viene caricato per iniziare l'elaborazione delle richieste.

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. Per altre informazioni sugli slot di distribuzione, vedere la documentazione Funzioni di Azure degli slot di distribuzione.

Passaggi successivi

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