Technologies de déploiement dans Azure Functions

Vous pouvez utiliser plusieurs technologies différentes pour déployer le code de votre projet Azure Functions sur Azure. Cet article fournit une vue d’ensemble des méthodes de déploiement disponibles et des recommandations sur la meilleure méthode à utiliser dans différents scénarios. Il fournit également une liste exhaustive et des détails clés sur les technologies de déploiement sous-jacentes.

Méthodes de déploiement

La technologie de déploiement que vous utilisez pour publier du code sur votre application de fonction dans Azure dépend de vos besoins spécifiques et du point dans le cycle de développement. Par exemple, pendant le développement et les tests, vous pouvez procéder à un déploiement directement à partir de votre outil de développement, tel que Visual Studio Code. Quand votre application est en production, vous êtes plus susceptible de publier en continu à partir du contrôle de code source ou en utilisant un pipeline de publication automatisé, qui peut comprendre une validation et des tests.

Le tableau suivant décrit les méthodes de déploiement disponibles pour votre projet de code.

Type de déploiement Méthodes Idéal pour…
Outils Publication Visual Studio Code
Publication Visual Studio
Publication Core Tools
Déploiements pendant le développement et autres déploiements improvisés. Déploiement de votre code à la demande en utilisant des outils de développement locaux.
Géré par App Service Centre de déploiement (CI/CD)
Déploiements de conteneur
Déploiement continu (CI/CD) à partir du contrôle de code source ou d’un registre de conteneurs. Les déploiements sont gérés par la plateforme App Service (Kudu).
Pipelines externes Azure Pipelines
GitHub Actions
Pipelines de production qui comprennent une validation, des tests et d’autres actions devant être exécutées dans le cadre d’un déploiement automatisé. Les déploiements sont gérés par le pipeline.

Les déploiements spécifiques doivent utiliser la meilleure technologie pour chaque scénario spécifique. La plupart des méthodes de déploiement sont basées sur un déploiement zip, qui est recommandé pour le déploiement.

Disponibilité des technologies de déploiement

La méthode de déploiement dépend également du plan d’hébergement et du système d’exploitation sur lesquels vous exécutez votre application de fonction.
Actuellement, Functions propose trois plans d’hébergement :

Chaque plan a des comportements différents. Les technologies de déploiement ne sont pas toutes disponibles pour chaque plan d’hébergement et système d’exploitation. Ce graphique fournit des informations sur les technologies de déploiement prises en charge :

Technologie de déploiement Consommation Windows Windows Premium Dédié (Windows) Consommation Linux Linux Premium Dédié (Linux)
URL du package externe1
Déployer zip
Conteneur Docker
Contrôle de code source
Git local1
FTPS1
Modification dans le portail2

1 Les technologies de déploiement qui nécessitent la synchronisation manuelle des déclencheurs ne sont pas recommandées.
2 L'édition dans le portail est désactivée lorsque le code est déployé dans votre application de fonction depuis l'extérieur du portail. Pour plus d’informations, y compris les détails de la prise en charge linguistique pour la modification dans le portail, consultez Détails de la prise en charge de la langue.

Concepts clés

Certains concepts clés sont essentiels pour comprendre le fonctionnement des déploiements dans Azure Functions.

Synchronisation des déclencheurs

Quand vous changez l’un de vos déclencheurs, l’infrastructure Functions doit en être informée. La synchronisation s’effectue automatiquement pour la plupart des technologies de déploiement. Toutefois, dans certains cas, vous devez synchroniser manuellement les déclencheurs.

Vous devez synchroniser manuellement les déclencheurs lors de l’utilisation de ces options de déploiement :

Choisissez l’une de ces trois méthodes de synchronisation des déclencheurs :

  • Redémarrez votre application de fonction dans le portail Azure.
  • Envoyez une requête HTTP POST sur https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> en utilisant la https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>.
  • Envoyez une requête HTTP POST sur https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Remplacez les espaces réservés par votre ID d’abonnement, le nom de votre groupe de ressources et le nom de votre application de fonction. Cette demande nécessite un jeton d’accès dans l’en-tête de demande Authorization.

Lorsque vous déployez à l’aide d’une URL de package externe, vous devez redémarrer manuellement votre application de fonction pour synchroniser entièrement votre déploiement lorsque le package change sans modifier l’URL, ce qui inclut le déploiement initial.

Lorsque votre application de fonction est sécurisée par des restrictions réseau entrantes, le point de terminaison de déclencheur de synchronisation ne peut être appelé qu’à partir d’un client à l’intérieur du réseau virtuel.

