Eseguire Funzioni di Azure da un file di pacchettoRun your Azure Functions from a package file

In Azure, è possibile eseguire le funzioni direttamente da un file di pacchetto di distribuzione nell'app per le funzioni.In Azure, you can run your functions directly from a deployment package file in your function app. L'altra opzione consiste nel distribuire i file nella directory d:\home\site\wwwroot dell'app per le funzioni.The other option is to deploy your files in the d:\home\site\wwwroot directory of your function app.

Questo articolo descrive i vantaggi dell'esecuzione delle funzioni da un pacchetto.This article describes the benefits of running your functions from a package. Viene inoltre illustrato come abilitare questa funzionalità nell'app per le funzioni.It also shows how to enable this functionality in your function app.

Importante

Quando si distribuiscono le funzioni in un'app per le funzioni Linux in un piano Premium, è sempre necessario eseguire dal file del pacchetto e pubblicare l'app usando il Azure Functions Core Tools.When deploying your functions to a Linux function app in a Premium plan, you should always run from the package file and publish your app using the Azure Functions Core Tools.

Vantaggi dell'esecuzione da un file di pacchettoBenefits of running from a package file

Esistono diversi vantaggi nell'esecuzione da un file di pacchetto:There are several benefits to running from a package file:

  • Riduce il rischio di problemi di blocco di copia dei file.Reduces the risk of file copy locking issues.
  • Possono essere distribuiti in un'app di produzione (con il riavvio).Can be deployed to a production app (with restart).
  • È possibile sapere con sicurezza quali file sono in esecuzione nell'app.You can be certain of the files that are running in your app.
  • Migliora le prestazioni delle distribuzioni Azure Resource Manager.Improves the performance of Azure Resource Manager deployments.
  • Si possono ridurre i tempi di avvio a freddo, in particolare per le funzioni di JavaScript con grandi alberi del pacchetto npm.May reduce cold-start times, particularly for JavaScript functions with large npm package trees.

Per altre informazioni, vedere questo annuncio.For more information, see this announcement.

Abilitazione di funzioni da eseguire da un pacchettoEnabling functions to run from a package

Per abilitare l'esecuzione dell'app per le funzioni da un pacchetto, è sufficiente aggiungere un'impostazione WEBSITE_RUN_FROM_PACKAGE alle impostazioni dell'app per le funzioni.To enable your function app to run from a package, you just add a WEBSITE_RUN_FROM_PACKAGE setting to your function app settings. L'impostazione WEBSITE_RUN_FROM_PACKAGE deve avere almeno uno dei valori seguenti:The WEBSITE_RUN_FROM_PACKAGE setting can have one of the following values:

ValueValue DescrizioneDescription
1 Consigliato per le app per le funzioni in esecuzione in Windows.Recommended for function apps running on Windows. Esecuzione da un file di pacchetto nella cartella d:\home\data\SitePackages dell'app per le funzioni.Run from a package file in the d:\home\data\SitePackages folder of your function app. Se non si distribuisce con zip deploy, questa opzione richiede che anche la cartella disponga di packagename.txtun file denominato.If not deploying with zip deploy, this option requires the folder to also have a file named packagename.txt. Questo file contiene solo il nome del file di pacchetto nella cartella, senza spazi vuoti.This file contains only the name of the package file in folder, without any whitespace.
<url> Percorso di un file di pacchetto specifico da eseguire.Location of a specific package file you want to run. Quando si usa l'archiviazione BLOB, è consigliabile usare un contenitore privato con una firma di accesso condiviso (SAS) per abilitare il runtime di Funzioni per l'accesso al pacchetto.When using Blob storage, you should use a private container with a Shared Access Signature (SAS) to enable the Functions runtime to access to the package. È possibile usare Azure Storage Explorer per caricare i file di pacchetto nell'account di archiviazione BLOB.You can use the Azure Storage Explorer to upload package files to your Blob storage account.

Attenzione

Quando si esegue un'app per le funzioni in Windows, l'opzione URL esterno produce prestazioni di avvio a freddo inferiori.When running a function app on Windows, the external URL option yields worse cold-start performance. Quando si distribuisce l'app per le funzioni in Windows WEBSITE_RUN_FROM_PACKAGE , 1 è necessario impostare su e pubblicare con la distribuzione zip.When deploying your function app to Windows, you should set WEBSITE_RUN_FROM_PACKAGE to 1 and publish with zip deployment.

Di seguito viene illustrata un'app per le funzioni configurata per l'esecuzione da un file con estensione zip ospitato in archiviazione BLOB di Azure:The following shows a function app configured to run from a .zip file hosted in Azure Blob storage:

Impostazione dell'app WEBSITE_RUN_FROM_ZIP

Nota

Attualmente sono supportati solo i file di pacchetto con estensione zip.Currently, only .zip package files are supported.

Integrazione con distribuzione di file ZIPIntegration with zip deployment

La distribuzione zip è una funzionalità di app Azure servizio che consente di distribuire il progetto di app per wwwroot le funzioni nella directory.Zip deployment is a feature of Azure App Service that lets you deploy your function app project to the wwwroot directory. Il progetto viene impacchettato come un file di distribuzione di file ZIP.The project is packaged as a .zip deployment file. La stesse API possono essere usate per distribuire il pacchetto nella cartella d:\home\data\SitePackages.The same APIs can be used to deploy your package to the d:\home\data\SitePackages folder. Con il valore 1 dell'impostazione dell'app WEBSITE_RUN_FROM_PACKAGE, le API di distribuzione di file ZIP copiano il pacchetto nella cartella d:\home\data\SitePackages invece di estrarre i file in d:\home\site\wwwroot.With the WEBSITE_RUN_FROM_PACKAGE app setting value of 1, the zip deployment APIs copy your package to the d:\home\data\SitePackages folder instead of extracting the files to d:\home\site\wwwroot. Questa operazione crea anche il file packagename.txt.It also creates the packagename.txt file. L'app per le funzioni viene quindi eseguita dal pacchetto dopo il riavvio e wwwroot diventa di sola lettura.The function app is then run from the package after a restart, and wwwroot becomes read-only. Per altre informazioni sulla distribuzione di file ZIP, vedere Distribuzione di file ZIP nelle Funzioni di Azure.For more information about zip deployment, see Zip deployment for Azure Functions.

Aggiungere l'impostazione WEBSITE_RUN_FROM_PACKAGEAdding the WEBSITE_RUN_FROM_PACKAGE setting

Esistono diversi modi per aggiungere, aggiornare ed eliminare le impostazioni dell'app per le funzioni:There are several ways that you can add, update, and delete function app settings:

Risoluzione dei problemiTroubleshooting

  • L'esecuzione dal pacchetto wwwroot rende di sola lettura, pertanto verrà visualizzato un errore durante la scrittura di file in questa directory.Run From Package makes wwwroot read-only, so you will receive an error when writing files to this directory.
  • I formati tar e gzip non sono supportati.Tar and gzip formats are not supported.
  • Questa funzionalità non è composta dalla cache locale.This feature does not compose with local cache.
  • Per migliorare le prestazioni di avvio a freddo, usare l'opzione ZipWEBSITE_RUN_FROM_PACKAGElocale (= 1).For improved cold-start performance, use the local Zip option (WEBSITE_RUN_FROM_PACKAGE=1).

Passaggi successiviNext steps