Partager via


Créer et gérer des applications de fonction dans le plan Consommation flexible

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 d’application de fonction sont propres au langage. Veillez à choisir votre langage de programmation préféré en haut de l’article.

Important

Le plan Consommation flexible est actuellement en préversion.

Prérequis

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.
  1. Si vous ne l’avez pas déjà fait, connectez-vous à Azure :

    az login
    

    La commande az login vous connecte à votre compte Azure.

  2. Utilisez la commande az functionapp list-flexconsumption-locations pour passer en revue la liste des régions qui prennent actuellement en charge Consommation flexible.

    az functionapp list-flexconsumption-locations --output table
    
  1. Créez un groupe de ressources dans l’une des régions actuellement prises en charge :

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    Dans la commande ci-dessus, 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.

  2. 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 false
    

    Dans l’exemple précédent, remplacez <STORAGE_NAME> par un nom qui vous convient et qui est unique dans Stockage Azure. Les noms doivent contenir entre 3 et 24 caractères, et comporter uniquement des lettres minuscules. Standard_LRS spécifie un compte universel, qui est pris en charge par Functions. 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.

  3. 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.0 
    

    Les 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 17 
    

    Pour les applications Java, Java 11 est également pris en charge actuellement.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    Pour 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.4 
    

    Dans 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 commande az functionapp create crée l’application de fonction dans Azure.

    Cette commande crée une application de fonction s’exécutant dans le plan Consommation flexible. La version spécifique du runtime de langage utilisée est une version actuellement prise en charge dans la préversion.

    É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

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 :

Important

