Déploiement zip pour Azure FunctionsZip deployment for Azure Functions

Cet article décrit comment déployer vos fichiers projet d’application de fonction sur Azure à partir d’un fichier .zip (compressé).This article describes how to deploy your function app project files to Azure from a .zip (compressed) file. Vous allez découvrir comment effectuer un déploiement Push, à la fois à l’aide d’Azure CLI et des API REST.You learn how to do a push deployment, both by using Azure CLI and by using the REST APIs. Les outils principaux d’Azure Functions utilisent également ces API de déploiement lors de la publication d’un projet local sur Azure.Azure Functions Core Tools also uses these deployment APIs when publishing a local project to Azure.

Azure Functions offre la gamme complète d’options d’intégration et de déploiement continu fournies par Azure App Service.Azure Functions has the full range of continuous deployment and integration options that are provided by Azure App Service. Pour plus d’informations, consultez Déploiement continu pour Azure Functions.For more information, see Continuous deployment for Azure Functions.

Pour accélérer le développement, vous pouvez déployer les fichiers projet de vos applications de fonction directement à partir d’un fichier zip.To speed up development, you may find it easier to deploy your function app project files directly from a .zip file. L’API de déploiement zip prend le contenu d’un fichier zip et extrait son contenu dans le dossier wwwroot de votre application de fonction.The .zip deployment API takes the contents of a .zip file and extracts the contents into the wwwroot folder of your function app. Ce déploiement de fichier .zip utilise le même service Kudu que celui qui pilote les déploiements continus basés sur l’intégration, notamment :This .zip file deployment uses the same Kudu service that powers continuous integration-based deployments, including:

  • Suppression des fichiers conservés suite aux déploiements antérieursDeletion of files that were left over from earlier deployments.
  • Personnalisation du déploiement, notamment exécution de scripts de déploiementDeployment customization, including running deployment scripts.
  • Journaux d’activité de déploiementDeployment logs.
  • La fonction de synchronisation se déclenche dans une application de fonction Plan Consommation.Syncing function triggers in a Consumption plan function app.

Pour plus d’informations, consultez la documentation de référence sur le déploiement zip.For more information, see the .zip deployment reference.

Spécifications du déploiement de fichier .zipDeployment .zip file requirements

Le fichier zip que vous utilisez pour le déploiement Push doit contenir tous les fichiers nécessaires à l’exécution de votre fonction.The .zip file that you use for push deployment must contain all of the files needed to run your function.

Important

Quand vous utilisez le déploiement zip, tous les fichiers d’un déploiement existant qui ne se trouvent pas dans le fichier zip sont supprimés de votre application de fonction.When you use .zip deployment, any files from an existing deployment that aren't found in the .zip file are deleted from your function app.

Le code de toutes les fonctions d’une application de fonctions spécifique se trouve dans un dossier de projet racine qui contient un fichier de configuration d’hôte, ainsi qu’un ou plusieurs sous-dossiers.The code for all the functions in a specific function app is located in a root project folder that contains a host configuration file and one or more subfolders. Chaque sous-dossier contient le code d’une fonction distincte.Each subfolder contains the code for a separate function. La structure de dossiers est présentée dans la représentation suivante :The folder structure is shown in the following representation:

FunctionApp
 | - host.json
 | - MyFirstFunction
 | | - function.json
 | | - ...  
 | - MySecondFunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

Dans les versions 2.x et ultérieures du runtime Functions, toutes les fonctions dans l’application de fonction doivent partager la même pile de langage.In version 2.x and higher of the Functions runtime, all functions in the function app must share the same language stack.

Le fichier host.json contient des configurations spécifiques du runtime et se trouve dans le dossier racine de la Function App.The host.json file contains runtime-specific configurations and is in the root folder of the function app. Un dossier bin contient des packages et autres fichiers de bibliothèque requis par la Function App.A bin folder contains packages and other library files that the function app requires. Consultez la configuration requise spécifique au langage d’un projet d’application de fonction :See the language-specific requirements for a function app project:

