Partage via


Technologies de déploiement dans Azure Functions

Vous pouvez utiliser plusieurs technologies différentes pour déployer votre code de 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 complète des informations clés et détaillées 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 dans 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 déployer 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 Azure CLI
Visual Studio Code publier
• publication dans Visual Studio
Publication Core Tools
Déploiements pendant le développement et autres déploiements improvisés. Déploiement de votre code à la demande à l’aide d’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. La plateforme App Service (Kudu) gère les déploiements.
Pipelines externes Azure Pipelines
GitHub Actions
Pipelines de production qui incluent la validation, le test et d’autres actions qui doivent s’exécuter dans le cadre d’un déploiement automatisé. Le pipeline gère les déploiements.

Utilisez la meilleure technologie pour votre 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 offre cinq options pour l’hébergement de vos applications de fonction :

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 flexible Consommation Premium élastique Dédié Applications de conteneur
Un déploiement
Déployer zip
URL du package externe1
Conteneur Docker Linux uniquement Linux uniquement Linux uniquement
Contrôle de code source Windows uniquement
Git local1 Windows uniquement
FTPS1 Windows uniquement
Édition 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 toujours synchroniser manuellement les déclencheurs lors de l’utilisation de ces options de déploiement :

Vous pouvez synchroniser manuellement les déclencheurs de l’une des manières suivantes :

  • Redémarrez votre application de fonction dans le portail Azure. L’hôte Functions lance une synchronisation des déclencheurs en arrière-plan après le démarrage de l’application.

  • Utilisez la commande az rest pour envoyer une requête HTTP POST qui appelle l’API syncfunctiontriggers, comme dans cet exemple :

    az rest --method post --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Web/sites/<APP_NAME>/syncfunctiontriggers?api-version=2016-08-01
    

Gardez ces considérations à l’esprit pour l’opération de déclenchement de synchronisation :

  • Vous devez redémarrer manuellement votre application de fonction chaque fois que vous déployez une version mise à jour du package de déploiement à l’aide de la même URL de package externe.
  • Pour les applications s’exécutant dans un plan Consommation ou Elastic Premium, vous devez également synchroniser manuellement les déclencheurs dans les scénarios suivants :
    • Lorsque les déploiements utilisent une URL de package externe avec un déploiement basé sur Resource Manager à l’aide de modèles ARM ou de fichiers Bicep ou Terraform.
    • Lorsque vous mettez à jour le package de déploiement sur place en utilisant la même URL de package externe.
  • Lorsque vous ajoutez des restrictions réseau à une application de fonction existante, vous devez garantir la connectivité au compte de stockage hôte par défaut défini dans le AzureWebJobsStorage paramètre d’application. Pour plus d’informations, consultez Comment utiliser un compte de stockage sécurisé avec Azure Functions.

Build distante

Vous pouvez demander Azure Functions pour effectuer une build distante de votre projet de code pendant le déploiement. Dans ces scénarios, demandez une build distante plutôt que de le faire localement :

  • Vous déployez une application sur une application de fonction Linux que vous avez développée sur un ordinateur Windows. C'est souvent le cas pour le développement d'applications Python. Vous pouvez rencontrer des bibliothèques incorrectes lorsque vous générez le package de déploiement localement sur Windows.
  • Votre projet a des dépendances vis-à-vis d’un index de package personnalisé.
  • Vous voulez réduire la taille de votre package de déploiement.

La façon dont vous demandez une build distante dépend de l’exécution de votre application dans Azure 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 de la logique de déploiement et de génération pour Azure Functions.

