Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment créer des applications de fonction hébergées dans le plan Consommation flexible dans Azure Functions. Il montre également comment gérer certaines fonctionnalités d’une application hébergée par un plan Consommation flexible.
Les ressources de l’application de fonction sont spécifiques au langage. Veillez à choisir votre langage de programmation préféré en haut de l’article.
Prérequis
Compte Azure avec un abonnement actif. Si vous n’en avez pas déjà un, vous pouvez créer un compte gratuit.
Azure CLI : utilisé pour créer et gérer des ressources dans Azure. Lors de l’utilisation d’Azure CLI sur votre ordinateur local, veillez à utiliser la version 2.60.0 ou ultérieure. Vous pouvez également utiliser Azure Cloud Shell, qui a la version correcte d’Azure CLI.
Visual Studio Code : utilisé pour créer et développer des applications, créer des ressources Azure, et déployer des projets de code sur Azure. Lors de l’utilisation de Visual Studio Code, veillez à installer également la dernière extension Azure Functions. Vous pouvez également installer le pack d’extension Azure Tools.
Bien que cela ne soit pas obligatoire pour créer une application de plan Consommation flexible, vous avez besoin d’un projet de code pour pouvoir déployer et valider une nouvelle application de fonction. Effectuez la première partie de l’un de ces articles de démarrage rapide où vous créez un projet de code avec une fonction déclenchée par HTTP :
- Créer un projet Azure Functions à partir de la ligne de commande
- Créer un projet Azure Functions avec Visual Studio Code
Pour créer une application dans un nouveau plan Consommation flexible pendant un déploiement Maven, vous devez créer votre projet d’application local, puis mettre à jour le fichier pom.xml du projet. Pour plus d’informations, consultez Créer une application Java Consommation flexible à l’aide de Maven.
Revenez à cet article après avoir créé et exécuté le projet local, mais avant d’être invité à créer des ressources Azure. Vous créerez l’application de fonction et d’autres ressources Azure dans la section suivante.
Créer une application Consommation flexible
Cette section montre comment créer une application de fonction dans le plan Consommation flexible à l’aide d’Azure CLI, du portail Azure ou de Visual Studio Code. Pour obtenir un exemple de création d’une application dans un plan Consommation flexible à l’aide de modèles Bicep/ARM, consultez le dépôt Consommation flexible.
Vous pouvez ignorer cette section si vous choisissez de créer et déployer votre application à l’aide de Maven.
Pour prendre en charge votre code de fonction, vous devez créer trois ressources :
- Un groupe de ressources, qui est un conteneur logique pour les ressources associées.
- Un compte de stockage, qui sert à conserver l’état et d’autres informations sur vos fonctions.
- Une application de fonction dans le plan Consommation flexible, qui fournit l’environnement d’exécution de votre code de fonction. Une application de fonction est mappée à votre projet de fonction local. Elle vous permet de regrouper les fonctions en tant qu’unité logique pour faciliter la gestion, le déploiement et le partage des ressources dans le plan Consommation flexible.
Si vous ne l’avez pas déjà fait, connectez-vous à Azure :
az loginLa commande
az loginvous connecte à votre compte Azure.Utilisez la
az functionapp list-flexconsumption-locationscommande pour passer en revue la liste des régions qui prennent actuellement en charge Flex Consumption par ordre alphabétique.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Créez un groupe de ressources dans l’une des régions actuellement prises en charge répertoriées par la commande à l’étape précédente.
az group create --name <RESOURCE_GROUP> --location <REGION>Dans la commande précédente, remplacez
<RESOURCE_GROUP>par une valeur unique dans votre abonnement et<REGION>par l’une des régions actuellement prises en charge. La commande az group create crée un groupe de ressources.Créez un compte de stockage universel dans votre groupe de ressources et votre région :
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access falseDans l’exemple précédent, remplacez
<STORAGE_NAME>par un nom approprié pour vous et unique dans stockage Azure. Les noms doivent contenir trois à 24 caractères composés de chiffres et de lettres minuscules uniquement.Standard_LRSspécifie un compte à usage général pris en charge par Azure Functions en fonction des exigences du compte de stockage. La commande az storage account create crée le compte de stockage.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.
Créer l’application de fonction dans Azure :
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0Les applications C# qui s’exécutent in-process ne sont pas prises en charge lors de l’exécution dans un plan Consommation flexible.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11Pour les applications Python, Python 3.10 est également pris en charge actuellement.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4Dans cet exemple, remplacez
<RESOURCE_GROUP>et<STORAGE_NAME>respectivement par le groupe de ressources et le nom du compte que vous avez utilisés à l’étape précédente. Remplacez également<APP_NAME>par un nom global unique qui vous convient.<APP_NAME>représente également le domaine DNS (Domain Name System) par défaut pour l’application de fonction. La commandeaz functionapp createcrée l’application de fonction dans Azure.Cette commande crée une application de fonction s’exécutant dans le plan Consommation flexible.
Étant donné que vous avez créé l’application sans spécifier d’instances toujours prêtes, votre application génère des coûts uniquement lors de l’exécution active de fonctions. La commande crée aussi une instance d’Azure Application Insights associée dans le même groupe de ressources, avec laquelle vous pouvez superviser votre application de fonction et visualiser les journaux. Pour plus d’informations, consultez Surveiller l’exécution des fonctions Azure.
Déployer votre projet de code
Pour le déploiement, les applications du plan Flex Consumption utilisent un conteneur de stockage d’objets blob pour héberger des fichiers de package .zip qui contiennent le code de votre projet et toutes les bibliothèques requises pour que votre application s’exécute. Pour plus d’informations, voir Déploiement.
Vous pouvez ignorer cette section si vous choisissez de créer et déployer votre application à l’aide de Maven.
Vous pouvez choisir de déployer votre code de projet sur une application de fonction existante à l’aide de différents outils :
Vous pouvez utiliser Azure CLI pour charger un fichier de package de déploiement dans le partage de déploiement d’une application de fonction dans Azure. Pour effectuer ce déploiement, vous devez produire un fichier de package .zip qui peut s’exécuter lorsque le package est monté sur votre application.
Ce fichier de package doit contenir tous les fichiers de sortie de build et les bibliothèques référencées requises pour que votre projet s’exécute.
Pour les projets comportant un grand nombre de bibliothèques, empaquetez le répertoire racine de votre projet et demandez une génération à distance.
Pour les projets Python, empaquetez le répertoire racine de votre projet et demandez toujours une génération à distance. L’utilisation d’une build distante empêche les problèmes potentiels qui peuvent se produire lorsque vous générez un projet sur Windows à déployer sur Linux.
À l’aide de votre outil de développement préféré, générez le projet de code.
Créez un fichier .zip qui contient la sortie du répertoire de build. Pour plus d’informations, consultez Structure de projet.
Si nécessaire, connectez-vous à votre compte Azure et sélectionnez l’abonnement actif à l’aide de la commande
az login.az loginExécutez la
az functionapp deployment source config-zipcommande pour déployer le package d’application situé dans le fichier relatif<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
À l’aide de votre outil de développement préféré, générez le projet de code.
Créez un fichier .zip qui contient la sortie du répertoire de build. Pour plus d’informations, consultez structure de dossiers.
Si nécessaire, connectez-vous à votre compte Azure et sélectionnez l’abonnement actif à l’aide de la commande
az login.az loginExécutez la
az functionapp deployment source config-zipcommande pour déployer le package d’application situé dans le fichier relatif<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Créez un fichier .zip qui contient le répertoire racine de votre projet de code. Pour plus d’informations, consultez structure de dossiers.
Si nécessaire, connectez-vous à votre compte Azure et sélectionnez l’abonnement actif à l’aide de la commande
az login.az loginExécutez la
az functionapp deployment source config-zipcommande pour déployer le package d’application situé dans le fichier relatif<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Créez un fichier .zip qui contient le répertoire racine de votre projet de code. Pour plus d’informations, consultez structure de dossiers.
Si nécessaire, connectez-vous à votre compte Azure et sélectionnez l’abonnement actif à l’aide de la commande
az login.az loginExécutez la
az functionapp deployment source config-zipcommande pour déployer le package d’application situé dans le fichier relatif<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueVeillez à définir
--build-remote truepour effectuer une compilation distante.
Créez un fichier .zip qui contient le répertoire racine de votre projet de code. Pour plus d’informations, consultez structure de dossiers.
Si nécessaire, connectez-vous à votre compte Azure et sélectionnez l’abonnement actif à l’aide de la commande
az login.az loginExécutez la
az functionapp deployment source config-zipcommande pour déployer le package d’application situé dans le fichier relatif<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueVeillez à définir
--build-remote truepour effectuer une compilation distante.
Créer et déployer votre application à l’aide de Maven
Vous pouvez utiliser Maven pour créer une application de fonction hébergée Flex Consumption et les ressources requises pendant le déploiement en modifiant le pom.xml fichier.
Créez un projet de code Java en suivant la première partie de l’un de ces articles de démarrage rapide :
Dans votre projet de code Java, ouvrez le fichier
pom.xmlet apportez ces modifications pour créer votre application de fonction dans le plan Flex Consumption :Remplacez la valeur de
<properties>.<azure.functions.maven.plugin.version>par1.34.0.Dans la section
<plugin>.<configuration>relative auazure-functions-maven-plugin, ajoutez ou supprimez les marques de commentaire de l’élément<pricingTier>comme suit :<pricingTier>Flex Consumption</pricingTier>
(Facultatif) Personnalisez le plan Consommation flexible dans votre déploiement Maven en incluant également ces éléments dans la section
<plugin>.<configuration>:-
<instanceSize>: définit la taille de mémoire d’instance pour l’application de fonction. La valeur par défaut est2048. -
<maximumInstances>: définit la valeur la plus élevée pour le nombre maximal d’instances de l’application de fonction. -
<alwaysReadyInstances>: définit le nombre d’instances toujours prêtes avec des éléments enfants pour les groupes de déclencheurs HTTP (<http>), les groupes Durable Functions (<durable>) et d’autres déclencheurs spécifiques (<my_function>). Lorsque vous définissez un nombre d’instances supérieur à zéro, vous payez pour ces instances si vos fonctions s’exécutent ou non. Pour plus d'informations, consultez Facturation.
-
Avant de pouvoir déployer, connectez-vous à votre abonnement Azure à l’aide du Azure CLI.
az loginLa commande
az loginvous connecte à votre compte Azure.Utilisez la commande suivante pour déployer votre projet de code sur une nouvelle application de fonction dans Consommation flexible.
mvn azure-functions:deployMaven utilise des paramètres dans le modèle
pom.xmlpour créer votre application de fonction dans un plan Flex Consumption dans Azure, ainsi que les autres ressources requises. Si ces ressources existent déjà, le code est déployé sur votre application de fonction, en remplaçant tout code existant.
Configurer l’intégration de virtual network
Vous pouvez activer l’intégration de réseau virtuel pour votre application dans un plan Flex Consumption lorsque vous créez votre application ou ultérieurement. Avant d’activer l’intégration de réseau virtuel, passez en revue le comportement réseau et les exigences de sous-réseau spécifiques à Flex Consumption.
Fonctionnement de la mise en réseau Flex Consumption
Les instances Flex Consumption n’utilisent pas chacune une adresse IP unique à partir du sous-réseau auquel vous intégrez l’application. Au lieu de cela, un pool de passerelles réseau gérées par la plateforme (interne à l’infrastructure Flex Consumption) utilise des adresses IP du sous-réseau pour servir toutes les applications intégrées à ce sous-réseau. Cette architecture de multiplexage IP diffère fondamentalement des plans Premium, où chaque instance utilise une adresse IP du sous-réseau.
Les 40 adresses IP par application indiquent qu’il existe suffisamment d’adresses IP pour le pool de passerelles de plateforme et d’autres composants d’infrastructure, mais qu’il ne s’agit pas d’une limite appliquée. Planifiez ce minimum lors du dimensionnement de votre sous-réseau, mais comprenez que la consommation d’adresses IP réelles est généralement inférieure. La plateforme alloue dynamiquement des adresses IP à partir de la réserve de passerelles partagées à mesure que les applications intégrées au sous-réseau montent en charge.
Dimensionnement et configuration requise du sous-réseau
Choisissez un sous-réseau de taille appropriée pour vos applications Flex Consumption. Le tableau suivant fournit des conseils basés sur votre scénario :
| Scénario | CIDR recommandé | Adresses IP utilisables | Remarques |
|---|---|---|---|
| Application Single Flex | /27 |
27 | Taille minimale de sous-réseau prise en charge pour une application |
| Plusieurs applications Flex dans un sous-réseau | /26 |
59 | Recommandé lors de l’hébergement de plusieurs applications et pour les charges de travail à grande échelle (1 000 instances+ ) ; fournit une capacité de passerelle adéquate |
Délégation de sous-réseau
- Déléguer le sous-réseau à
Microsoft.App/environments. Cette délégation diffère des plans Premium et Dedicated, qui utilisentMicrosoft.Web/serverFarms. -
Enregistrez le
Microsoft.Appfournisseur de ressources dans votre abonnement.
Restrictions d’utilisation du sous-réseau
- Le sous-réseau ne peut pas déjà être utilisé pour les points de terminaison privés ou les points de terminaison de service, et il ne peut pas être délégué à d’autres plans ou services d’hébergement.
- Vous ne pouvez pas partager le même sous-réseau entre un environnement Azure Container Apps et une application Flex Consumption.
- Les noms de sous-réseaux ne peuvent pas contenir de caractères de soulignement (
_), ce qui est une limitation actuelle du plan Flex Consumption.
Partage de sous-réseau
- Vous pouvez partager le même sous-réseau avec plusieurs applications s’exécutant dans un plan Consommation flexible. Toutefois, étant donné que les ressources réseau sont partagées entre toutes les applications, une application de fonction peut affecter les performances des autres sur le même sous-réseau. Tenez compte de la demande agrégée lors de l’empaquetage de plusieurs applications dans un petit sous-réseau.
- Le sous-réseau et l’application doivent se trouver dans la même région.
Allocation et planification d’adresses IP
- Les applications Flex Consumption n’attribuent pas d’adresse IP unique à chaque instance. Au lieu de cela, un pool de passerelles réseau utilise des adresses IP à partir du sous-réseau. Les instructions de réservation de 40 adresses IP par application permettent de s’assurer qu’il existe suffisamment d’adresses IP pour le pool de passerelles et d’autres composants d’infrastructure, mais l’utilisation réelle est généralement inférieure.
- Un
/27sous-réseau (27 adresses IP utilisables) est suffisant pour une application unique prenant en charge jusqu’à 1 000 instances en raison du multiplexage IP. Pour plusieurs applications ou charges de travail à grande échelle, utilisez un/26sous-réseau pour fournir une capacité de passerelle adéquate. - Lorsque de nombreuses applications partagent un sous-réseau et que bon nombre d’entre elles montent en charge horizontalement avec un trafic sortant important, le débit réseau sortant peut devenir un goulot d’étranglement avant l’épuisement des adresses IP. Évaluez les performances à votre échelle de production planifiée.
Activer l’intégration de réseau virtuel lorsque vous créez l’application
Les exemples de cette section supposent que votre compte contient déjà un réseau virtuel et un sous-réseau.
Activez l’intégration au réseau virtuel en exécutant la commande az functionapp create et en incluant les paramètres --vnet et --subnet. Le sous-réseau doit être délégué à Microsoft.App/environments et doit être au moins /27 de taille. Pour plus d’informations, consultez Dimensionnement et exigences du sous-réseau.
Créez le réseau virtuel et le sous-réseau, si vous n’en avez pas déjà.
Effectuez les étapes 1 à 4 dans Créer une application Consommation flexible pour créer les ressources requises par votre application.
Exécutez la commande
az functionapp create, y compris les paramètres--vnetet--subnet, comme dans cet exemple :az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>La valeur
<VNET_RESOURCE_ID>est l’ID de ressource du réseau virtuel, qui est au format suivant :/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. Vous pouvez utiliser cette commande pour obtenir la liste des ID de réseau virtuel, filtrés par<RESOURCE_GROUP>:az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.
Pour obtenir des exemples de bout en bout de la création d’applications dans Flex Consumption avec l’intégration de réseau virtuel, consultez les ressources suivantes :
- Consommation flexible : HTTP vers Event Hubs en utilisant l’intégration de réseau virtuel
- Consommation flexible : déclenchée depuis Service Bus en utilisant l’intégration de réseau virtuel
Modifier ou supprimer l’intégration de réseau virtuel
Vous pouvez ajouter, modifier ou supprimer l’intégration de réseau virtuel pour une application existante.
Utilisez la commande az functionapp vnet-integration add pour activer l’intégration de réseau virtuel à une application de fonction existante :
az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
Utilisez la commande az functionapp vnet-integration remove pour désactiver l’intégration de réseau virtuel dans votre application :
az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Utilisez la commande az functionapp vnet-integration list pour dresser la liste des intégrations de réseau virtuel actuelles pour votre application :
az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Résoudre les problèmes de performances réseau
Lorsqu’une application Flex Consumption s’intègre à un sous-réseau inférieur à la taille recommandée, vous pouvez rencontrer une dégradation des performances à mesure que l’application est mise à l’échelle. Ce problème peut également se produire si vous intégrez de nombreuses applications au même sous-réseau lorsqu’elles montent en charge et génèrent un trafic sortant important.
Symptômes de sous-réseaux sous-dimensionnés
Surveillez ces symptômes, ce qui indique que la capacité sortante plutôt que les adresses IP est le facteur de limitation :
- Augmentation de la latence sur les appels sortants vers les services dépendants
- Délais d’expiration de connexion aux services externes
- Ces problèmes s’aggravent à mesure que l’application monte en charge, et non lors d’une panne soudaine
Important
Le scale-out lui-même n’est pas limité par la taille du sous-réseau. L’application continue d’ajouter des instances même si le sous-réseau est trop petit. La dégradation des performances se produit au lieu d’une limite d’échelle dure.
Surveillance et atténuation
- Instrumentez Application Insights avec des métriques de latence des dépendances sortantes : cette métrique fournit un signal d’alerte précoce pour les sous-réseaux sous-dimensionnés.
- Test de charge à l’échelle de production avant de régler la taille du sous-réseau pour vérifier que le dimensionnement de votre sous-réseau peut gérer votre charge de travail attendue.
- Monitor avec Azure Monitor : accédez à Réseau virtuel>Subnet dans Azure Monitor pour afficher les données d’allocation IP via des requêtes Azure Resource Graph et KQL.
-
Dimensionner correctement votre sous-réseau en fonction des instructions de la section précédente. Un minimum de
/27est fortement recommandé ;/26est recommandé pour plusieurs applications.
Note
Utilisez au moins un /27 sous-réseau pour garantir une stabilité adéquate de la plateforme. Les sous-réseaux nettement inférieurs à /27 peuvent rencontrer des problèmes de création de passerelle sans message d’erreur explicite.
Configurer les paramètres de déploiement
Dans le plan Flex Consumption, un conteneur Stockage Blob Azure contient le package de déploiement avec le code de votre application. Par défaut, les déploiements utilisent le même compte de stockage (AzureWebJobsStorage) et chaîne de connexion que le runtime Functions utilise pour gérer votre application. Le paramètre d’application DEPLOYMENT_STORAGE_CONNECTION_STRING stocke le chaîne de connexion. Toutefois, vous pouvez désigner un conteneur d’objets blob dans un compte de stockage distinct comme source de déploiement pour votre code. Vous pouvez également modifier la méthode d’authentification utilisée pour accéder au conteneur.
Une source de déploiement personnalisée doit répondre à ces critères :
- Le compte de stockage doit déjà exister.
- Le conteneur à utiliser pour les déploiements doit également exister.
- Lorsque plusieurs applications utilisent le même compte de stockage, chaque application doit avoir son propre conteneur de déploiement. L’utilisation d’un conteneur unique pour chaque application empêche le remplacement des packages de déploiement, ce qui se produit si les applications partagent le même conteneur.
Lorsque vous configurez l’authentification de stockage de déploiement, gardez à l’esprit ces considérations :
- En guise de meilleure pratique de sécurité, utilisez des identités managées lors de la connexion à stockage Azure à partir de vos applications. Pour plus d’informations, consultez Connexions.
- Lorsque vous utilisez une chaîne de connexion pour vous connecter au compte de stockage de déploiement, le paramètre d’application qui contient la chaîne de connexion doit déjà exister.
- Lorsque vous utilisez une identité managée affectée par l’utilisateur, vous liez l’identité fournie à l’application de fonction. Vous attribuez également le
Storage Blob Data Contributorrôle étendu au compte de stockage de déploiement à l’identité. - Lorsque vous utilisez une identité managée affectée par le système, vous créez une identité lorsqu’une identité affectée par le système valide n’existe pas déjà dans votre application. Lorsqu’une identité attribuée par le système existe, vous attribuez à l’identité le rôle
Storage Blob Data Contributorayant pour étendue le compte de stockage de déploiement.
Pour configurer les paramètres de déploiement lorsque vous créez votre application de fonction dans le plan Consommation flexible :
Utilisez la az functionapp create commande et fournissez ces options supplémentaires qui personnalisent le stockage de déploiement :
| Paramètre | Descriptif |
|---|---|
--deployment-storage-name |
Nom du compte de stockage de déploiement. |
--deployment-storage-container-name |
Nom du conteneur dans le compte pour contenir le package de déploiement de votre application. |
--deployment-storage-auth-type |
Type d’authentification à utiliser pour la connexion au compte de stockage de déploiement. Les valeurs acceptées incluent StorageAccountConnectionString, UserAssignedIdentity et SystemAssignedIdentity. |
--deployment-storage-auth-value |
Lorsque vous utilisez StorageAccountConnectionString, définissez ce paramètre sur le nom du paramètre d’application qui contient la chaîne de connexion au compte de stockage de déploiement. Lorsque vous définissez UserAssignedIdentity, définissez ce paramètre sur le nom de l’ID de ressource de l’identité que vous souhaitez utiliser. |
Cet exemple crée une application de fonction dans le plan Consommation flexible avec un compte de stockage de déploiement distinct et une identité affectée par l’utilisateur :
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>
Vous pouvez également modifier la configuration du stockage de déploiement pour une application existante.
Utilisez la az functionapp deployment config set commande pour modifier la configuration du stockage de déploiement.
az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>
Configurer la mémoire d’instance
Définissez la taille de mémoire de l’instance pour votre plan Flex Consumption lorsque vous créez votre application. Pour plus d’informations sur les tailles prises en charge, consultez Tailles d’instance.
Pour définir une taille de mémoire d’instance différente de la taille par défaut lors de la création de votre application :
Spécifiez le paramètre --instance-memory dans votre commande az functionapp create. Cet exemple crée une application C# avec une taille d’instance de 4096 :
az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0
À tout moment, vous pouvez modifier le paramètre de taille de mémoire d’instance utilisé par votre application.
Cet exemple utilise la commande pour modifier le az functionapp scale config set paramètre de taille de mémoire de l’instance à 512 Mo :
az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512
Définir le nombre d’instances toujours prêtes
Définissez un nombre spécifique d’instances toujours prêtes pour les groupes de mise à l’échelle par fonction ou les fonctions individuelles pour que vos fonctions soient chargées et prêtes à s’exécuter. Trois groupes spéciaux existent, comme dans la mise à l’échelle par fonction :
-
http- Toutes les fonctions déclenchées par HTTP dans l’application font l’objet d’une mise à l’échelle collective au sein de leurs propres instances. -
durable- Toutes les fonctions déclenchées par Durable (Orchestration, Activité, Entité) dans l’application font l’objet d’une mise à l’échelle collective au sein de leurs propres instances. -
blob- Toutes les fonctions déclenchées par blob (via Event Grid) dans l’application font l’objet d’une mise à l’échelle collective au sein de leurs propres instances.
Utilisez http, durable, ou blob comme nom de la paire clé-valeur pour configurer les compteurs toujours prêts pour ces groupes. Pour toutes les autres fonctions de l’application, configurez toujours prêt pour chaque fonction individuelle à l’aide du format function:<FUNCTION_NAME>=n.
Pour définir une ou plusieurs désignations d’instance toujours prêtes, utilisez le --always-ready-instances paramètre avec la az functionapp create commande. Cet exemple affecte la valeur 10 au nombre d’instances toujours prêtes pour toutes les fonctions déclenchées par HTTP :
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10
Cet exemple affecte la valeur 3 au nombre d’instances toujours prêtes pour toutes les fonctions de déclencheur Durable, et affecte la valeur 2 au nombre d’instances toujours prêtes pour une fonction déclenchée Service Bus nommée function5 :
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2
Vous pouvez également modifier les instances toujours prêtes sur une application existante en ajoutant ou en supprimant des désignations d’instances ou en modifiant le nombre de désignations d’instances existantes.
Cet exemple utilise la commande az functionapp scale config always-ready set pour affecter la valeur 10 au nombre d’instances toujours prêtes pour le groupe de déclencheurs HTTP :
az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10
Pour supprimer des instances toujours prêtes, utilisez la commande az functionapp scale config always-ready delete, comme dans cet exemple qui supprime toutes les instances toujours prêtes du groupe de déclencheurs HTTP et également d’une fonction nommée hello_world :
az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world
Définir les limites de concurrence HTTP
Si vous ne définissez pas de limites spécifiques, le système détermine les valeurs par défaut de concurrence HTTP pour les applications du plan Flex Consumption en fonction du paramètre de taille de votre instance. Pour plus d’informations, consultez Concurrence de déclencheurs HTTP.
Voici comment définir les limites de concurrence HTTP pour une application existante :
Utilisez la commande az functionapp scale config set pour définir des limites de concurrence HTTP spécifiques pour votre application, quelle que soit la taille de l’instance.
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10
Cet exemple affecte la valeur 10 au niveau de concurrence des déclencheurs HTTP. Après avoir défini une valeur de concurrence HTTP, l’application conserve cette valeur malgré les modifications apportées au paramètre de taille d’instance de votre application.
Définir la stratégie de mise à jour de site
Le plan Flex Consumption prend en charge de manière unique deux stratégies de mise à jour de site différentes qui contrôlent la façon dont votre application de fonction gère les déploiements de code et les modifications de configuration. Par défaut, les applications du plan Flex Consumption utilisent la Recreate stratégie, qui met fin aux fonctions en cours d’exécution pendant les déploiements. Pour activer les déploiements sans temps d’arrêt, vous pouvez plutôt configurer la stratégie RollingUpdate. Pour plus d’informations, consultez les stratégies de mise à jour du site dans Flex Consumption.
Note
La configuration de la stratégie de mise à jour de site est actuellement en préversion publique et est disponible uniquement via des modèles Bicep ou ARM. Vous ne pouvez pas configurer ce paramètre à l'aide du Azure CLI, du portail Azure ou du Visual Studio Code.
Le Azure CLI ne prend actuellement pas en charge la configuration de la stratégie de mise à jour de site. Utilisez des modèles Bicep ou ARM comme décrit dans Configurer la stratégie de mise à jour de site.
Configurer des certificats à portée de site
Flex Consumption introduit des certificats étendus au site, un nouveau modèle dans lequel les certificats TLS/SSL sont étendus à votre application de fonction individuelle plutôt qu’partagés entre les applications dans le même espace web. Le tableau suivant montre les types de certificats pris en charge et la façon dont chacun d’eux est ajouté à votre application de fonction :
| Type de certificat | Guide pratique pour ajouter | Compte dans |
|---|---|---|
| Certificat géré App Service | Créé dans le portail pour un domaine personnalisé | Limite de certificat privé |
| Certificat App Service | Acheté via Azure, puis importé | Limite de certificat privé |
| Certificate importé à partir de Key Vault | Importé à partir de Azure Key Vault | Limite de certificat privé |
| Certificat privé importé (.pfx) | Chargé en tant que fichier PFX | Limite de certificat privé |
| Certificat public importé (.cer) | Téléversé au format CER | Limites de certificats publiques |
Considérations relatives aux certificats propres au site
- La prise en charge de l’utilisation de certificats limités à un site pour les applications exécutées sur un plan Flex Consumption est actuellement en préversion.
- Les applications existantes créées avant que cette fonctionnalité ne soit disponible n’ont actuellement pas de chemin de migration pour les certificats. Pour utiliser des certificats étendus au site, créez une application de fonction Flex Consumption.
- La prise en charge par Azure CLI de la gestion des certificats à portée de site n’est pas encore disponible. En attendant, utilisez le portail Azure ou ARM/Bicep modèles pour gérer les certificats.
- Chaque application prend en charge un maximum de trois certificats privés et trois certificats publics.
- Les certificats privés doivent être exportés en tant que fichier PFX protégé par mot de passe qui contient tous les certificats intermédiaires et le certificat racine dans la chaîne de certificats.
- Le chiffrement de bout en bout (E2E) n’est actuellement pas pris en charge.
- Les certificats ECC (Elliptic Curve Cryptography) sont pris en charge lors du chargement en tant que PFX.
- Étant donné que Flex Consumption s’exécute sur Linux, votre code doit charger des certificats à partir de chemins de fichiers plutôt que du magasin de certificats Windows. Tout d’abord, suivez les étapes décrites dans Rendre un certificat accessible à votre code pour charger des certificats dans l’environnement d’exécution. Ensuite, pour obtenir des conseils sur la lecture des fichiers de certificat à partir du code de votre application, consultez Charger des certificats dans des conteneurs Linux/Windows.
Ajouter un certificat
Vous pouvez ajouter des certificats à votre application de plusieurs façons, en fonction du type de certificat. Ajoutez des certificats managés et Azure gratuits directement dans le portail.
Sélectionnez l’un des onglets suivants pour voir comment ajouter un certificat managé, privé (.pfx), public (.cer) ou un certificat géré par Key Vault.
- Lier un certificat managé
- Télécharger un certificat privé (.pfx)
- Importer à partir de Key Vault
- Télécharger le certificat public (.cer)
Pour créer et lier un certificat managé gratuit pour un domaine personnalisé :
Dans le portail Azure, accédez à votre application de fonction.
Dans le menu de gauche, développez Paramètres et sélectionnez Domaines personnalisés.
Sélectionnez Ajouter un domaine personnalisé.
Sous certificat TLS/SSL, sélectionnez Certificat managé App Service.
Sous type TLS/SSL, sélectionnez SNI SSL.
Terminez la validation du domaine et sélectionnez Ajouter.
Le certificat managé est créé et lié automatiquement au domaine personnalisé. L’émission du certificat peut prendre jusqu’à 10 minutes.
Rendre un certificat accessible à votre code
Après avoir ajouté un certificat, vous devez le rendre explicitement accessible à votre code de fonction.
Dans le portail Azure, accédez à votre application de fonction.
Dans le menu de gauche, développez Paramètres et sélectionnez Certificats.
Sélectionnez Bring your own certificates (.pfx) ou Public key certificates (.cer).
Sélectionnez ... (points de suspension) en regard du certificat que vous souhaitez rendre accessible, puis choisissez Rendre accessible au code d’application.
Lorsque vous activez Accessible au code de l’application, la plateforme charge le certificat dans l’environnement d’exécution sur toutes les instances sous forme de fichier.
Les fichiers de certificat sont nommés par empreinte numérique et placés dans ces répertoires :
| Type de certificat | Chemin |
|---|---|
| Certificats publics (.cer) | /var/ssl/certs |
| Certificats privés (.pfx) | /var/ssl/private |
Renouveler ou mettre à jour un certificat
Les certificats managés gratuits sont automatiquement renouvelés par la plateforme. Pour tous les autres certificats, la façon dont vous mettez à jour un certificat arrivant à expiration dépend de la source du certificat :
Certificates importés à partir de Key Vault : lorsque vous renouvelez un certificat dans Key Vault, le travail en arrière-plan de la plateforme synchronise automatiquement le certificat mis à jour avec votre application de fonction dans les 24 heures. La nouvelle version du certificat est chargée sur toutes les instances sans aucune procédure manuelle.
Certificats chargés : chargez le nouveau certificat, puis rendez-le accessible au code de votre application. Si votre code référence le certificat par empreinte numérique, mettez à jour les références d’empreinte numérique dans vos paramètres de code ou d’application.
Afficher les régions actuellement prises en charge
Pour afficher la liste des régions qui prennent actuellement en charge les plans Flex Consumption, consultez :
Si vous ne l’avez pas déjà fait, connectez-vous à Azure :
az loginLa commande
az loginvous connecte à votre compte Azure.Utilisez la
az functionapp list-flexconsumption-locationscommande pour passer en revue la liste des régions qui prennent actuellement en charge Flex Consumption par ordre alphabétique.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Lorsque vous créez une application dans le portail Azure ou à l’aide de Visual Studio Code, la liste des régions exclut actuellement les régions non prises en charge.
Surveiller votre application dans Azure
Azure Monitor fournit ces ensembles distincts de métriques pour mieux comprendre comment votre application de fonction s’exécute dans Azure :
- Métriques de plateforme : fournit des insights au niveau de l’infrastructure
- Application Insights : fournit des informations sur le code, notamment des traces et des journaux d’erreurs.
Si vous activez Application Insights dans votre application, vous pouvez :
- Suivre les temps d’exécution et les dépendances détaillés
- Surveiller les performances d’une fonction individuelle
- Analyser les échecs et les exceptions
- Mettre en corrélation les métriques de plateforme avec le comportement de l’application à l’aide de requêtes personnalisées
Pour plus d’informations, consultez Surveiller l’exécution des fonctions Azure.
Métriques prises en charge
Exécutez ce script pour afficher toutes les métriques de plateforme actuellement disponibles pour votre application :
appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
az monitor metrics list-definitions --resource $appId --query "[].{Name:name.localizedValue,Value:name.value}" -o table
Dans cet exemple, remplacez <RESOURCE_GROUP> et <APP_NAME> par les noms de votre groupe de ressources et de votre application de fonction. Ce script obtient l’ID d’application complet et retourne les métriques de plateforme disponibles dans une table.
Afficher les métriques
Vous pouvez consulter les métriques actuelles dans le portail Azure ou à l’aide d’Azure CLI.
Dans le portail Azure, vous pouvez également créer des alertes de métriques et épingler des graphiques et d’autres rapports aux tableaux de bord du portail.
Utilisez ce script pour générer un rapport des métriques actuelles pour votre application :
appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
echo -e "\nAlways-ready and on-demand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionCount" --interval PT1H --output table
echo -e "\nExecution units (MB-ms) in always-ready and on-demand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionUnits" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionUnits" --interval PT1H --output table
echo -e "\nAlways-ready resource utilization..."
az monitor metrics list --resource $appId --metric "AlwaysReadyUnits" --interval PT1H --output table
echo -e "\nMemory utilization..."
az monitor metrics list --resource $appId --metric "AverageMemoryWorkingSet" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "MemoryWorkingSet" --interval PT1H --output table
echo -e "\nInstance count and CPU utilization..."
az monitor metrics list --resource $appId --metric "InstanceCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "CpuPercentage" --interval PT1H --output table
Pour en savoir plus sur les métriques pour Azure Functions, consultez Monitor Azure Functions.
Afficher les journaux d’activité
Lorsque vous connectez votre application à Application Insights, vous pouvez mieux analyser les performances de votre application et résoudre les problèmes lors de l’exécution. Dans la ressource Application Insights pour votre application :
- Utilisez les performances pour analyser les temps de réponse et les dépendances.
- Utilisez les échecs pour identifier les erreurs qui se produisent après la migration.
- Créez des requêtes personnalisées dans Logs pour analyser le comportement d’une fonction.
Par exemple, utilisez cette requête pour comparer les taux de réussite par instance :
Utilisez cette requête pour comparer les taux de réussite par instance :
requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart
Utilisez cette requête pour analyser le nombre d’instances qui traitent activement votre fonction :
let _startTime = ago(20m); //Adjust start time as needed
let _endTime = now(); //Adjust end time as needed
let bins = 1s; //Adjust bin as needed - this will give per second results
requests
| where operation_Name == 'EventHubsTrigger' //Replace with the name of the function in the function app that you are analyzing
| where timestamp between(_startTime .. _endTime)
| make-series dcount(cloud_RoleInstance) default=0 on timestamp from _startTime to _endTime step bins
| render columnchart
Voir les coûts
Étant donné que vous pouvez paramétrer votre application pour ajuster les performances par rapport aux coûts d’exploitation, il est important de suivre les coûts associés à l’exécution de votre application dans le plan Flex Consumption.
Pour afficher les coûts actuels :
Dans la page de votre application de fonction dans le portail Azure, sélectionnez le lien du groupe de ressources.
Dans la page du groupe de ressources, sélectionnez Cost Management>Cost Analysis.
Passez en revue les coûts actuels et la trajectoire des coûts de l’application elle-même.
Si vous le souhaitez, sélectionnezAlertes>, puis + Ajouter pour créer une alerte pour l’application.
Ajuster votre application
Le plan Flex Consumption fournit plusieurs paramètres que vous pouvez ajuster pour affiner les performances de votre application. Les performances et les coûts réels peuvent varier en fonction des modèles et de la configuration spécifiques à votre application. Par exemple, des tailles d’instance de mémoire plus élevées peuvent améliorer les performances des opérations nécessitant beaucoup de mémoire, mais à un coût plus élevé par période active.
Voici quelques ajustements que vous pouvez apporter pour affiner les performances par rapport aux coûts :
- Ajustez les paramètres d’accès concurrentiel pour optimiser le débit par instance.
- Choisissez la taille de mémoire appropriée pour votre charge de travail. Des tailles de mémoire plus élevées coûtent plus cher, mais peuvent améliorer les performances.