Une application de fonction inclut tous les fichiers et dossiers dans le répertoire wwwroot.A function app includes all of the files and folders in the wwwroot directory. Un déploiement de fichier .zip inclut le contenu du répertoire wwwroot, mais pas le répertoire proprement dit.A .zip file deployment includes the contents of the wwwroot directory, but not the directory itself. Lorsque vous déployez un projet de bibliothèque de classes C#, vous devez inclure les fichiers et les dépendances de bibliothèque compilés dans un sous-dossier bin de votre package zip.When deploying a C# class library project, you must include the compiled library files and dependencies in a bin subfolder in your .zip package.

Télécharger vos fichiers d’application de fonctionDownload your function app files

Quand vous développez sur un ordinateur local, il est facile de créer un fichier .zip du dossier de projet d’application de fonction sur votre ordinateur de développement.When you are developing on a local computer, it's easy to create a .zip file of the function app project folder on your development computer.

Toutefois, vous aurez peut-être créé vos fonctions à l’aide de l’éditeur dans le portail Azure.However, you might have created your functions by using the editor in the Azure portal. Vous pouvez télécharger un projet d’application de fonction existant d’une des manières suivantes :You can download an existing function app project in one of these ways:

  • À partir du portail Azure :From the Azure portal:

    1. Connectez-vous au portail Azure et accédez à votre application de fonction.Sign in to the Azure portal, and then go to your function app.

    2. Sous l’onglet Vue d’ensemble, sélectionnez Télécharger le contenu de l’application.On the Overview tab, select Download app content. Sélectionnez vos options de téléchargement, puis Télécharger.Select your download options, and then select Download.

      Télécharger le projet d’application de fonction

      Le fichier .zip téléchargé est au format correct pour être republié sur votre application de fonction en utilisant le déploiement Push de fichier .zip.The downloaded .zip file is in the correct format to be republished to your function app by using .zip push deployment. En outre, le téléchargement à partir du portail peut ajouter les fichiers nécessaires pour ouvrir votre application de fonction directement dans Visual Studio.The portal download can also add the files needed to open your function app directly in Visual Studio.

  • Utilisation d’API REST :Using REST APIs:

    Utilisez l’API GET de déploiement suivante pour télécharger les fichiers à partir de votre projet <function_app> :Use the following deployment GET API to download the files from your <function_app> project:

      https://<function_app>.scm.azurewebsites.net/api/zip/site/wwwroot/
    

    L’inclusion de /site/wwwroot/ permet de s’assurer que votre fichier zip comprend uniquement les fichiers de projet de l’application de fonction, et non l’intégralité du site.Including /site/wwwroot/ makes sure your zip file includes only the function app project files and not the entire site. Si vous ne vous êtes pas encore connecté à Azure, vous serez invité à le faire.If you are not already signed in to Azure, you will be asked to do so.

Vous pouvez également télécharger un fichier .zip à partir d’un dépôt GitHub.You can also download a .zip file from a GitHub repository. Quand vous téléchargez un dépôt GitHub sous la forme d’un fichier zip, GitHub ajoute un niveau de dossier supplémentaire à la branche.When you download a GitHub repository as a .zip file, GitHub adds an extra folder level for the branch. Ce niveau de dossier supplémentaire signifie que vous ne pouvez pas déployer le fichier .zip directement tel que vous l’avez téléchargé à partir de GitHub.This extra folder level means that you can't deploy the .zip file directly as you downloaded it from GitHub. Si vous utilisez un dépôt GitHub pour tenir à jour votre application de fonction, vous devez utiliser l’intégration continue pour la déployer.If you're using a GitHub repository to maintain your function app, you should use continuous integration to deploy your app.

Déployer à l’aide d’Azure CLIDeploy by using Azure CLI

Vous pouvez utiliser Azure CLI pour déclencher un déploiement Push.You can use Azure CLI to trigger a push deployment. Effectuez le déploiement Push d’un fichier .zip sur votre application de fonction à l’aide de la commande az functionapp deployment source config-zip.Push deploy a .zip file to your function app by using the az functionapp deployment source config-zip command. Pour exécuter cette commande, vous devez utiliser Azure CLI version 2.0.21 ou ultérieure.To use this command, you must use Azure CLI version 2.0.21 or later. Pour vérifier votre version d’Azure CLI, utilisez la commande az --version.To see what Azure CLI version you are using, use the az --version command.