Le déploiement vers une application de fonction existante remplace toujours le contenu de cette application dans Azure.

  1. Dans la palette de commandes, recherchez et exécutez la commande Azure Functions: Deploy to Function App....

  2. Sélectionnez l’application de fonction que vous venez de créer. Quand vous êtes invité à remplacer les déploiements précédents, sélectionnez Déployer pour déployer le code de votre fonction sur la nouvelle ressource de l’application de fonction.

  3. Une fois le déploiement terminé, sélectionnez Afficher la sortie pour afficher les résultats de la création et du déploiement, y compris les ressources Azure que vous avez créées. Si vous manquez la notification, sélectionnez l’icône de cloche dans le coin inférieur droit pour la voir de nouveau.

    Capture d’écran de la fenêtre Afficher la sortie.

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 Consommation flexible et les ressources requises pendant le déploiement en modifiant le fichier pom.xml.

  1. Créez un projet de code Java en suivant la première partie de l’un de ces articles de démarrage rapide :

  2. Dans votre projet de code Java, ouvrez le fichier pom.xml et apportez ces modifications pour créer votre application de fonction dans le plan Consommation flexible :

    • Remplacez la valeur de <properties>.<azure.functions.maven.plugin.version> par 1.34.0.

    • Dans la section <plugin>.<configuration> relative au azure-functions-maven-plugin, ajoutez ou supprimez les marques de commentaire de l’élément <pricingTier> comme suit :

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (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 est 2048.
    • <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 êtes facturé pour ces instances, que vos fonctions s’exécutent ou non. Pour plus d'informations, consultez Facturation.
  4. Avant d’effectuer le déploiement, connectez-vous à votre abonnement Azure à l’aide d’Azure CLI.

    az login
    

    La commande az login vous connecte à votre compte Azure.

  5. Utilisez la commande suivante pour déployer votre projet de code sur une nouvelle application de fonction dans Consommation flexible.

    mvn azure-functions:deploy
    

    Maven utilise des paramètres dans le modèle pom.xml pour créer votre application de fonction dans un plan Consommation flexible 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.

Activer l’intégration du réseau virtuel Azure

Vous pouvez activer l’intégration de réseau virtuel pour votre application dans un plan Consommation flexible. Les exemples de cette section partent du principe que vous avez déjà créé un réseau virtuel avec un sous-réseau dans votre compte. Vous pouvez activer l’intégration de réseau virtuel lorsque vous créez votre application ou ultérieurement.

Pour activer la mise en réseau virtuelle lorsque vous créez votre application :

Vous pouvez activer l’intégration de réseau virtuel en exécutant la commande az functionapp create et en incluant les paramètres --vnet et --subnet.

  1. Créez le réseau virtuel et le sous-réseau, si ce n’est déjà fait.

  2. Effectuez les étapes 1 à 4 dans Créer une application Consommation flexible pour créer les ressources requises par votre application.

  3. Exécutez la commande az functionapp create, y compris les paramètres --vnet et --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/<RESOURCER_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 Consommation flexible avec l’intégration de réseau virtuel, consultez les ressources suivantes :

Pour modifier ou supprimer l’intégration de réseau virtuel dans 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>

Lors du choix d’un sous-réseau, ces considérations s’appliquent :

  • Le sous-réseau que vous choisissez ne peut pas être déjà utilisé à d’autres fins, comme avec des points de terminaison privés ou des points de terminaison de service, ni être délégué à tout autre plan d’hébergement ou service.
  • Vous pouvez partager le même sous-réseau avec plusieurs applications s’exécutant dans un plan Consommation flexible. Étant donné que les ressources réseau sont partagées entre toutes les applications, une application de fonction peut avoir un impact sur les performances des autres sur le même sous-réseau.
  • Dans un plan Consommation flexible, une application de fonction unique peut utiliser jusqu’à 40 adresses IP, même lorsqu’elle est mise à l’échelle au-delà de 40 instances. Bien que cette règle générale soit utile lors de l’estimation de la taille du sous-réseau dont vous avez besoin, elle n’est pas strictement appliquée.

Configurer les paramètres de déploiement

Dans le plan Consommation flexible, le package de déploiement qui contient le code de votre application est conservé dans un conteneur Stockage Blob Azure. Par défaut, les déploiements utilisent le même compte de stockage (AzureWebJobsStorage) et la même valeur de chaîne de connexion que ceux utilisés par le runtime Functions pour tenir à jour votre application. La chaîne de connexion est stockée dans le paramètre d’application DEPLOYMENT_STORAGE_CONNECTION_STRING. 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, chacune doit avoir son propre conteneur de déploiement. L’utilisation d’un conteneur unique pour chaque application évite le remplacement des packages de déploiement, ce qui se produirait si les applications partageaient le même conteneur.

Lors de la configuration de l’authentification du stockage de déploiement, gardez à l’esprit ces considérations :

  • 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, l’identité fournie est liée à l’application de fonction. Le rôle Storage Blob Data Contributor étendu au compte de stockage de déploiement est également attribué à l’identité.
  • Lorsque vous utilisez une identité managée affectée par le système, une identité est créée lorsqu’une identité affectée par le système valide n’existe pas déjà dans votre application. Lorsqu’une identité affectée par le système existe, le rôle Storage Blob Data Contributor étendu au compte de stockage de déploiement est également attribué à l’identité.

Pour configurer les paramètres de déploiement lorsque vous créez votre application de fonction dans le plan Consommation flexible :

Utilisez la commande az functionapp create et fournissez ces options supplémentaires qui personnalisent le stockage de déploiement :

Paramètre Description
--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 Lors de l’utilisation de StorageAccountConnectionString, ce paramètre est défini sur le nom du paramètre d’application qui contient la chaîne de connexion au compte de stockage de déploiement. Lorsque vous utilisez UserAssignedIdentity, ce paramètre est défini 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_ACCCOUNT_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 commande az functionapp deployment config set 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_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>

Configurer la mémoire d’instance

La taille de mémoire d’instance utilisée par votre plan Consommation flexible peut être définie explicitement lorsque vous créez votre application. Pour plus d’informations sur les tailles prises en charge, consultez Mémoire 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 az functionapp scale config set pour définir le paramètre de taille de mémoire d’instance sur 4,096 Mo :

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 4096

Définir le nombre d’instances toujours prêtes

Lors de la création d’une application dans un plan Consommation flexible, vous pouvez définir le nombre d’instances toujours prêtes pour des groupes (déclencheurs HTTP ou Durable) et des déclencheurs spécifiques. Pour les fonctions individuelles, utilisez le format function:<FUNCTION_NAME>=n.

Utilisez le paramètre --always-ready-instances avec la commande az functionapp create pour définir une ou plusieurs désignations d’instances toujours prêtes. Cet exemple affecte la valeur 5 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 hello_world

Définir les limites de concurrence HTTP

À moins que vous ne définissiez des limites spécifiques, les valeurs par défaut de concurrence HTTP pour les applications de plan Consommation flexible sont déterminées en fonction du paramètre de taille de votre instance. Pour plus d’informations, consultez Concurrence de déclencheurs HTTP.

Voici comment définir des 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. Une fois que vous avez défini spécifiquement une valeur de concurrence HTTP, cette valeur est conservée même en cas de modification du paramètre de taille d’instance de votre application.

Afficher les régions actuellement prises en charge

Pendant la préversion, vous ne pouvez exécuter des applications sur le plan Consommation flexible que dans certaines régions. Pour afficher la liste des régions qui prennent actuellement en charge les plans Consommation flexible :

  1. Si vous ne l’avez pas déjà fait, connectez-vous à Azure :

    az login
    

    La commande az login vous connecte à votre compte Azure.

  2. Utilisez la commande az functionapp list-flexconsumption-locations pour passer en revue la liste des régions qui prennent actuellement en charge Consommation flexible.

    az functionapp list-flexconsumption-locations --output table
    

Lorsque vous créez une application dans le portail Azure ou à l’aide de Visual Studio Code, les régions actuellement non prises en charge sont filtrées et ne figurent pas dans la liste des régions.