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 Azure est généralement déterminée par la manière dont vous publiez votre application. La méthode de déploiement appropriée est déterminée par les besoins spécifiques et le stade 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. Lorsque 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 comprend une validation et des tests supplémentaires.
Le tableau suivant décrit les méthodes de déploiement disponibles pour votre projet Azure Functions.
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 ponctuels. Les déploiements sont gérés localement par les outils. |
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 |
Les pipelines de production et Azure qui incluent une validation, des tests et d’autres actions supplémentaires sont exécutés dans le cadre d’un déploiement automatisé. Les déploiements sont gérés par le pipeline. |
Bien que des déploiements Azure Functions spécifiques utilisent la meilleure technologie en fonction de leur contexte, la plupart des méthodes de déploiement sont basées sur le déploiement zip.
Disponibilité des technologies de déploiement
Azure Functions prend en charge le développement local multiplateforme ainsi que l’hébergement sur Windows et Linux. Trois plans d’hébergement sont actuellement disponibles :
Chaque plan a des comportements différents. Les technologies de déploiement ne sont pas toutes disponibles pour chaque environnement d’exécution d’Azure Functions. Le graphique suivant indique les technologies de déploiement prises en charge pour chaque combinaison de système d'exploitation et de plan d'hébergement :
Technologie de déploiement | Consommation Windows | Windows Premium | Dédié (Windows) | Consommation Linux | Linux Premium | Dédié (Linux) |
---|---|---|---|---|---|---|
URL du package externe1 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Zip Deploy | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
Conteneur Docker | ✔ | ✔ | ||||
Web Deploy | ✔ | ✔ | ✔ | |||
Contrôle de code source | ✔ | ✔ | ✔ | ✔ | ✔ | |
Git local1 | ✔ | ✔ | ✔ | ✔ | ✔ | |
Synchronisation cloud1 | ✔ | ✔ | ✔ | ✔ | ✔ | |
FTP1 | ✔ | ✔ | ✔ | ✔ | ✔ | |
Modification dans le portail | ✔ | ✔ | ✔ | ✔2 | ✔2 |
1 Cette technologie de déploiement nécessite une synchronisation manuelle des déclencheurs. 2 La modification dans le portail est activée uniquement pour les déclencheurs HTTP et de minuteur quand Azure Functions est exécuté sur Linux avec des plans Premium et dédié.
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. Quand vous déployez des mises à jour en référençant une URL de package externe, un Git local, une synchronisation cloud ou FTP, vous devez synchroniser manuellement les déclencheurs. 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 lahttps://{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.
Lorsque vous déployez à l’aide d’une URL de package externe et que le contenu du package change, mais que l’URL elle-même ne change pas, vous devez redémarrer manuellement votre application de fonction pour synchroniser entièrement vos mises à jour.
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. Les builds distantes ne sont pas exécutées quand une application a été précédemment configurée en mode Exécuter à partir du package. Pour savoir comment utiliser la build distante, accédez à Zip Deploy.
Notes
Si vous rencontrez des problèmes avec la build distante, cela peut être dû au fait que votre application a été créée avant la mise à disposition de la fonctionnalité (1er août 2019). Essayez de créer une application de fonction ou d’exécuter az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME>
pour mettre à jour votre application de fonction. Cette commande peut nécessiter deux tentatives avant d’aboutir.
Build distante sur Windows
Toutes les applications de fonction s’exécutant sur Windows ont une petite application de gestion, le site SCM (ou 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.
Build distante sur Linux
Pour activer la build distante sur Linux, les paramètres d’application suivants doivent être définis :
ENABLE_ORYX_BUILD=true
SCM_DO_BUILD_DURING_DEPLOYMENT=true
Par défaut, Azure Functions Core Tools et l’extension Azure Functions pour Visual Studio Code effectuent des builds distantes lors du déploiement sur Linux. Pour cette raison, les deux outils créent automatiquement ces paramètres pour vous dans Azure.
Lorsque les applications sont créées à distance sur Linux, elles s’exécutent à partir du package de déploiement.
Plan de consommation
Les applications de fonction Linux qui s’exécutent dans le plan Consommation ne disposent pas de site SCM/Kudu, ce qui limite les options de déploiement. Toutefois, les applications de fonction sur Linux exécutées dans le plan Consommation prennent en charge les builds distantes.
Plans dédiés et Premium
Les applications de fonction qui s’exécutent sur Linux dans le plan dédié (App service) et le plan Premium disposent également d’un site SCM/Kudu limité.
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. Le partage de contenu Azure Files est généralement utilisé s’il est configuré. Toutefois, certaines méthodes stockent plutôt la charge utile dans le magasin d’objets blob associé à la connexion AzureWebJobsStorage
. Consultez les informations détaillées figurant 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 à 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). Si vous mettez à jour le fichier de package référencé par une application de fonction, vous devez synchroniser manuellement les déclencheurs pour indiquer à Azure que votre application a été modifiée. 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 manuellement.
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é parAzureWebJobsStorage
.
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 valeur1
. 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 pour créer un fichier Dockerfile pour votre projet que vous utilisez pour créer une application de fonction conteneurisée. Vous pouvez utiliser le conteneur dans les déploiements suivants :
- Déployez sur les ressources Azure Functions que vous créez dans le Portail Azure. Pour Publier, sélectionnez Image Docker, puis configurez le conteneur. Entrez l’emplacement d’hébergement de l’image. Nécessite un plan Premium ou un plan d’hébergement dédié (App Service).
- Déployez sur les ressources Azure Functions que vous créez à partir de la ligne de commande. Nécessite un plan Premium ou dédié (App Service). Pour savoir comment procéder, consultez Créer votre première fonction Azure Functions conteneurisée.
- Déployer sur Azure Container Apps (préversion). Pour savoir comment procéder, consultez Créer votre première fonction Azure Functions conteneurisée sur Azure Container Apps.
- Déployer sur Azure Arc (préversion). Pour savoir comment procéder, consultez Créer votre première fonction Azure Functions conteneurisée sur Azure Arc (préversion).
- Déployer sur un cluster Kubernetes. Vous pouvez déployer sur un cluster à l’aide d’Azure Functions Core Tools. Utilisez la commande
func kubernetes deploy
.
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.
Web Deploy (MSDeploy)
Web Deploy crée un package et déploie vos applications Windows sur n’importe quel serveur IIS, notamment vos applications de fonction qui s’exécutent sur Windows dans Azure.
Comment l’utiliser ? Utilisez Visual Studio Tools pour Azure Functions. Décochez la case Exécuter à partir du fichier de package (recommandé) .
Vous pouvez aussi télécharger Web Deploy 3.6 et appeler directement.
Quand l’utiliser ? Web Deploy est pris en charge et ne pose aucun problème, mais la technologie privilégiée est Zip Deploy avec l’option Exécuter à partir du package activée. Pour en savoir plus, consultez le guide de développement Visual Studio.
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.
Contrôle de code source
Utilisez le contrôle de code source pour connecter votre application de fonction à un dépôt git. Une mise à jour du code dans ce dépôt déclenche le déploiement. Pour plus d’informations, consultez le Wiki Kudu.
Comment l’utiliser ? Utilisez le Centre de déploiement dans la section Functions du portail pour configurer la publication à partir du contrôle de code source. 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.
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 ? En général, nous vous recommandons d’utiliser une méthode de déploiement différente. Si vous publiez à partir d’un Git local, vous devez synchroniser manuellement les déclencheurs.
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.
Synchronisation cloud
Utilisez la synchronisation cloud pour synchroniser votre contenu sur Dropbox et OneDrive avec Azure Functions.
Comment l’utiliser ? Suivez les instructions fournies dans Synchroniser le contenu à partir d’un dossier cloud.
Quand l’utiliser ? En général, nous vous recommandons d’utiliser les autres méthodes de déploiement. Si vous publiez avec la synchronisation cloud, vous devez synchroniser manuellement les déclencheurs.
Emplacement de stockage du contenu de l’application : le contenu de l’application se trouve dans le magasin cloud. Toutefois, une copie locale est stockée 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.
FTP
Vous pouvez utiliser FTP pour transférer les fichiers directement vers Azure Functions.
Comment l’utiliser ? Suivez les instructions dans Déployer du contenu avec FTP/S.
Quand l’utiliser ? En général, nous vous recommandons d’utiliser les autres méthodes de déploiement. Si vous publiez avec FTP, vous devez synchroniser manuellement les déclencheurs.
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 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 (commeWEBSITE_RUN_FROM_PACKAGE
).
Quand l’utiliser ? Le portail est un excellent moyen de vous familiariser avec Azure Functions. Toutefois, pour un travail de développement plus complexe, nous vous recommandons 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 langages qui prennent en charge la modification dans le portail :
Langage | Consommation Windows | Windows Premium | Dédié (Windows) | Consommation Linux | Linux Premium | Dédié (Linux) |
---|---|---|---|---|---|---|
C# | ||||||
Script C# | ✔ | ✔ | ✔ | ✔* | ✔* | |
F# | ||||||
Java | ||||||
JavaScript (Node.js) | ✔ | ✔ | ✔ | ✔* | ✔* | |
Python | ||||||
PowerShell | ✔ | ✔ | ✔ | |||
TypeScript (Node.js) |
* La modification dans le portail est activée uniquement pour les déclencheurs HTTP et de minuteur quand Azure Functions est exécuté sur Linux avec des plans Premium et dédié.
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 apprendre à écrire des fonctions sans état et des fonctions 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. 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 :