Dans la commande suivante, remplacez l’espace réservé <zip_file_path> par le chemin vers l’emplacement de votre fichier .zip.In the following command, replace the <zip_file_path> placeholder with the path to the location of your .zip file. Remplacez également <app_name> par le nom unique de votre application de fonction, et <resource_group> par le nom de votre groupe de ressources.Also, replace <app_name> with the unique name of your function app and replace <resource_group> with the name of your resource group.

az functionapp deployment source config-zip -g <resource_group> -n \
<app_name> --src <zip_file_path>

Cette commande déploie les fichiers projet à partir du fichier .zip téléchargé sur votre application de fonction dans Azure.This command deploys project files from the downloaded .zip file to your function app in Azure. Ensuite, il redémarre l’application.It then restarts the app. Pour afficher la liste des déploiements pour cette application de fonction, vous devez utiliser les API REST.To view the list of deployments for this function app, you must use the REST APIs.

Quand vous utilisez Azure CLI sur votre ordinateur local, <zip_file_path> est le chemin du fichier .zip sur votre ordinateur.When you're using Azure CLI on your local computer, <zip_file_path> is the path to the .zip file on your computer. Vous pouvez également exécuter Azure CLI dans Azure Cloud Shell.You can also run Azure CLI in Azure Cloud Shell. Quand vous utilisez Cloud Shell, vous devez d’abord charger votre fichier .zip de déploiement sur le compte Azure Files associé à votre Cloud Shell.When you use Cloud Shell, you must first upload your deployment .zip file to the Azure Files account that's associated with your Cloud Shell. Dans ce cas, <zip_file_path> est l’emplacement de stockage utilisé par votre compte Cloud Shell.In that case, <zip_file_path> is the storage location that your Cloud Shell account uses. Pour plus d’informations, consultez Conserver des fichiers dans Azure Cloud Shell.For more information, see Persist files in Azure Cloud Shell.

Déployer un fichier ZIP avec l’API RESTDeploy ZIP file with REST APIs

Vous pouvez utiliser les API REST du service de déploiement pour déployer le fichier .zip sur votre application dans Azure.You can use the deployment service REST APIs to deploy the .zip file to your app in Azure. Pour déployer, envoyez une demande POST à https://<nom_application>.scm.azurewebsites.net/api/zipdeploy.To deploy, send a POST request to https://<app_name>.scm.azurewebsites.net/api/zipdeploy. La demande POST doit contenir le fichier .zip dans le corps du message.The POST request must contain the .zip file in the message body. Les informations d’identification de déploiement pour votre application sont fournies dans la demande avec l’authentification de base HTTP.The deployment credentials for your app are provided in the request by using HTTP BASIC authentication. Pour plus d’informations, consultez les informations de référence des envois (push) de fichiers .zip.For more information, see the .zip push deployment reference.

Pour l’authentification HTTP BASIC, vous avez besoin de vos informations d’identification de déploiement App Service.For the HTTP BASIC authentication, you need your App Service deployment credentials. Pour découvrir comment définir les informations d’identification de votre déploiement, consultez Définir et réinitialiser les informations d’identification de niveau utilisateur.To see how to set your deployment credentials, see Set and reset user-level credentials.

Avec cURLWith cURL

L’exemple suivant utilise l’outil cURL pour déployer un fichier .zip.The following example uses the cURL tool to deploy a .zip file. Remplacez les espaces réservés <deployment_user>, <zip_file_path> et <app_name>.Replace the placeholders <deployment_user>, <zip_file_path>, and <app_name>. Quand vous y êtes invité par cURL, tapez le mot de passe.When prompted by cURL, type in the password.

curl -X POST -u <deployment_user> --data-binary @"<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

