Exécuter vos fonctions à partir d’un fichier de package dans Azure
Dans Azure, vous pouvez exécuter vos fonctions directement dans un fichier de package de déploiement de votre application de fonction. L’autre option consiste à déployer vos fichiers dans le répertoire c:\home\site\wwwroot
(Windows) ou /home/site/wwwroot
(Linux) de votre application de fonction.
Cet article décrit les avantages que présente l’exécution de vos fonctions à partir d’un package. Il explique également comment activer cette fonctionnalité dans votre application de fonction.
Avantages de l’exécution à partir d’un fichier de package
L’exécution de fonctions à partir d’un fichier de package permet de :
- Réduction des risques de verrouillage lors de la copie de fichiers
- Déploiement possible sur une application de production (après redémarrage)
- Vérifier les fichiers en cours d’exécution dans votre application.
- Amélioration des performances des déploiements Azure Resource Manager
- Réduire les temps de démarrage à froid, en particulier pour les fonctions JavaScript avec des arborescences de package npm de grande taille.
Pour plus d’informations, lisez cette annonce.
Permettre aux fonctions de s’exécuter à partir d’un package
Les applications de fonction sur la Flex Consumption plan d’hébergement s’exécutent à partir d’un package par défaut. Aucune configuration particulière n'est nécessaire.
Pour permettre à votre application de fonction de s’exécuter à partir d’un package sur la consommation, l’Elastic Premium et les plans d’hébergement (App Service) dédiés, ajoutez un paramètre d’application WEBSITE_RUN_FROM_PACKAGE
à votre application de fonction. Le paramètre WEBSITE_RUN_FROM_PACKAGE
doit avoir l’une des valeurs suivantes :
Valeur | Description |
---|---|
1 |
Indique que l’application de fonction s’exécute à partir d’un fichier de package local déployé dans le dossier c:\home\data\SitePackages (Windows) ou /home/data/SitePackages (Linux) de votre application de fonction. |
<URL> |
Définit une URL qui est l’emplacement distant du fichier de package spécifique que vous souhaitez exécuter. Obligatoire pour les applications de fonction exécutées sur Linux dans un plan Consommation. |
Le tableau suivant indique les valeurs WEBSITE_RUN_FROM_PACKAGE
recommandées pour un déploiement sur un système d’exploitation et un plan d’hébergement spécifiques :
Plan d’hébergement | Windows | Linux |
---|---|---|
Consommation | 1 est fortement recommandé. |
Seul <URL> est pris en charge. |
Premium | 1 est recommandé. |
1 est recommandé. |
Dédié | 1 est recommandé. |
1 est recommandé. |
Considérations d’ordre général
- N’ajoutez pas le paramètre d’application
WEBSITE_RUN_FROM_PACKAGE
aux applications dans le plan Flex Consumption. - Le fichier de package doit être au format .zip. Les formats TAR et GZIP ne sont pas pris en charge.
- Le déploiement zip est recommandé.
- Lorsque vous déployez votre application de fonction sur Windows, vous devez définir
WEBSITE_RUN_FROM_PACKAGE
sur1
et effectuer la publication avec le déploiement zip. - Lorsque vous exécutez à partir d’un package, le dossier
wwwroot
est en lecture seule et vous recevez une erreur si vous écrivez des fichiers dans ce répertoire. Les fichiers sont également en lecture seule dans le portail Azure. - La taille maximale d’un fichier de package de déploiement est de 1 Go.
- Vous ne pouvez pas utiliser le cache local lors de l’exécution à partir d’un package de déploiement.
- Si votre projet doit utiliser une génération à distance, n’utilisez pas le paramètre d’application
WEBSITE_RUN_FROM_PACKAGE
. Ajoutez plutôt le paramètre d’application de personnalisation de déploiementSCM_DO_BUILD_DURING_DEPLOYMENT=true
. Pour Linux, ajoutez également le paramètreENABLE_ORYX_BUILD=true
. Pour en savoir plus, consultez Build à distance.
Remarque
Le paramètre d’application WEBSITE_RUN_FROM_PACKAGE
ne fonctionne pas avec MSDeploy, comme décrit dans MSDeploy VS. ZipDeploy. Vous recevrez une erreur lors du déploiement, comme ARM-MSDeploy Deploy Failed
. Pour résoudre cette erreur, modifiez /MSDeploy
en /ZipDeploy
.
Ajouter le paramètre WEBSITE_RUN_FROM_PACKAGE
Plusieurs méthodes sont possibles pour ajouter, mettre à jour et supprimer des paramètres d’une application de fonction :
Les changements apportés aux paramètres d’application de fonction nécessitent le redémarrage de votre application de fonction.
Création de l’archive zip
L’archive zip que vous déployez doit contenir tous les fichiers nécessaires pour exécuter votre application de fonction. Vous pouvez créer manuellement une archive zip à partir du contenu d’un dossier de projet Functions à l’aide de fonctionnalités de compression .zip intégrées ou d’outils tiers.
L’archive doit inclure le fichier host.json à la racine du dossier extrait. La pile de langues sélectionnée pour l’application de fonction crée des exigences supplémentaires :
Important
Pour les langages qui génèrent une sortie compilée pour le déploiement, veillez à compresser le contenu du dossier de sortie que vous envisagez de publier et non l’ensemble du dossier du projet. Lorsque Fonctions extrait le contenu de l’archive zip, le fichier host.json
doit être présent à la racine du package.
Utiliser WEBSITE_RUN_FROM_PACKAGE = 1
Cette section fournit des informations sur l’exécution de votre application de fonction à partir d’un fichier de package local.
Considérations relatives au déploiement à partir d’un package sur site
- L’utilisation d’un package sur site est l’option recommandée pour une exécution à partir du package de déploiement, sauf pour une exécution sur Linux hébergé dans un plan Consommation.
- Le déploiement zip est la méthode recommandée pour charger un package de déploiement sur votre site.
- Si vous n’utilisez pas le déploiement zip, assurez-vous que le dossier
c:\home\data\SitePackages
(Windows) ou/home/data/SitePackages
(Linux) contient un fichier nommépackagename.txt
. Ce fichier contient uniquement le nom, sans espace, du fichier de package dans ce dossier en cours d’exécution.
Intégration au déploiement zip
Le déploiement zip est une fonctionnalité d’Azure App Service qui vous permet de déployer votre projet d’application de fonction dans le répertoire wwwroot
. Le projet est empaqueté dans un fichier de déploiement zip. Les mêmes API peuvent être utilisées pour déployer votre package dans le dossier c:\home\data\SitePackages
(Windows) ou /home/data/SitePackages
(Linux).
Quand vous définissez la valeur du paramètre d’application WEBSITE_RUN_FROM_PACKAGE
sur 1
, les API de déploiement zip copient votre package dans le dossier c:\home\data\SitePackages
(Windows) ou /home/data/SitePackages
(Linux) au lieu d’extraire les fichiers dans c:\home\site\wwwroot
(Windows) ou /home/site/wwwroot
(Linux). Le fichier packagename.txt
est également créé. Une fois que votre application de fonction a été redémarrée automatiquement, le package est monté sur wwwroot
en tant que système de fichiers en lecture seule. Pour plus d’informations sur le déploiement zip, consultez Déploiement zip pour Azure Functions.
Notes
Lorsqu’un déploiement se produit, un redémarrage de l’application de fonction est déclenché. Les exécutions de fonctions en cours pendant le déploiement sont interrompues. Pour plus d’informations sur la façon d’écrire des fonctions sans état et défensives, consultez Écrire des fonctions comme sans état.
Utiliser WEBSITE_RUN_FROM_PACKAGE = URL
Cette section fournit des informations sur l’exécution de votre application de fonction à partir d’un package déployé sur un point de terminaison d’URL. Cette option est la seule prise en charge pour l’exécution à partir d’un package hébergé sur Linux dans un plan Consommation. Cette option n’est pas prise en charge dans le plan Flex Consumption.
Considérations relatives au déploiement à partir d’une URL
- Ne définissez pas
WEBSITE_RUN_FROM_PACKAGE = <URL>
dans les applications du plan Flex Consumption. Cette option n'est pas prise en charge. - Les applications de fonction s’exécutant sur Windows subissent une légère augmentation du temps de démarrage à froid lorsque le package d’application est déployé sur un point de terminaison d’URL via
WEBSITE_RUN_FROM_PACKAGE = <URL>
. - Lorsque vous spécifiez une URL, vous devez aussi synchroniser les déclencheurs manuellement après avoir publié un package mis à jour.
- L’exécution de fonctions doit avoir les autorisations pour accéder à l’URL du package.
- Ne déployez pas votre package sur le Stockage Blob Azure en tant que blob public. Au lieu de cela, utilisez un conteneur privé avec une signature d’accès partagé (SAP) ou utilisez une identité managée pour permettre au runtime Functions d’accéder au package.
- Vous devez conserver toutes les URL SAS utilisées pour le déploiement. Lorsqu’une SAS expire, le package ne peut plus être déployé. Dans ce cas, vous devez générer une nouvelle SAS et mettre à jour le paramètre dans votre application de fonction. Vous pouvez éliminer ce fardeau de gestion en utilisant une identité managée.
- Lors de l’exécution sur un plan Premium, veillez à éliminer les démarrages à froid.
- Lorsque vous exécutez dans un plan Dedicated, veillez à activer Always On.
- Vous pouvez utiliser l’Explorateur Stockage Azure pour charger les fichiers de package dans des conteneurs de blobs sur votre compte de stockage.
Chargement manuel d’un package dans le Stockage Blob
Pour déployer un package compressé lorsque vous utilisez l’option URL, vous devez créer un package de déploiement .zip compressé et le charger vers la destination. La procédure suivante déploie sur un conteneur dans le Stockage Blob :
Créez un package .zip pour votre projet à l’aide de l’utilitaire de votre choix.
Sur le Portail Azure, recherchez le nom de votre compte de stockage, ou parcourez la liste des comptes de stockage à sa recherche.
Dans le compte de stockage, sélectionnez Conteneurs sous Stockage des données.
Sélectionnez + Conteneur pour créer un conteneur Stockage Blob dans votre compte.
Sur la page Nouveau conteneur, fournissez un Nom (par exemple déploiements), vérifiez que le Niveau d’accès anonyme est Privé, puis sélectionnez Créer.
Sélectionnez le conteneur que vous avez créé, sélectionnez Charger, accédez à l’emplacement du fichier .zip que vous avez créé avec votre projet, puis sélectionnez Charger.
Une fois le chargement terminé, choisissez votre fichier blob chargé, puis copiez l’URL. Si vous n’utilisez pas d’identité managée, vous devrez peut-être générer une URL SAP.
Recherchez votre application de fonction ou parcourez la page Function App à sa recherche.
Dans votre application de fonction, développez Paramètres, puis sélectionnez Variables d’environnement.
Dans l’onglet Paramètres de l’application, sélectionnez + Ajouter.
Entrez la valeur
WEBSITE_RUN_FROM_PACKAGE
comme Nom, puis collez l’URL de votre package dans Stockage Blob comme Valeur.Sélectionnez Appliquer, puis Appliquer et Confirmer pour enregistrer le paramètre et redémarrer l’application de fonction.
Vous pouvez maintenant exécuter votre fonction dans Azure pour vérifier que le déploiement a réussi à l’aide du fichier .zip du package de déploiement.
Extraire un package à partir de Stockage Blob Azure à l’aide d’une identité managée
Vous pouvez configurer Stockage Blob Azure pour autoriser les requêtes avec Microsoft Entra ID. Cette configuration signifie qu’au lieu de générer une clé SAP avec une expiration, vous pouvez vous reposer sur l'identité managée de l’application. Par défaut, l’identité affectée par le système de l’application est utilisée. Si vous souhaitez spécifier une identité affectée par l’utilisateur, vous pouvez définir le WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID
paramètre d’application sur l’ID de ressource de cette identité. Le paramètre peut également accepter SystemAssigned
comme valeur, ce qui équivaut à omettre le paramètre.
Pour activer le package à extraire à l’aide de l’identité :
Veillez à ce que le blob soit configuré pour un accès privé.
Accordez à l’identité le rôle deLecteur des données Blob du stockage avec étendue sur le blob du package. Voir Attribuer un rôle Azure pour l’accès aux données d’objet blob pour plus d’informations sur la création de l’affectation du rôle.
Définissez les
WEBSITE_RUN_FROM_PACKAGE
paramètres d’application à l’URL de l’objet blob du package. Cette URL prend généralement la formehttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
ou similaire.