Build distante

Azure Functions peut créer automatiquement les builds sur le code qu’il reçoit après les déploiements zip. Ces builds se comportent de façon légèrement différente selon que votre application s’exécute sur Windows ou Linux.

Toutes les applications de fonction exécutées sur Windows ont une petite application de gestion, le site scm fourni par Kudu. Ce site gère une grande partie du déploiement et de la logique de build pour Azure Functions.

Quand une application est déployée sur Windows, les commandes spécifiques au langage, comme dotnet restore (C#) ou npm install (JavaScript), sont exécutées.

Les considérations suivantes s’appliquent lors de l’utilisation de builds distantes pendant un déploiement :

  • Les builds distantes sont prises en charge pour les applications de fonction s’exécutant sur Linux dans le plan Consommation. Toutefois, les options de déploiement sont limitées pour ces applications, car elles n’ont pas de site scm (Kudu).
  • Les applications de fonction s’exécutant sur Linux plan Premium ou dans un plan dédié (App Service) ont un site scm (Kudu), mais elles sont limitées par rapport à Windows.
  • Les builds distantes ne sont pas effectuées lorsqu’une application utilise d’exécution à partir d’un package. Pour savoir comment utiliser un build distante dans ces cas, consultez Zip Deploy.
  • Il est possible que vous rencontriez des problèmes avec la build distante lorsque votre application a été créée avant la mise à disposition de la fonctionnalité (1er août 2019). Pour des applications plus anciennes, créez une application de fonction ou exécutez az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> pour mettre à jour votre application de fonction. Cette commande peut nécessiter deux tentatives avant d’aboutir.

Stockage de contenu de l’application

Plusieurs méthodes de déploiement stockent la charge utile de l’application déployée ou créée sur le compte de stockage associé à l’application de fonction. Functions tente d’utiliser le partage de contenu Azure Files quand il est configuré, mais certaines méthodes stockent plutôt la charge utile dans l’instance de stockage blob associée à la connexion AzureWebJobsStorage. Consultez les détails dans les paragraphes Emplacement de stockage du contenu de l’application de chaque technologie de déploiement abordée dans la section suivante.

Important

Le compte de stockage permet de stocker les données importantes de l’application, dont parfois le code proprement dit de l’application. Vous devez limiter l’accès des autres applications et utilisateurs au compte de stockage.

Description des technologies de déploiement

Les méthodes de déploiement décrites ci-après sont disponibles dans Azure Functions.

URL du package externe

Vous pouvez utiliser une URL de package externe pour référencer un fichier de package (.zip) distant qui contient votre application de fonction. Le fichier est téléchargé depuis l’URL fournie et l’application s’exécute en mode Exécuter à partir du package.

Comment l’utiliser ? Ajoutez WEBSITE_RUN_FROM_PACKAGE à vos paramètres d’application. La valeur de ce paramètre doit être une URL, correspondant à l’emplacement du fichier de package à exécuter. Vous pouvez ajouter des paramètres soit dans le portail, soit à l’aide d’Azure CLI.

Si vous employez le Stockage Blob Azure, utilisez un conteneur privé associé à une signature d’accès partagé pour permettre à Functions d’accéder au package. Chaque fois que l’application redémarre, elle extrait une copie du contenu. Votre référence doit être valide pendant la durée de vie de l’application.

Quand l’utiliser ? Si l’utilisateur ne souhaite pas qu’une build distante soit effectuée, l’URL de package externe est la seule méthode de déploiement prise en charge quand Azure Functions est exécuté sur Linux dans le plan Consommation (préversion). Chaque fois que vous déployez le fichier de package référencé par une application de fonction, vous devez synchroniser manuellement les déclencheurs, y compris le déploiement initial. Lorsque vous modifiez le contenu du fichier de package et non l’URL elle-même, vous devez également redémarrer votre application de fonction pour synchroniser les déclencheurs.

Emplacement de stockage du contenu de l’application : le contenu de l’application est stocké à l’URL spécifiée. Il peut s’agir d’objets blob Azure, éventuellement dans le compte de stockage spécifié par la connexion AzureWebJobsStorage. Par défaut, certains outils clients peuvent être déployés sur un objet blob dans ce compte. Par exemple, pour les applications de consommation Linux, Azure CLI tente de se déployer via un package stocké dans un objet blob sur le compte spécifié par AzureWebJobsStorage.

Zip Deploy

Utilisez Zip Deploy pour envoyer (push) un fichier .zip contenant votre application de fonction sur Azure. Si vous le souhaitez, vous pouvez configurer votre application pour qu’elle utilise le mode Exécuter à partir du package ou spécifier qu’une build distante est effectuée.

Comment l’utiliser ? Effectuez le déploiement à l’aide de votre outil client habituel : Visual Studio Code, Visual Studio ou à partir de la ligne de commande utilisant Azure Functions Core Tools. Par défaut, ces outils utilisent le déploiement zip et exécutent à partir du package. Core Tools et l’extension Visual Studio Code activent la build distante lors du déploiement sur Linux. Pour déployer manuellement un fichier .zip sur votre application de fonction, suivez les instructions dans Déployer à partir d’un fichier .zip ou d’une URL.

Quand vous effectuez le déploiement à l’aide de Zip Deploy, vous pouvez définir votre application pour qu’elle s’exécute en mode Exécuter à partir du package. Pour utiliser le mode Exécuter à partir du package, affectez au paramètre d’application WEBSITE_RUN_FROM_PACKAGE la valeur 1. Nous vous recommandons le déploiement zip. Il accélère les temps de chargement de vos applications, et il s’agit de la méthode par défaut pour VS Code, Visual Studio et Azure CLI.

Quand l’utiliser ? Zip Deploy est la technologie de déploiement recommandée pour Azure Functions.

Emplacement de stockage du contenu de l’application : par défaut, le contenu de l’application d’un déploiement zip est stocké sur le système de fichiers, qui peut être sauvegardé par Azure Files à partir du compte de stockage spécifié lors de la création de l’application de fonction. Dans la consommation Linux, le contenu de l’application est conservé sur un objet blob dans le compte de stockage spécifié par la connexion AzureWebJobsStorage.

Conteneur Docker

Vous pouvez déployer une application de fonction s’exécutant dans un conteneur Linux.

Comment l’utiliser :créez vos fonctions dans un conteneur Linux, puis déployez le conteneur sur un plan Premium ou Dédié dans Azure Functions ou un autre hôte de conteneur. Utilisez Azure Functions Core Tools afin de créer un fichier Dockerfile personnalisé pour votre projet que vous utilisez pour la création une application de fonction conteneurisée. Vous pouvez utiliser le conteneur dans les déploiements suivants :

Quand l’utiliser ? Utilisez l’option Conteneur Docker si vous voulez contrôler davantage l’environnement Linux dans lequel s’exécute votre application de fonction, et où le conteneur est hébergé. Cette technologie de déploiement est disponible uniquement quand Azure Functions est exécuté sur Linux.

Emplacement de stockage du contenu de l’application : le contenu de l’application est stocké dans le registre de conteneurs spécifié dans le cadre de l’image.

Contrôle de code source

Vous pouvez activer l’intégration continue entre votre application de fonction et un référentiel de code source. Avec le contrôle de code source activé, une mise à jour du code dans le référentiel source connecté déclenche le déploiement du code le plus récent à partir du référentiel. Pour plus d’informations, consultez le déploiement continu pour Azure Functions.

Comment l’utiliser : Le moyen le plus simple de configurer la publication à partir du contrôle de code source provient du Centre de déploiement dans la zone Functions du portail. Pour plus d’informations, consultez Déploiement continu pour Azure Functions.

Quand l’utiliser ? L’utilisation du contrôle de code source est la méthode recommandée pour les équipes qui travaillent en collaboration sur leurs applications de fonction. Il s’agit d’une bonne option si vous avez des pipelines de déploiement plus complexes. Le contrôle de code source est généralement activé sur un emplacement intermédiaire, qui peut être échangé en production après la validation des mises à jour à partir du référentiel. Pour plus d’informations, consultez l’article Emplacements de déploiement Azure Functions.

Emplacement de stockage du contenu de l’application : le contenu de l’application se trouve dans le système de contrôle de code source. Toutefois, un contenu d’application cloné et créé localement est stocké sur le système de fichiers de l’application, qui peut être sauvegardé par Azure Files à partir du compte de stockage spécifié lors de la création de l’application de fonction.

Git local

Vous pouvez utiliser Git local pour envoyer (push) le code de votre ordinateur local vers Azure Functions à l’aide de Git.

Comment l’utiliser ? Suivez les instructions dans Déploiement Git local vers Azure App Service.

Quand l’utiliser : pour réduire le risque d’erreurs, vous devez éviter d’utiliser des méthodes de déploiement qui nécessitent l’étape supplémentaire de synchronisation manuelle des déclencheurs. Utilisez un déploiement zip si possible.

Emplacement de stockage du contenu de l’application : le contenu de l’application est stocké sur le système de fichiers, qui peut être sauvegardé par Azure Files à partir du compte de stockage spécifié lors de la création de l’application de fonction.

FTP/S

Vous pouvez utiliser FTP/S pour transférer directement des fichiers à Azure Functions, bien que cette méthode de déploiement ne soit pas recommandée. Si vous n’avez pas l’intention d’utiliser FTP, vous devez le désactiver. Si vous choisissez d’utiliser le protocole FTP, vous devez renforcer les protocoles FTPS. Pour savoir comment procéder dans le portail Azure, consultez Appliquer FTPS.

Comment l’utiliser : suivez les instructions de Paramètres de déploiement FTPS pour obtenir l’URL et les informations d’identification que vous pouvez utiliser pour déployer votre application de fonction avec FTPS.

Quand l’utiliser : pour réduire le risque d’erreurs, vous devez éviter d’utiliser des méthodes de déploiement qui nécessitent l’étape supplémentaire de synchronisation manuelle des déclencheurs. Utilisez un déploiement zip si possible.

Emplacement de stockage du contenu de l’application : le contenu de l’application est stocké sur le système de fichiers, qui peut être sauvegardé par Azure Files à partir du compte de stockage spécifié lors de la création de l’application de fonction.

Modification dans le portail

Dans l’éditeur du portail, vous pouvez modifier directement les fichiers dans votre application de fonction (en effectuant le déploiement essentiellement dès que vous enregistrez vos modifications).

Comment l’utiliser ? Pour avoir la possibilité de modifier vos fonctions dans le portail Microsoft Azure, vous devez avoir créé les fonctions dans le portail. Pour garantir l’existence d’une seule source de confiance, l’utilisation d’une autre méthode de déploiement rend votre fonction accessible en lecture seule et empêche la poursuite de la modification dans le portail. Pour revenir à un état où vous pouvez modifier vos fichiers dans le portail Azure, vous pouvez rétablir manuellement le mode d’édition à Read/Write et supprimer tous les paramètres d’application relatifs au déploiement (comme WEBSITE_RUN_FROM_PACKAGE).

Quand l’utiliser ? Le portail est un excellent moyen de vous familiariser avec Azure Functions. Pour des travaux de développement plus avancés, nous vous recommandons d'utiliser l'un des outils clients suivants :

Emplacement de stockage du contenu de l’application : le contenu de l’application est stocké sur le système de fichiers, qui peut être sauvegardé par Azure Files à partir du compte de stockage spécifié lors de la création de l’application de fonction.

Le tableau suivant présente les systèmes d'exploitation et les langues qui prennent en charge l'édition dans le portail :

Langage Consommation Windows Windows Premium Dédié (Windows) Consommation Linux Linux Premium Dédié (Linux)
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 modification dans le portail n’est prise en charge que pour les fichiers de script C#, qui s’exécutent en cours avec l’hôte. Pour plus d’informations, consultez la référence du développeur Azure Functions script C# (.csx).
2 L'édition dans le portail n'est prise en charge que pour le modèle de programmation Python v1.

Comportements de déploiement

Lorsque vous déployez des mises à jour du code de vos applications de fonction, les fonctions en cours d’exécution sont arrêtées. Une fois le déploiement terminé, le nouveau code est chargé pour commencer à traiter les requêtes. Consultez Améliorer les performances et la fiabilité d’Azure Functions pour savoir comment écrire des fonctions sans état et défensives.

Si vous avez besoin de davantage de contrôle sur cette transition, vous devez utiliser des emplacements de déploiement.

Emplacements de déploiement

Quand vous déployez votre application de fonction sur Azure, vous pouvez choisir un autre emplacement de déploiement que directement l’emplacement de production. Le déploiement sur un emplacement de déploiement, puis l’échange en production après vérification est la méthode recommandée pour configurer déploiement continu.

La façon dont vous déployez sur un emplacement dépend de l’outil de déploiement spécifique que vous utilisez. Par exemple, lorsque vous utilisez Azure Functions Core Tools, vous incluez l’option--slot pour indiquer le nom d’un emplacement spécifique pour la commande func azure functionapp publish .

Pour plus d’informations sur les emplacements de déploiement, consultez la documentation sur les emplacements de déploiement Azure Functions.

Étapes suivantes

Lisez les articles suivants pour en savoir plus sur le déploiement de vos applications de fonction :