Lorsque vous déployez une application sur Windows, le processus de déploiement exécute des commandes spécifiques au langage, comme dotnet restore (C#) ou npm install (JavaScript).

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 exécutées sur Linux dans un abonnement Premium ou dans un abonnement Dedicated (App Service) disposent bien d'un site scm (Kudu), mais celui-ci est limité par rapport à Windows.
  • Les builds distantes ne se produisent pas lorsqu'une application utilise run-from-package. Pour savoir comment utiliser un build distante dans ces cas, consultez Zip Deploy.
  • Vous pouvez rencontrer des problèmes avec la génération à distance 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

Les méthodes de déploiement basées sur les packages stockent le package dans le compte de stockage associé à l’application de fonction, que le paramètre AzureWebJobsStorage définit. Quand elles sont disponibles, les applications de plan Consommation et Elastic Premium essaient d’utiliser le partage de contenu Azure Files à partir de ce compte, mais vous pouvez également conserver le package dans un autre emplacement. Les applications du plan Flex Consumption utilisent un conteneur de stockage dans un compte de stockage par défaut, sauf si vous configurez un autre compte de stockage à utiliser pour le déploiement. Pour plus d’informations, consultez, passez en revue les informations détaillées figurant dans Emplacement de stockage du contenu de l’application pour 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.

Réseaux virtuels sécurisés

Lorsque votre application de fonction a des points de terminaison privés activés et que l’accès au réseau public est désactivé, le scm site de déploiement (Kudu) n’est pas accessible publiquement. Lorsque le compte de stockage utilisé par l’application de fonction est également sécurisé derrière des points de terminaison privés, les technologies qui doivent accéder au stockage sont également bloquées. En raison de ces restrictions, les technologies de déploiement décrites dans cet article ne peuvent pas atteindre une application de fonction entièrement sécurisée par le réseau à partir de l’extérieur du réseau virtuel.

Pour déployer du code sur une application de fonction sécurisée par le réseau, vos outils de déploiement doivent avoir une connectivité au réseau virtuel. Vous pouvez obtenir cette connectivité de ces manières :

Pour plus d’informations sur la configuration de votre application de fonction dans un réseau virtuel, consultez How to configure Azure Functions with a virtual network.

Description des technologies de déploiement

Les méthodes de déploiement suivantes sont disponibles dans Azure Functions. Pour déterminer les technologies prises en charge par chaque plan d’hébergement, reportez-vous à la table de disponibilité des technologies de déploiement .

OneDeploy

OneDeploy est la seule technologie de déploiement prise en charge pour les applications sur un plan Flex Consumption. Le résultat final est un package .zip prêt à l’exécution sur lequel votre application de fonction s’exécute.

Comment l'utiliser : Déployez en utilisant la fonction de publication de Visual Studio Code, ou à partir de la ligne de commande en utilisant Azure Functions Core Tools ou Azure CLI. Notre Azure Dev Ops Task et GitHub Action utilisent de la même manière un déploiement unique lorsqu'ils détectent qu'une application consommation flexible (Flex Consumption) est en cours de déploiement.

Lorsque vous créez une application Flex Consumption, vous devez spécifier un conteneur de stockage de déploiement (blob) ainsi qu’une méthode d’authentification pour celle-ci. Par défaut, le même compte de stockage que la connexion AzureWebJobsStorage est utilisé, avec un chaîne de connexion comme méthode d’authentification. Par conséquent, vos paramètres de déploiement sont configurés lors de la création de l’application sans que des paramètres d’application soient nécessaires.

Quand l’utiliser : One deploy est la seule technologie de déploiement disponible pour les applications de fonctions fonctionnant dans un plan Flex Consumption.

Où le contenu de l’application est stocké : quand vous créez une application de fonction Consommation flexible, vous spécifiez un conteneur de stockage de déploiement. Ce conteneur BLOB est l'emplacement où vos outils téléchargent le contenu de l'application que vous avez déployée. Pour modifier l’emplacement, vous pouvez consulter le panneau Paramètres de déploiement dans le portail Azure ou utiliser le Azure CLI.

Conseil / Astuce

Un outil de diagnostic Flex Consumption Deployment est disponible dans le portail Azure. Ouvrez votre application Flex Consumption, sélectionnez Diagnostiquer et résoudre les problèmes, puis recherchez Flex Consumption Deployment. Cet outil affiche des informations détaillées sur vos déploiements, notamment l’historique de déploiement, l’état du package et les recommandations de résolution des problèmes.

Zip Deploy

ZipDeploy est la technologie de déploiement par défaut et qui est recommandée pour les applications de fonction sur les plans Consommation, Élastique Premium et App Service (dédié). Le résultat final est un package .zip prêt à l’exécution sur lequel votre application de fonction s’exécute. Il diffère de l’URL de package externe dans laquelle la plateforme est responsable de la création à distance et du stockage du contenu de votre application.

How to use it : Deploy by using your favorite client tool : Visual Studio Code, Visual Studio ou à partir de la ligne de commande à l’aide de Azure Functions Core Tools ou du Azure CLI. Notre tâche Azure Dev Ops et GitHub Action tire également parti du déploiement zip de manière similaire.

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 génère des temps de chargement plus rapides pour vos applications, et il s'agit de la valeur par défaut pour VS Code, Visual Studio et le Azure CLI.

When to use it : Zip deploy est la technologie de déploiement par défaut et recommandée pour les applications de fonction sur les plans Windows Consumption, Windows et Linux Elastic Premium, et Windows et Linux App Service (dédié).

Où le contenu de l'application est-il stocké : Le contenu de l'application à partir d'un déploiement zip est par défaut stocké sur le système de fichiers, qu'Azure peut soutenir avec Azure Files à partir du compte de stockage que vous spécifiez lors de la création de l'application fonction. Dans un environnement Linux Consumption, le contenu de l'application est conservé sur un blob dans le compte de stockage spécifié par le paramètre d'application AzureWebJobsStorage, et le paramètre d'application WEBSITE_RUN_FROM_PACKAGE prend la valeur de l'URL du blob.

URL du package externe

URL de package externe est une option si vous voulez contrôler manuellement la façon dont les déploiements sont effectués. Vous avez la responsabilité du chargement d’un package .zip prêt à l’exécution contenant votre contenu d’application généré dans le stockage d’objets blob et du référencement de cette URL externe en tant que paramètre d’application sur votre application de fonction. Chaque fois que votre application redémarre, elle extrait le package, le monte et 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 d’objet blob pointant vers l’emplacement du package spécifique que votre application doit exécuter. Vous pouvez ajouter des paramètres dans le portail ou en utilisant l’Azure CLI.

Si vous utilisez Stockage Blob Azure, votre application fonction peut accéder au conteneur à l’aide d’une connexion basée sur une identité managée ou avec une signature d’accès partagé (SAS). L’option que vous choisissez affecte le type d’URL que vous utilisez comme valeur pour WEBSITE_RUN_FROM_PACKAGE. Une identité managée est recommandée pour la sécurité globale, car les jetons SAP expirent et doivent être gérés manuellement.

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. Reportez-vous à notre guide pratique sur la configuration de cette technologie de déploiement.

Quand l’utiliser : URL de package externe est la seule méthode de déploiement prise en charge pour les applications s’exécutant sur le plan Consommation Linux quand vous ne voulez pas qu’une build distante se produise. Cette méthode est également la technologie de déploiement recommandée lorsque vous créez votre application sans Azure Files. Pour les applications évolutives s’exécutant sur Linux, vous devez envisager à la place l’hébergement du plan Consommation flexible.

Où le contenu de l’application est stocké : cous êtes responsable du chargement du contenu de votre application dans le stockage d’objets blob. Vous êtes autorisé à utiliser n'importe quel compte de stockage blob, bien qu’Stockage Blob Azure soit recommandé.

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 vers un plan Premium ou Dédié dans Azure Functions ou un autre hôte de conteneur. Utilisez les Azure Functions Core Tools pour créer un fichier Dockerfile personnalisé 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 :

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 où le contenu de l’application est stocké : Vous stockez le contenu de l’application 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. Lorsque vous activez le contrôle de code source, 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. En règle générale, le contrôle de source est activé sur un emplacement de staging, qui peut ensuite être échangé vers la production après validation des mises à jour issues du référentiel. Pour plus d'informations, veuillez consulter la section emplacements de déploiement Azure Functions.

Emplacement où le contenu de l’application est stocké : Le système de contrôle de code source stocke le contenu de l’application. Le système de fichiers de l’application conserve un formulaire de contenu d’application cloné et compilé localement, pouvant être sauvegardé par Azure Files à partir du compte de stockage défini lors de la création de l’application de fonction.

Git local

Utilisez Git local pour envoyer du code à partir de votre ordinateur local pour 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 les risques d’erreurs, évitez 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.

Partout le contenu de l’application est stocké : 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 que vous spécifiez lors de la création de l’application de fonction.

FTP/S

Vous pouvez utiliser FTP/S pour transférer directement des fichiers vers Azure Functions, mais n'utilisez pas cette méthode de déploiement. Lorsque vous ne prévoyez pas d’utiliser FTP, désactivez-le. Si vous choisissez d’utiliser FTP, appliquez FTPS. Pour apprendre à le configurer dans le portail Azure, consultez Appliquer FTPS.

Comment l’utiliser : Suivez les instructions des paramètres de déploiement FTPS pour obtenir l’URL et les informations d’identification que vous pouvez utiliser pour effectuer le déploiement sur votre application de fonction à l’aide de FTPS.

Quand l’utiliser : Pour réduire les risques d’erreurs, évitez 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 où le contenu de l’application est stocké : Le contenu de l’application est stocké sur le système de fichiers. Les déploiements FTP/FTPS échouent lorsque le système de fichiers de votre application est soutenu par Azure Files dans le compte de stockage hôte par défaut. FTP/FTPS échoue avec Azure Files en tant que stockage monté en raison des limitations de FTP.

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 modifier vos fonctions dans le portail Azure, vous devez créer vos 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 dans lequel vous pouvez modifier vos fichiers dans le portail Azure, vous pouvez réactiver manuellement le mode d’édition en Read/Write et supprimer tous les paramètres d’application liés au déploiement (comme WEBSITE_RUN_FROM_PACKAGE).

Quand l'utiliser : Le portail est un bon moyen de commencer avec Azure Functions. En raison des limitations de développement dans le portail Azure, vous devez utiliser l’un des outils clients suivants pour un travail de développement plus avancé :

Partout le contenu de l’application est stocké : 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 que vous spécifiez lors de la création de l’application de fonction.

Comportements de déploiement

Lorsque vous déployez des mises à jour dans le code de votre application de fonction, le comportement de déploiement dépend de votre plan d’hébergement :

Plans Consommation, Elastic Premium et Dédié : actuellement, les fonctions en cours d’exécution sont arrêtées lorsque le nouveau code est déployé. Une fois le déploiement terminé, le nouveau code est chargé pour commencer à traiter les requêtes. Ce comportement d’arrêt forcé est appelé stratégie de recréation. Pour des déploiements quasiment sans temps d’arrêt sur les plans Consommation, Elastic Premium et Dedicated, utilisez des emplacements de déploiement.

Passez en revue Améliorez les performances et la fiabilité d'Azure Functions pour apprendre à écrire des fonctions sans état et défensives.

Plan Flex Consumption : Le comportement par défaut utilise également la stratégie de recréation, mettant fin aux fonctions en cours d’exécution pendant le déploiement. Toutefois, Flex Consumption prend en charge de manière unique deux stratégies de mise à jour de site différentes. Vous pouvez configurer les mises à jour propagées pour les déploiements sans temps d’arrêt.

Emplacements de déploiement

Lorsque vous déployez votre application de fonction sur Azure, vous pouvez le déployer sur un emplacement de déploiement distinct au lieu d’être directement en 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 Azure Functions Emplacements de déploiement.

Étapes suivantes

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