Cette demande déclenche le déploiement par envoi (push) à partir du fichier .zip chargé.This request triggers push deployment from the uploaded .zip file. Vous pouvez examiner les déploiements en cours et passés en utilisant le point de terminaison https://<app_name>.scm.azurewebsites.net/api/deployments, comme le montre l’exemple cURL suivant.You can review the current and past deployments by using the https://<app_name>.scm.azurewebsites.net/api/deployments endpoint, as shown in the following cURL example. Ici encore, remplacez <app_name> par le nom de votre application et <deployment_user> par le nom d’utilisateur de vos informations d’identification de déploiement.Again, replace <app_name> with the name of your app and <deployment_user> with the username of your deployment credentials.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

Avec PowerShellWith PowerShell

L’exemple suivant utilise Publish-AzWebapp pour charger le fichier .zip.The following example uses Publish-AzWebapp upload the .zip file. Remplacez les espaces réservés <group-name>, <app-name> et <zip-file-path>.Replace the placeholders <group-name>, <app-name>, and <zip-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

Cette demande déclenche le déploiement par envoi (push) à partir du fichier .zip chargé.This request triggers push deployment from the uploaded .zip file.

Pour passer en revue les déploiements en cours et passés, exécutez les commandes suivantes.To review the current and past deployments, run the following commands. Là encore, remplacez les valeurs des espaces réservés <deployment-user>, <deployment-password> et <app-name>.Again, replace the <deployment-user>, <deployment-password>, and <app-name> placeholders.

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

Exécuter des fonctions à partir du package de déploiementRun functions from the deployment package

Vous pouvez également choisir d’exécuter vos fonctions directement à partir du fichier de package de déploiement.You can also choose to run your functions directly from the deployment package file. Cette méthode permet d’éviter l’étape de déploiement qui consiste à copier des fichiers du package vers le répertoire wwwroot de votre application de fonction.This method skips the deployment step of copying files from the package to the wwwroot directory of your function app. Au lieu de cela, le fichier de package est monté par le runtime Functions, et le contenu du répertoire wwwroot passe en lecture seule.Instead, the package file is mounted by the Functions runtime, and the contents of the wwwroot directory become read-only.

Le déploiement zip s’intègre à cette fonctionnalité, que vous pouvez activer en définissant le paramètre d’application de fonction WEBSITE_RUN_FROM_PACKAGE sur la valeur 1.Zip deployment integrates with this feature, which you can enable by setting the function app setting WEBSITE_RUN_FROM_PACKAGE to a value of 1. Pour plus d’informations, consultez Exécuter vos fonctions Azure à partir d’un fichier de package.For more information, see Run your functions from a deployment package file.

Personnalisation du déploiementDeployment customization

Le processus de déploiement suppose que le fichier .zip que vous envoyez (push) contienne une application prête à l’exécution.The deployment process assumes that the .zip file that you push contains a ready-to-run app. Par défaut, aucune personnalisation n’est exécutée.By default, no customizations are run. Pour activer les même processus de génération que ceux obtenus avec l’intégration continue, ajoutez ceci aux paramètres de votre application :To enable the same build processes that you get with continuous integration, add the following to your application settings:

SCM_DO_BUILD_DURING_DEPLOYMENT=true 

Quand vous utilisez le déploiement par envoi (push) de fichier .zip, ce paramètre est false par défaut.When you use .zip push deployment, this setting is false by default. La valeur par défaut est true pour les déploiements par intégration continue.The default is true for continuous integration deployments. Quand la valeur est true, vos paramètres de déploiement sont utilisés pendant le déploiement.When set to true, your deployment-related settings are used during deployment. Vous pouvez configurer ces paramètres comme paramètres de l’application ou dans un fichier de configuration .deployment qui se trouve dans la racine de votre fichier .zip.You can configure these settings either as app settings or in a .deployment configuration file that's located in the root of your .zip file. Pour plus d’informations, consultez Repository and deployment-related settings dans les informations de référence sur le déploiement.For more information, see Repository and deployment-related settings in the deployment reference.

Étapes suivantesNext steps