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 fournit des instructions pas à pas pour migrer vos applications de fonction existantes hébergées dans le plan Consommation dans Azure Functions pour utiliser plutôt le plan Flex Consumption.
La façon dont vous migrez votre application vers le plan Flex Consumption dépend de l’exécution de votre application sur Linux ou sur Windows. Veillez à sélectionner votre système d’exploitation en haut de l’article.
Conseil / Astuce
Azure Functions fournit des commandes Azure CLI dans az functionapp flex-migration qui automatisent la plupart des étapes requises pour transférer votre application Linux du plan de consommation au plan Flex Consumption. Cet article présente ces commandes, qui sont actuellement uniquement prises en charge pour les applications s’exécutant sur Linux.
Lorsque vous migrez vos applications serverless existantes, vos fonctions peuvent tirer parti de ces avantages du plan Flex Consumption :
- Performances améliorées : vos applications bénéficient d’une scalabilité améliorée et d’instances toujours prêtes pour réduire les impacts du démarrage à froid.
- Contrôles améliorés : ajustez vos fonctions avec la mise à l’échelle par fonction et les paramètres d’accès concurrentiel.
- Mise en réseau étendue : l’intégration de réseaux virtuels et les points de terminaison privés vous permettent d’exécuter vos fonctions dans des réseaux publics et privés.
- Investissement futur de plateforme : en tant que plan d'hébergement serverless supérieur, les investissements actuels et futurs sont effectués en priorité sur Flex Consumption pour la stabilité, les performances et les fonctionnalités de la plateforme.
Le plan Flex Consumption est l’option d’hébergement serverless recommandée pour vos fonctions à l’avenir. Pour plus d’informations, consultez les avantages du plan Flex Consumption. Pour obtenir une comparaison détaillée entre les plans d’hébergement, consultez les options d’hébergement d’Azure Functions.
Considérations
Avant de commencer une migration, gardez ces considérations à l’esprit :
Si vous exécutez des applications de fonction de plan Consommation dans les régions Azure Government, passez en revue ces conseils pour préparer la migration jusqu’à ce que Flex Consumption soit activé dans Azure Government.
En raison des différences significatives de configuration et de comportement entre les deux plans, vous ne pouvez pas déplacer une application de plan Consommation existante vers le plan Flex Consumption. Le processus de migration vous permet plutôt de créer une application de plan Flex Consumption équivalente à votre application actuelle. Cette nouvelle application s’exécute dans le même groupe de ressources et avec les mêmes dépendances que votre application actuelle.
Vous devez hiérarchiser la migration de vos applications qui s’exécutent dans un plan Consommation sur Linux.
Cet article part du principe que vous avez une compréhension générale des concepts et architectures de Functions et que vous connaissez bien les fonctionnalités de vos applications migrées. Ces concepts incluent les déclencheurs et les liaisons, l’authentification et la personnalisation réseau.
Cet article vous montre comment évaluer l’application actuelle et déployer votre nouvelle application de plan Flex Consumption à l’aide du portail Azure ou d’Azure CLI. Si votre déploiement d’application actuel est défini à l’aide de l’infrastructure en tant que code (IaC), vous pouvez généralement suivre les mêmes étapes. Vous pouvez effectuer les mêmes actions directement dans vos modèles ARM ou fichiers Bicep, avec ces considérations spécifiques aux ressources :
- Le plan Flex Consumption a introduit une nouvelle section dans le
Microsoft.Web/sitestype de ressource appeléfunctionAppConfig, qui contient la plupart des configurations qui étaient des paramètres d’application. Pour plus d’informations, consultez Dépréciations du plan Consommation flexible. - Vous trouverez les détails de configuration des ressources pour une application de plan Flex Consumption dans Automatiser le déploiement de ressources pour votre application de fonction dans Azure Functions.
- Functions gère un ensemble d’exemples de déploiement de plan Flex Consumption canoniques pour les modèles ARM, les fichiers Bicep et les fichiers Terraform.
- Le plan Flex Consumption a introduit une nouvelle section dans le
Conditions préalables
Accès à l’abonnement Azure contenant une ou plusieurs applications de fonction à migrer. Le compte utilisé pour exécuter des commandes Azure CLI doit être en mesure de :
- Créez et gérez des applications de fonction et des plans d’hébergement App Service.
- Attribuez des rôles à des identités managées.
- Créez et gérez des comptes de stockage.
- Créez et gérez des ressources Application Insights.
- Accédez à toutes les ressources dépendantes de votre application, telles qu’Azure Key Vault, Azure Service Bus ou Azure Event Hubs.
L’attribution des rôles Propriétaire ou Contributeur dans votre groupe de ressources fournit généralement des autorisations suffisantes.
Azure CLI, version v2.77.0 ou ultérieure. Les scripts sont testés à l’aide d’Azure CLI dans Azure Cloud Shell.
Extension resource-graph , que vous pouvez installer à l’aide de la
az extension addcommande :az extension add --name resource-graphL’outil
jq, utilisé pour utiliser la sortie JSON.
Identifier les applications potentielles à migrer
Utilisez ces étapes pour créer une liste des applications de fonction que vous devez migrer. Dans cette liste, notez leurs noms, groupes de ressources, emplacements et piles d’exécution. Vous pouvez ensuite répéter les étapes décrites dans ce guide pour chaque application que vous décidez de migrer vers le plan Flex Consumption.
La façon dont les informations d’application de fonction sont conservées dépend de l’exécution de votre application sur Linux ou Windows.
Pour les applications de consommation Linux, utilisez la nouvelle az functionapp flex-migration list commande pour identifier les applications éligibles à la migration :
az functionapp flex-migration list
Cette commande analyse automatiquement votre abonnement et retourne deux tableaux :
- eligible_apps : applications de consommation Linux qui peuvent être migrées vers Flex Consumption. Ces applications sont compatibles avec Flex Consumption.
- ineligible_apps : applications qui ne peuvent pas être migrées, ainsi que les raisons spécifiques pour lesquelles. Les raisons de l’incompatibilité doivent être examinées et traitées avant de continuer.
La sortie inclut le nom de l’application, le groupe de ressources, l’emplacement et la pile d’exécution pour chaque application, ainsi que les informations d’éligibilité et de préparation de la migration.
Utilisez cette az graph query commande pour répertorier toutes les applications de fonction de votre abonnement qui s’exécutent dans un plan Consommation :
az graph query -q "resources | where subscriptionId == '$(az account show --query id -o tsv)' \
| where type == 'microsoft.web/sites' | where ['kind'] == 'functionapp' | where properties.sku == 'Dynamic' \
| project name, location, resourceGroup" \
--query data --output table
Cette commande génère une table avec le nom, l’emplacement et le groupe de ressources de l’application pour toutes les applications Consommation s’exécutant sur Windows dans l’abonnement actuel.
Vous êtes invité à installer l’extension resource-graph, si elle n’est pas déjà installée.
Évaluer votre application existante
Avant de migrer vers le plan Flex Consumption, vous devez effectuer ces vérifications pour vous assurer que votre application de fonction peut être migrée correctement :
Confirmer la compatibilité des régions
Vérifiez que le plan Consommation flexible est actuellement pris en charge dans la même région que l’application plan Consommation que vous envisagez de migrer.
Confirmé: Lorsque la
az functionapp flex-migration listsortie de commande contient votre application dans laeligible_appsliste, le plan Flex Consumption est pris en charge dans la même région que celle utilisée par votre application De consommation Linux actuelle. Dans ce cas, vous pouvez continuer à vérifier la compatibilité du stack linguistique.
Action requise : Lorsque la sortie de
az functionapp flex-migration listcommande contient votre application dans laineligible_appsliste, un message d’erreur s’affiche indiquantThe site '<name>' is not in a region supported in Flex Consumption. Please see the list regions supported in Flex Consumption by running az functionapp list-flexconsumption-locations. Dans ce cas, le plan Flex Consumption n’est pas encore pris en charge dans la région utilisée par votre application de consommation Linux actuelle.
Utilisez cette az functionapp list-flexconsumption-locations commande pour répertorier toutes les régions où le plan Flex Consumption est disponible :
az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Cette commande génère une table des régions Azure où le plan Flex Consumption est actuellement pris en charge.
Si votre région n’est actuellement pas prise en charge et que vous choisissez toujours de migrer votre application de fonction, votre application doit s’exécuter dans une autre région où le plan Flex Consumption est pris en charge. Toutefois, l’exécution de votre application dans une autre région que d’autres services connectés peut introduire une latence supplémentaire. Assurez-vous que la nouvelle région peut répondre aux exigences de performances de votre application avant de terminer la migration.
Vérifier la compatibilité du stack linguistique
Les plans Flex Consumption ne prennent pas encore en charge toutes les piles de langage Functions. Ce tableau indique quelles piles de langage sont actuellement prises en charge :
| Paramètre de stack | Nom de la pile | Soutenu |
|---|---|---|
dotnet-isolated |
.NET (modèle Worker isolé) | ✅ Oui |
node |
JavaScript/TypeScript | ✅ Oui |
java |
Java | ✅ Oui |
python |
Python | ✅ Oui |
powershell |
PowerShell | ✅ Oui |
dotnet |
.NET (modèle in-process) | ❌ Non |
custom |
Gestionnaires personnalisés | ✅ Oui |
Confirmé: Si la
az functionapp flex-migration listcommande incluait votre application dans laeligible_appsliste, votre application Consommation Linux utilise déjà une pile de langues prise en charge par Flex Consumption et vous pouvez continuer à vérifier la compatibilité des versions de la pile.
Action requise : Si la
az functionapp flex-migration listcommande incluait votre application dans laineligible_appsliste avec un message d’erreur indiquantRuntime '<name>' not supported for function apps on the Flex Consumption plan.que votre application Consommation Linux n’exécute pas encore un runtime pris en charge par Flex Consumption.
Si votre application de fonction utilise une pile d’exécution non prise en charge :
- Pour les applications C# qui s’exécutent en cours avec le runtime (
dotnet), vous devez d’abord migrer votre application vers .NET isolée. Pour plus d’informations, consultez Migrer des applications C# du modèle in-process vers le modèle worker isolé.
Vérifier la compatibilité des versions de la pile
Avant de migrer, vous devez vous assurer que la version de la pile d’exécution de votre application est prise en charge lors de l’exécution dans un plan Flex Consumption dans la région actuelle.
Confirmé: Si la
az functionapp flex-migration listcommande incluait votre application dans laeligible_appsliste, votre application Consommation Linux utilise déjà une version de pile linguistique prise en charge par Flex Consumption et vous pouvez continuer à vérifier l’utilisation des emplacements de déploiement.
Action requise : Si la
az functionapp flex-migration listcommande incluait votre application dans laineligible_appsliste avec un message d’erreur indiquantInvalid version {0} for runtime {1} for function apps on the Flex Consumption plan. Supported versions for runtime {1} are {2}.que votre application Consommation Linux n’exécute pas encore un runtime pris en charge par Flex Consumption.
Utilisez cette commande az functionapp list-flexconsumption-runtimes pour vérifier la prise en charge du plan Consommation flexible pour votre version de la pile de langage dans une région spécifique :
az functionapp list-flexconsumption-runtimes --location <REGION> --runtime <LANGUAGE_STACK> --query '[].{version:version}' -o tsv
Dans cet exemple, remplacez <REGION> par votre région actuelle et <LANGUAGE_STACK> par l’une des valeurs suivantes :
| Pile de langages | Valeur |
|---|---|
| C# (modèle Worker isolé) | dotnet-isolated |
| Java | java |
| JavaScript | node |
| PowerShell | powershell |
| Python | python |
| TypeScript | node |
Cette commande affiche toutes les versions de la pile linguistique spécifiée prise en charge par le plan Flex Consumption dans votre région.
Si votre application de fonction utilise une version de pile linguistique non prise en charge, vous devez d’abord mettre à niveau votre code d’application vers une version prise en charge avant de migrer vers le plan Flex Consumption.
Vérifier l’utilisation des emplacements de déploiement
Les applications de plan de consommation peuvent avoir un emplacement de déploiement défini. Pour plus d’informations, consultez l’article Emplacements de déploiement Azure Functions. Toutefois, le plan Consommation flexible ne prend actuellement pas en charge les emplacements de déploiement. Avant de migrer, vous devez déterminer si votre application a un emplacement de déploiement. Si c'est le cas, vous devez établir une stratégie pour gérer votre application sans emplacements de déploiement lorsque vous opérez dans un plan de consommation flexible.
Confirmé: Lorsque votre application actuelle a activé les emplacements de déploiement, la
az functionapp flex-migration listcommande affiche votre application de fonction dans laeligible_appsliste sans avertissement, continuez à vérifier l’utilisation des certificats.
Action requise : Votre application actuelle a des emplacements de déploiement activés, la
az functionapp flex-migration listcommande affiche votre application de fonction dans laeligible_appsliste, mais ajoute un avertissement qui indique :The site '<name>' has slots configured. This will not block migration, but please note that slots are not supported in Flex Consumption.
Utilisez cette az functionapp deployment slot list commande pour répertorier les emplacements de déploiement définis dans votre application de fonction :
az functionapp deployment slot list --name <APP_NAME> --resource-group <RESOURCE_GROUP> --output table
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement. Si la commande retourne une entrée, les emplacements de déploiement de votre application sont activés.
Si votre application de fonction utilise actuellement des emplacements de déploiement, vous ne pouvez pas reproduire cette fonctionnalité dans le plan Consommation flexible. Avant de migrer, vous devez :
- Envisagez de réarchitecturer votre application pour utiliser des applications de fonction distinctes. De cette façon, vous pouvez développer, tester et déployer votre code de fonction sur une deuxième application hors production au lieu d’utiliser des emplacements ou
- Migrez tout nouveau code ou fonctionnalité de l’emplacement de déploiement vers l’emplacement principal (production).
Vérifier l’utilisation des certificats
Les certificats TLS (Transport Layer Security), précédemment appelés certificats SSL (Secure Sockets Layer), sont utilisés pour sécuriser les connexions Internet. Les certificats TSL/SSL, qui incluent des certificats managés, des certificats BYOC (bring-your-own certificates) ou des certificats de clé publique, ne sont actuellement pas pris en charge par le plan Flex Consumption.
Confirmé : Si la
az functionapp flex-migration listcommande a inclus votre application dans laeligible_appsliste, votre application Linux Consommation n’utilise déjà pas de certificats et vous pouvez continuer à vérifier vos déclencheurs de stockage d'objets Blob.
Action requise : Si la
az functionapp flex-migration listcommande incluait votre application dans laineligible_appsliste avec un message d’erreur indiquantThe site '<name>' is using TSL/SSL certificates. TSL/SSL certificates are not supported in Flex Consumption.ouThe site '<name>' has the WEBSITE_LOAD_CERTIFICATES app setting configured. Certificate loading is not supported in Flex Consumption., votre application Consommation Linux n’est pas encore compatible avec Flex Consumption.
Utilisez la az webapp config ssl list commande pour répertorier les certificats TSL/SSL disponibles pour votre application de fonction :
az webapp config ssl list --resource-group <RESOURCE_GROUP>
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources. Si cette commande produit une sortie, votre application utilise probablement des certificats.
Si votre application s’appuie actuellement sur des certificats TSL/SSL, vous ne devez pas poursuivre la migration tant que la prise en charge des certificats n’est pas ajoutée au plan Flex Consumption.
Vérifier vos déclencheurs de stockage blob
Actuellement, le plan Consommation flexible prend uniquement en charge les déclencheurs basés sur les événements pour le stockage Blob Azure, qui sont définis à l’aide du paramètre Source avec la valeur EventGrid. Les déclencheurs de stockage blob qui utilisent l’interrogation de conteneurs et utilisent un paramètre Source avec la valeur LogsAndContainerScan ne sont pas pris en charge dans Consommation flexible. Étant donné que l’interrogation de conteneur est la valeur par défaut, vous devez déterminer si l’un de vos déclencheurs de stockage blob utilise le paramètre source par défaut LogsAndContainerScan. Pour plus d’informations, consultez Déclencheur sur un conteneur d’objets blob.
Confirmé: Si la commande
az functionapp flex-migration lista inclus votre application dans la listeeligible_apps, votre application Consommation Linux n’utilise déjà plus de déclencheurs de stockage d’objets blob avecEventGridcomme source. Vous pouvez continuer à prendre en compte les services dépendants.
Action requise : Si la
az functionapp flex-migration listcommande incluait votre application dans laineligible_appsliste avec un message d’erreur indiquantThe site '<name>' has blob storage trigger(s) that don't use Event Grid as the source: <list> Flex Consumption only supports Event Grid-based blob triggers. Please convert these triggers to use Event Grid or replace them with Event Grid triggers before migration.que votre application Consommation Linux n’est pas encore compatible avec Flex Consumption.
Utilisez cette commande [az functionapp function list] pour déterminer si votre application a des déclencheurs de stockage d’objets blob qui n’utilisent pas Event Grid comme source :
az functionapp function list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
--query "[?config.bindings[0].type=='blobTrigger' && config.bindings[0].source!='EventGrid'].{Function:name,TriggerType:config.bindings[0].type,Source:config.bindings[0].source}" \
--output table
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement. Si la commande retourne des lignes, il existe au moins un déclencheur utilisant l’interrogation de conteneurs dans votre application de fonction.
Si votre application comporte des déclencheurs de stockage Blob sans source Event Grid, vous devez passer à une source Event Grid avant de migrer vers le plan Flex Consumption.
Les étapes de base pour modifier un déclencheur de stockage Blob existant en source Event Grid sont les suivantes :
Ajoutez ou mettez à jour la propriété
sourcedans votre définition de déclencheur de Blob storage àEventGridet redéployez ensuite l’application.Générez l’URL du point de terminaison dans votre application de fonction utilisée par l’abonnement aux événements.
Créez une souscription à des événements sur votre conteneur de stockage d’objets blob.
Pour plus d’informations, consultez le Tutoriel : Déclencher Azure Functions sur des conteneurs d’objets blob à l’aide d’un abonnement aux événements.
Prendre en compte les services dépendants
Étant donné qu’Azure Functions est un service de calcul, vous devez prendre en compte l’effet de la migration sur les données et les services en amont et en aval de votre application.
Stratégies de protection des données
Voici quelques stratégies pour protéger les données en amont et en aval pendant la migration :
- Idempotency : assurez-vous que vos fonctions peuvent traiter en toute sécurité le même message plusieurs fois sans effets secondaires négatifs. Pour plus d’informations, consultez Conception d’Azure Functions pour une entrée identique.
- Journalisation et surveillance : activez la journalisation détaillée dans les deux applications pendant la migration pour suivre le traitement des messages. Pour plus d’informations, consultez Surveiller les exécutions dans Azure Functions.
- Point de contrôle : pour les déclencheurs de streaming, tels que le déclencheur Event Hubs, implémentez des comportements de point de contrôle corrects pour suivre la position de traitement. Pour plus d’informations, consultez le traitement d'événements fiable avec Azure Functions.
- Traitement parallèle : envisagez d’exécuter temporairement les deux applications en parallèle pendant le basculement. Veillez à surveiller et valider soigneusement la façon dont les données sont traitées à partir du service en amont. Pour en savoir plus, consultez le modèle actif-actif pour les fonctions déclenchées en dehors du protocole HTTPS.
- Basculement progressif : pour les systèmes à volume élevé, envisagez d’implémenter un basculement progressif en redirigeant les parties du trafic vers la nouvelle application. Vous pouvez gérer le routage des requêtes en amont à partir de vos applications à l’aide de services tels que Gestion des API Azure ou Azure Application Gateway.
Atténuations par type de déclencheur
Vous devez planifier des stratégies d’atténuation pour protéger les données des déclencheurs de fonction spécifiques que vous pouvez avoir dans votre application :
| Déclencheur | Risque pour les données | Stratégie |
|---|---|---|
| Azure Blob Storage | Élevé | Créez un conteneur distinct pour le déclencheur basé sur les événements dans la nouvelle application. Avec la nouvelle application en cours d'exécution, basculez les clients vers le nouveau conteneur. Autorisez le traitement complet du conteneur d’origine avant d’arrêter l’ancienne application. |
| Azure Cosmos DB | Élevé | Créez un conteneur de bail dédié spécifiquement pour la nouvelle application. Définissez ce nouveau conteneur de bail comme configuration leaseCollectionName dans votre nouvelle application.Nécessite que vos fonctions soient idempotentes ou que vous devez être en mesure de gérer les résultats du traitement des flux de modification en double. Définissez la configuration StartFromBeginning sur false dans la nouvelle application pour éviter de retraiter l’intégralité du flux. |
| Azure Event Grid | Moyenne | Recréez le même abonnement aux événements dans la nouvelle application. Nécessite que vos fonctions soient idempotentes ou que vous devez être en mesure de gérer les résultats du traitement des événements en double. |
| Azure Event Hubs | Moyenne | Créez un groupe de consommateurs à utiliser par la nouvelle application. Pour plus d’informations, consultez Stratégies de migration pour les déclencheurs Event Grid. |
| Azure Service Bus | Élevé | Créez une rubrique ou une file d’attente à utiliser par la nouvelle application. Mettez à jour les expéditeurs et les clients pour utiliser la nouvelle rubrique ou la nouvelle file d’attente. Une fois la rubrique d’origine vide, arrêtez l’ancienne application. |
| File d’attente de stockage Azure | Élevé | Créez une file d’attente à utiliser par la nouvelle application. Mettez à jour les expéditeurs et les clients pour utiliser la nouvelle file d’attente. Une fois la file d’attente d’origine vide, arrêtez l’ancienne application. |
| HTTP | Faible | N’oubliez pas de changer de client et d’autres applications ou services pour cibler les nouveaux points de terminaison HTTP après la migration. |
| Minuteur | Faible | Pendant le basculement, veillez à décaler la planification du minuteur entre les deux applications pour éviter les exécutions simultanées des deux applications. Désactivez le déclencheur du minuteur dans l’ancienne application après l’exécution réussie de la nouvelle application. |
Démarrer la migration pour Linux
La commande az functionapp flex-migration start collecte automatiquement les informations de configuration de l’application et crée une application Flex Consumption avec les mêmes configurations que l’application source. Utilisez la commande comme indiqué dans cet exemple :
az functionapp flex-migration start \
--source-name <SOURCE_APP_NAME> \
--source-resource-group <SOURCE_RESOURCE_GROUP> \
--name <NEW_APP_NAME> \
--resource-group <RESOURCE_GROUP>
Dans cet exemple, remplacez ces espaces réservés par les valeurs indiquées :
| Espace réservé | Valeur |
|---|---|
<SOURCE_APP_NAME> |
Nom de votre application d’origine. |
<SOURCE_RESOURCE_GROUP> |
Groupe de ressources de l’application d’origine. |
<NEW_APP_NAME> |
Nom de la nouvelle application. |
<RESOURCE_GROUP> |
Groupe de ressources de la nouvelle application. |
La az functionapp flex-migration start commande effectue ces tâches de base :
- Évalue votre application source pour la compatibilité avec le plan d’hébergement Flex Consumption.
- Crée une application de fonction dans le plan Consommation flexible.
- Migre la plupart des configurations, notamment les paramètres d’application, les affectations d’identité, les montages de stockage, les paramètres CORS, les domaines personnalisés et les restrictions d’accès.
Options de commande
La commande de migration prend en charge plusieurs options pour personnaliser la migration :
| Choix | Descriptif |
|---|---|
--storage-account |
Spécifier un autre compte de stockage pour la nouvelle application |
--maximum-instance-count |
Définir le nombre maximal d’instances pour la mise à l’échelle |
--skip-access-restrictions |
Ignorer la migration des restrictions d’accès IP |
--skip-cors |
Ignorer la migration des paramètres CORS |
--skip-hostnames |
Ignorer la migration de domaines personnalisés |
--skip-managed-identities |
Ignorer la migration des configurations d’identité managée |
--skip-storage-mount |
Ignorer la migration des configurations de montage de stockage |
Pour obtenir des options de commande complètes, utilisez az functionapp flex-migration start --help.
Une fois l’exécution az functionapp flex-migration start terminée, continuez à obtenir le package de déploiement de code.
Tâches de prémigration
Avant de poursuivre la migration, vous devez collecter des informations clés sur les ressources utilisées par votre application de plan Consommation pour vous aider à effectuer une transition fluide vers l’exécution dans le plan Flex Consumption.
Vous devez effectuer ces tâches avant de migrer votre application pour qu’elle s’exécute dans un plan Flex Consumption :
Collecter les paramètres de l’application
Si vous prévoyez d'utiliser les mêmes sources de déclencheur, de liaison et d'autres réglages à partir des paramètres d'application, vous devez d'abord noter les paramètres actuels de l'application dans votre application existante du plan Consommation.
Utilisez cette az functionapp config appsettings list commande pour retourner un objet qui contient le paramètre d’application app_settings existant en tant que JSON :
app_settings=$(az functionapp config appsettings list --name `<APP_NAME>` --resource-group `<RESOURCE_GROUP>`)
echo $app_settings
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement.
Avertissement
Les paramètres d’application contiennent fréquemment des clés et d’autres secrets partagés. Stockez toujours les paramètres des applications en toute sécurité, idéalement chiffrés. Pour améliorer la sécurité, vous devez utiliser l’authentification Microsoft Entra ID avec des identités managées dans la nouvelle application de plan Flex Consumption au lieu de secrets partagés.
Collecter des configurations d’application
Il existe d’autres configurations d’application introuvables dans les paramètres de l’application. Vous devez également capturer ces configurations à partir de votre application existante afin de pouvoir être sûr de les recréer correctement dans la nouvelle application.
Passez en revue ces paramètres. Si l’un d’eux existe dans l’application actuelle, vous devez décider s’ils doivent également être recréés dans la nouvelle application de plan Flex Consumption :
| Paramétrage | Réglage | Commentaire |
|---|---|---|
| Paramètres CORS | cors |
Détermine les paramètres CORS (Cross-Origin Resource Sharing) existants, dont vos clients peuvent avoir besoin. |
| Domaines personnalisés | Si votre application utilise actuellement un domaine autre que *.azurewebsites.net, vous devez remplacer cette association de domaine personnalisée par une association avec votre nouvelle application. |
|
| Version HTTP | http20Enabled |
Détermine si HTTP 2.0 est requis par votre application. |
| HTTPS uniquement | httpsOnly |
Détermine si TSL/SSL est requis pour accéder à votre application. |
| Certificats clients entrants | clientCertEnabledclientCertModeclientCertExclusionPaths |
Définit les conditions requises pour les demandes clientes qui utilisent des certificats pour l’authentification. |
| Limite maximale de scale-out | WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT |
Définit la limite des instances avec montée en charge. La valeur maximale par défaut est 200. Cette valeur se trouve dans les paramètres de votre application, mais dans une application de plan Flex Consumption, elle est ajoutée en tant que paramètre de site (maximumInstanceCount). |
| Version TLS entrante minimale | minTlsVersion |
Définit une version minimale de TLS requise par votre application. |
| Chiffrement TLS entrant minimal | minTlsCipherSuite |
Définit une exigence minimale de chiffrement TLS pour votre application. |
| Partages Azure Files montés | azureStorageAccounts |
Détermine si des partages de fichiers montés explicitement existent dans votre application (Linux uniquement). |
| Informations d’identification de publication d’authentification de base SCM | scm.allow |
Détermine si le scm site de publication est activé. Bien qu’il ne soit pas recommandé pour la sécurité, certaines méthodes de publication l’exigent. |
Utilisez ce script pour obtenir les configurations d’application pertinentes de votre application existante :
# Set the app and resource group names
appName=<APP_NAME>
rgName=<RESOURCE_GROUP>
echo "Getting commonly used site settings..."
az functionapp config show --name $appName --resource-group $rgName \
--query "{http20Enabled:http20Enabled, httpsOnly:httpsOnly, minTlsVersion:minTlsVersion, \
minTlsCipherSuite:minTlsCipherSuite, clientCertEnabled:clientCertEnabled, \
clientCertMode:clientCertMode, clientCertExclusionPaths:clientCertExclusionPaths}"
echo "Checking for SCM basic publishing credentials policies..."
az resource show --resource-group $rgName --name scm --namespace Microsoft.Web \
--resource-type basicPublishingCredentialsPolicies --parent sites/$appName --query properties
echo "Checking for the maximum scale-out limit configuration..."
az functionapp config appsettings list --name $appName --resource-group $rgName \
--query "[?name=='WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT'].value" -o tsv
echo "Checking for any file share mount configurations..."
az webapp config storage-account list --name $appName --resource-group $rgName
echo "Checking for any custom domains..."
az functionapp config hostname list --webapp-name $appName --resource-group $rgName --query "[?contains(name, 'azurewebsites.net')==\`false\`]" --output table
echo "Checking for any CORS settings..."
az functionapp cors show --name $appName --resource-group $rgName
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement. Si l’un des paramètres de site ou les vérifications retournent des valeurs non null, notez-les.
Identifier les identités managées et l’accès en fonction du rôle
Avant de migrer, vous devez documenter si votre application s’appuie sur l’identité managée affectée par le système ou sur les identités managées affectées par l’utilisateur. Vous devez également déterminer les autorisations de contrôle d’accès en fonction du rôle (RBAC) accordées à ces identités. Vous devez recréer l’identité managée affectée par le système et toutes les attributions de rôles dans votre nouvelle application. Vous devriez pouvoir réutiliser les identités gérées par l’utilisateur dans votre nouvelle application.
Ce script vérifie à la fois l’identité managée affectée par le système et les identités managées affectées par l’utilisateur associées à votre application :
appName=<APP_NAME>
rgName=<RESOURCE_GROUP>
echo "Checking for a system-assigned managed identity..."
systemUserId=$(az functionapp identity show --name $appName --resource-group $rgName --query "principalId" -o tsv)
if [[ -n "$systemUserId" ]]; then
echo "System-assigned identity principal ID: $systemUserId"
echo "Checking for role assignments..."
az role assignment list --assignee $systemUserId --all
else
echo "No system-assigned identity found."
fi
echo "Checking for user-assigned managed identities..."
userIdentities=$(az functionapp identity show --name $appName --resource-group $rgName --query 'userAssignedIdentities' -o json)
if [[ "$userIdentities" != "{}" && "$userIdentities" != "null" ]]; then
echo "$userIdentities" | jq -c 'to_entries[]' | while read -r identity; do
echo "User-assigned identity name: $(echo "$identity" | jq -r '.key' | sed 's|.*/userAssignedIdentities/||')"
echo "Checking for role assignments..."
az role assignment list --assignee $(echo "$identity" | jq -r '.value.principalId') --all --output json
echo
done
else
echo "No user-assigned identities found."
fi
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement. Notez toutes les identités et leurs attributions de rôles.
Identifier les paramètres d’authentification intégrés
Avant de migrer vers Flex Consumption, vous devez collecter des informations sur toutes les configurations d’authentification intégrées. Si vous souhaitez que votre application utilise les mêmes comportements d’authentification client, vous devez les recréer dans la nouvelle application. Pour plus d’informations, consultez Authentification et autorisation dans Azure Functions.
Faites attention aux URI de redirection, aux redirections externes autorisées et aux paramètres de jeton pour garantir une transition fluide pour les utilisateurs authentifiés.
Utilisez cette az webapp auth show commande pour déterminer si l’authentification intégrée est configurée dans votre application de fonction :
az webapp auth show --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement. Passez en revue la sortie pour déterminer si l’authentification est activée et quels fournisseurs d’identité sont configurés.
Vous devez recréer ces paramètres dans votre nouvelle application après la migration afin que vos clients puissent conserver l’accès à l’aide de leur fournisseur préféré.
Passer en revue les restrictions d’accès entrant
Il est possible de définir des restrictions d’accès entrantes sur les applications dans un plan Consommation. Vous souhaiterez peut-être conserver ces restrictions dans votre nouvelle application. Pour chaque restriction définie, veillez à capturer ces propriétés :
- Adresses IP ou plages CIDR
- Valeurs de priorité
- Type d’action (Autoriser/Refuser)
- Noms des règles
Cette az functionapp config access-restriction show commande retourne une liste des restrictions d’accès basées sur IP existantes :
az functionapp config access-restriction show --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Dans cet exemple, remplacez <RESOURCE_GROUP> par le nom de votre groupe de ressources et <APP_NAME> par le nom de l'application, respectivement.
Lors de l’exécution dans le plan Flex Consumption, vous pouvez recréer ces restrictions ip entrantes. Vous pouvez sécuriser davantage votre application en implémentant d’autres restrictions réseau, telles que l’intégration de réseau virtuel et les points de terminaison privés entrants. Pour plus d’informations, consultez Intégration de réseau virtuel.
Obtenir le package de déploiement de code
Pour pouvoir redéployer votre application, vous devez disposer des fichiers sources de votre projet ou du package de déploiement. Dans l’idéal, vos fichiers projet sont conservés dans le contrôle de code source afin de pouvoir facilement redéployer le code de fonction dans votre nouvelle application. Si vous avez vos fichiers de code source, vous pouvez ignorer cette section et continuer à capturer des benchmarks de performances (facultatifs).
Si vous n’avez plus accès à vos fichiers sources de projet, vous pouvez télécharger le package de déploiement actuel à partir de l’application de plan Consommation existante dans Azure. L’emplacement du package de déploiement dépend de l’exécution sur Linux ou Windows.
Les applications de plan de consommation sur Linux gèrent le fichier de package zip de déploiement dans l’un des emplacements suivants :
Conteneur de stockage Blob Azure nommé
scm-releasesdans le compte de stockage hôte par défaut (AzureWebJobsStorage). Ce conteneur est la source de déploiement par défaut d’une application de plan Consommation sur Linux.Si votre application a un
WEBSITE_RUN_FROM_PACKAGEparamètre qui est une URL, le package se trouve dans un emplacement accessible en externe que vous gérez. Un paquet externe doit être hébergé dans un conteneur de stockage blob avec un accès restreint. Pour plus d’informations, consultez l’URL du package externe.
Conseil / Astuce
Si votre compte de stockage est limité à l’accès aux identités managées uniquement, vous devrez peut-être accorder à votre compte Azure l’accès en lecture au conteneur de stockage en l’ajoutant au Storage Blob Data Reader rôle.
Le package de déploiement est compressé à l’aide du squashfs format. Pour voir ce qui se trouve dans le package, vous devez utiliser des outils qui peuvent décompresser ce format.
Procédez comme suit pour télécharger le package de déploiement à partir de votre application actuelle :
Utilisez cette
az functionapp config appsettings listcommande pour obtenir le paramètre d’applicationWEBSITE_RUN_FROM_PACKAGE, le cas échéant :az functionapp config appsettings list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --query "[?name=='WEBSITE_RUN_FROM_PACKAGE'].value" -o tsvDans cet exemple, remplacez
<RESOURCE_GROUP>par le nom de votre groupe de ressources et<APP_NAME>par le nom de l'application, respectivement. Si cette commande retourne une URL, vous pouvez télécharger le fichier de package de déploiement à partir de cet emplacement distant et passer à la section suivante.Si la
WEBSITE_RUN_FROM_PACKAGEvaleur est1ou nulle, utilisez ce script pour obtenir le package de déploiement de l’application existante :appName=<APP_NAME> rgName=<RESOURCE_GROUP> echo "Getting the storage account connection string from app settings..." storageConnection=$(az functionapp config appsettings list --name $appName --resource-group $rgName \ --query "[?name=='AzureWebJobsStorage'].value" -o tsv) echo "Getting the package name..." packageName=$(az storage blob list --connection-string $storageConnection --container-name scm-releases \ --query "[0].name" -o tsv) echo "Download the package? $packageName? (Y to proceed, any other key to exit)" read -r answer if [[ "$answer" == "Y" || "$answer" == "y" ]]; then echo "Proceeding with download..." az storage blob download --connection-string $storageConnection --container-name scm-releases \ --name $packageName --file $packageName else echo "Exiting script." exit 0 fiEncore une fois, remplacez
<RESOURCE_GROUP>et<APP_NAME>par le nom de votre groupe de ressources et le nom de votre application. Le package .zip fichier est téléchargé dans le répertoire à partir duquel vous avez exécuté la commande.
L’emplacement de vos fichiers sources de projet dépend du WEBSITE_RUN_FROM_PACKAGE paramètre d’application comme suit :
valeur WEBSITE_RUN_FROM_PACKAGE |
Emplacement du fichier source |
|---|---|
1 |
Les fichiers se trouvent dans un package zip stocké dans le partage Azure Files du compte de stockage défini par le WEBSITE_CONTENTAZUREFILECONNECTIONSTRING paramètre. Le nom du partage de fichiers est défini par le WEBSITE_CONTENTSHARE paramètre. |
| URL de point de terminaison | Les fichiers se trouvent dans un package zip dans un emplacement accessible en externe que vous gérez. Un paquet externe doit être hébergé dans un conteneur de stockage blob avec un accès restreint. Pour plus d’informations, consultez l’URL du package externe. |
Utilisez cette
az functionapp config appsettings listcommande pour obtenir le paramètre d’applicationWEBSITE_RUN_FROM_PACKAGE, le cas échéant :az functionapp config appsettings list --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --query "[?name=='WEBSITE_RUN_FROM_PACKAGE'].value" -o tsvDans cet exemple, remplacez
<RESOURCE_GROUP>par le nom de votre groupe de ressources et<APP_NAME>par le nom de l'application, respectivement. Si cette commande retourne une URL, vous pouvez télécharger le fichier de package de déploiement à partir de cet emplacement distant et passer à la section suivante.Si la
WEBSITE_RUN_FROM_PACKAGEvaleur est1ou nulle, utilisez ce script pour obtenir le package de déploiement de l’application existante :appName=<APP_NAME> rgName=<RESOURCE_GROUP> echo "Getting the storage account connection string and file share from app settings..." json=$(az functionapp config appsettings list --name $appName --resource-group $rgName \ --query "[?name=='WEBSITE_CONTENTAZUREFILECONNECTIONSTRING' || name=='WEBSITE_CONTENTSHARE'].value" -o json) storageConnection=$(echo "$json" | jq -r '.[0]') fileShare=$(echo "$json" | jq -r '.[1]') echo "Getting the package name..." packageName=$(az storage file list --share-name $fileShare --connection-string $storageConnection \ --path "data/SitePackages" --query "[?ends_with(name, '.zip')] | sort_by(@, &properties.lastModified)[-1].name" \ -o tsv) echo "Download the package? $packageName? (Y to proceed, any other key to exit)" read -r answer if [[ "$answer" == "Y" || "$answer" == "y" ]]; then echo "Proceeding with download..." az storage file download --connection-string $storageConnection --share-name $fileShare \ --path "data/SitePackages/$packageName" else echo "Exiting script." exit 0 fiEncore une fois, remplacez
<RESOURCE_GROUP>et<APP_NAME>par le nom de votre groupe de ressources et le nom de votre application. Le package .zip fichier est téléchargé dans le répertoire à partir duquel vous avez exécuté la commande.
Capturer des benchmarks de performances (facultatif)
Si vous envisagez de valider l’amélioration des performances dans votre application en fonction de la migration vers le plan Flex Consumption, vous devez (éventuellement) capturer les benchmarks de performances de votre plan actuel. Vous pouvez ensuite les comparer aux mêmes benchmarks pour votre application s’exécutant dans un plan Flex Consumption pour la comparaison.
Conseil / Astuce
Comparez toujours les performances dans des conditions similaires, telles que le temps de jour, le jour de la semaine et la charge du client. Essayez d’exécuter les deux benchmarks aussi proches que possible.
Voici quelques points de référence à prendre en compte pour vos tests de performances structurés :
| Benchmark suggéré | Commentaire |
|---|---|
| Démarrage à froid | Mesurez l’heure de la première requête à la première réponse après une période d’inactivité. |
| Débit | Mesurez le nombre maximal de requêtes par seconde à l’aide d’outils de test de charge pour déterminer comment l’application gère les requêtes simultanées. |
| Latence | Suivez les temps de réponse de P50, P95 et P99 dans différentes conditions de charge. Vous pouvez surveiller ces métriques dans Application Insights. |
Vous pouvez utiliser cette requête Kusto pour passer en revue les temps de réponse de latence suggérés dans Application Insights :
requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart
Étapes de la migration
La migration de vos fonctions d’une application de plan Consommation vers une application de plan Flex Consumption suit les étapes principales suivantes :
Vérifier l’application Flex Consumption créée et configurée
Après avoir exécuté la commande az functionapp flex-migration start , vous devez vérifier que votre nouvelle application Flex Consumption a été créée correctement et correctement configurée. Voici quelques étapes pour valider les résultats de la migration :
Vérifiez que la nouvelle application existe et est en cours d’exécution :
az functionapp show --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \ --query "{name:name, kind:kind, sku:properties.sku}" --output tablePassez en revue les paramètres de l’application migrée :
az functionapp config appsettings list --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \ --output tableComparez ces paramètres à votre application source pour vous assurer que les configurations critiques ont été transférées.
Vérifiez la configuration de l’identité managée :
az functionapp identity show --name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP>Vérifiez que tous les domaines personnalisés ont été migrés :
az functionapp config hostname list --webapp-name <NEW_APP_NAME> --resource-group <RESOURCE_GROUP> \ --output table
Passer en revue le résumé de la migration
La commande de migration automatisée doit avoir transféré la plupart des configurations. Toutefois, vous devez vérifier manuellement que ces éléments n’ont pas été migrés et qu’ils doivent peut-être être configurés manuellement :
- Certificats : les certificats TSL/SSL ne sont pas encore pris en charge dans Flex Consumption
- Emplacements de déploiement : non pris en charge dans Flex Consumption
- Paramètres d’authentification intégrés : ceux-ci doivent être reconfigurés manuellement
- Paramètres CORS : peut avoir besoin d’une vérification manuelle en fonction de votre configuration
Si des paramètres critiques sont manquants ou incorrects, vous pouvez les configurer manuellement à l’aide des étapes décrites dans les sections du processus de migration Windows de cet article.
- Examen final du plan
- Créer une application dans le plan Flex Consumption
- Appliquer les paramètres d’application migrés dans la nouvelle application
- Appliquer d’autres configurations d’application
- Configurer les paramètres de mise à l’échelle et de concurrence
- Configurer tous les domaines personnalisés et l’accès CORS
- Configurer des identités managées et attribuer des rôles
- Configurer les restrictions d’accès réseau
- Activer la surveillance
- Configurer l’authentification intégrée
- Déployer votre code d’application sur la nouvelle application Flex Consumption
Examen final du plan
Avant de poursuivre le processus de migration, prenez un moment pour effectuer ces dernières étapes préparatoires :
Passez en revue toutes les informations collectées : passez en revue toutes les notes, les détails de configuration et les paramètres d’application que vous avez documentés dans les sections d’évaluation et de prémigration précédentes. Si quelque chose n’est pas clair, réexécutez les commandes Azure CLI ou obtenez les informations à partir du portail.
Définissez votre plan de migration : en fonction de vos résultats, créez une liste de contrôle pour votre migration qui met en évidence :
- Tous les paramètres qui ont besoin d’une attention particulière
- Déclencheurs et liaisons ou autres dépendances susceptibles d’être affectés pendant la migration
- Stratégie de test pour la validation post-migration
- Plan de retour arrière en cas de problèmes inattendus
Planification des temps d’arrêt : envisagez quand arrêter l’application de fonction d’origine pour éviter la perte de données et le traitement en double des événements, et comment cela peut affecter vos utilisateurs ou systèmes en aval. Dans certains cas, vous devrez peut-être désactiver des fonctions spécifiques avant d’arrêter l’ensemble de l’application.
Une révision finale minutieuse permet de garantir un processus de migration plus fluide et réduit le risque d’ignorer les configurations importantes.
Créer une application dans le plan Flex Consumption
Il existe différentes façons de créer une application de fonction dans le plan Flex Consumption, ainsi que d’autres ressources Azure requises :
| Créer une option | Articles de référence |
|---|---|
| Azure CLI (Interface de ligne de commande Azure) | Créer une application Flex Consumption |
| Portail Azure | Créer une application de fonction dans le portail Azure |
| Infrastructure en tant que code |
Modèle ARM azd Biceps Terraform |
| Visual Studio Code | Déploiement de Visual Studio Code |
| Visual Studio | Déploiement de Visual Studio |
Conseil / Astuce
Si possible, vous devez utiliser l’ID Microsoft Entra pour l’authentification au lieu de chaînes de connexion, qui contiennent des clés partagées. L’utilisation d’identités managées est une bonne pratique qui améliore la sécurité en éliminant la nécessité de stocker des secrets partagés directement dans les paramètres de l’application. Si votre application d’origine a utilisé des chaînes de connexion, le plan Flex Consumption est conçu pour prendre en charge les identités managées. La plupart de ces liens vous montrent comment activer des identités managées dans votre application de fonction.
Appliquer les paramètres d’application migrés dans la nouvelle application
Avant de déployer votre code, vous devez configurer la nouvelle application avec les paramètres d’application du plan Flex Consumption appropriés à partir de votre application de fonction d’origine.
Important
Tous les paramètres d’application du plan Consommation ne sont pas pris en charge lors de l’exécution dans un plan Flex Consumption. Pour plus d’informations, consultez Dépréciations du plan Consommation flexible.
Exécutez ce script qui effectue ces tâches :
- Obtient les paramètres d’application de l’ancienne application, en ignorant les paramètres qui ne s’appliquent pas dans un plan Flex Consumption ou qui existent déjà dans la nouvelle application.
- Écrit les paramètres collectés localement dans un fichier temporaire.
- Applique les paramètres du fichier à votre nouvelle application.
- Supprime le fichier temporaire.
sourceAppName=<SOURCE_APP_NAME>
destAppName=<DESTINATION_APP_NAME>
rgName=<RESOURCE_GROUP>
echo "Getting app settings from the old app..."
app_settings=$(az functionapp config appsettings list --name $sourceAppName --resource-group $rgName)
# Filter out settings that don't apply to Flex Consumption apps or that will already have been created
filtered_settings=$(echo "$app_settings" | jq 'map(select(
(.name | ascii_downcase) != "website_use_placeholder_dotnetisolated" and
(.name | ascii_downcase | startswith("azurewebjobsstorage") | not) and
(.name | ascii_downcase) != "website_mount_enabled" and
(.name | ascii_downcase) != "enable_oryx_build" and
(.name | ascii_downcase) != "functions_extension_version" and
(.name | ascii_downcase) != "functions_worker_runtime" and
(.name | ascii_downcase) != "functions_worker_runtime_version" and
(.name | ascii_downcase) != "functions_max_http_concurrency" and
(.name | ascii_downcase) != "functions_worker_process_count" and
(.name | ascii_downcase) != "functions_worker_dynamic_concurrency_enabled" and
(.name | ascii_downcase) != "scm_do_build_during_deployment" and
(.name | ascii_downcase) != "website_contentazurefileconnectionstring" and
(.name | ascii_downcase) != "website_contentovervnet" and
(.name | ascii_downcase) != "website_contentshare" and
(.name | ascii_downcase) != "website_dns_server" and
(.name | ascii_downcase) != "website_max_dynamic_application_scale_out" and
(.name | ascii_downcase) != "website_node_default_version" and
(.name | ascii_downcase) != "website_run_from_package" and
(.name | ascii_downcase) != "website_skip_contentshare_validation" and
(.name | ascii_downcase) != "website_vnet_route_all" and
(.name | ascii_downcase) != "applicationinsights_connection_string"
))')
echo "Settings to migrate..."
echo "$filtered_settings"
echo "Writing settings to a local a local file (app_settings_filtered.json)..."
echo "$filtered_settings" > app_settings_filtered.json
echo "Applying settings to the new app..."
output=$(az functionapp config appsettings set --name $destAppName --resource-group $rgName --settings @app_settings_filtered.json)
echo "Deleting the temporary settings file..."
rm -rf app_settings_filtered.json
echo "Current app settings in the new app..."
az functionapp config appsettings list --name $destAppName --resource-group $rgName
Dans cet exemple, remplacez <RESOURCE_GROUP>, <SOURCE_APP_NAME>et <DEST_APP_NAME> par le nom de votre groupe de ressources et l’ancien nom d’une nouvelle application, respectivement. Ce script suppose que les deux applications se trouvent dans le même groupe de ressources.
Appliquer d’autres configurations d’application
Recherchez la liste des autres configurations d’application de votre ancienne application que vous avez collectée lors de la prémigration et définissez-les également dans la nouvelle application.
Dans ce script, définissez la valeur pour n'importe quelle configuration dans l'application originale et commentez les lignes de commande pour toute configuration non définie (null) :
appName=<APP_NAME>
rgName=<RESOURCE_GROUP>
http20Setting=<YOUR_HTTP_20_SETTING>
minTlsVersion=<YOUR_TLS_VERSION>
minTlsCipher=<YOUR_TLS_CIPHER>
httpsOnly=<YOUR_HTTPS_ONLY_SETTING>
certEnabled=<CLIENT_CERT_ENABLED>
certMode=<YOUR_CLIENT_CERT_MODE>
certExPaths=<CERT_EXCLUSION_PATHS>
scmAllowBasicAuth=<ALLOW_SCM_BASIC_AUTH>
# Apply HTTP version and minimum TLS settings
az functionapp config set --name $appName --resource-group $rgName --http20-enabled $http20Setting
az functionapp config set --name $appName --resource-group $rgName --min-tls-version $minTlsVersion
# Apply the HTTPS-only setting
az functionapp update --name $appName --resource-group $rgName --set HttpsOnly=$httpsOnly
# Apply incoming client cert settings
az functionapp update --name $appName --resource-group $rgName --set clientCertEnabled=$certEnabled
az functionapp update --name $appName --resource-group $rgName --set clientCertMode=$certMode
az functionapp update --name $appName --resource-group $rgName --set clientCertExclusionPaths=$certExPaths
# Apply the TLS cipher suite setting
az functionapp update --name $appName --resource-group $rgName --set minTlsCipherSuite=$minTlsCipher
# Apply the allow scm basic auth configuration
az resource update --resource-group $rgName --name scm --namespace Microsoft.Web --resource-type basicPublishingCredentialsPolicies \
--parent sites/$appName --set properties.allow=$scmAllowBasicAuth
Dans cet exemple, remplacez <RESOURCE_GROUP> et <APP_NAME> par, respectivement, les noms de votre groupe de ressources et de votre application de fonction. Remplacez également les espaces réservés de toutes les définitions de variables pour les paramètres existants que vous souhaitez recréer dans la nouvelle application, et commentez les paramètres null.
Configurer les paramètres de mise à l’échelle et de concurrence
Le plan Flex Consumption implémente la mise à l’échelle par fonction, où chaque fonction au sein de votre application peut être mise à l’échelle indépendamment en fonction de sa charge de travail. La mise à l’échelle est également plus strictement liée aux paramètres d’accès concurrentiel, qui sont utilisés pour prendre des décisions de mise à l’échelle en fonction des exécutions simultanées actuelles. Pour en savoir plus, consultez les sections Mise à l’échelle par fonction et Concurrence de l’article sur le plan Consommation flexible.
Envisagez d’abord les paramètres d’accès concurrentiel si vous souhaitez que votre nouvelle application soit mise à l’échelle de la même façon que votre application d’origine. La définition de valeurs d’accès concurrentiel plus élevées peut entraîner la création de moins d’instances pour gérer la même charge.
Si vous aviez une limite de scale-out personnalisée définie dans votre application d’origine, vous pouvez également l’appliquer à votre nouvelle application. Sinon, vous pouvez passer à la section suivante.
Le nombre d’instances maximal par défaut est 100 et doit être défini sur une valeur de 40 ou supérieure.
Utilisez cette az functionapp scale config set commande pour définir le scale-out maximal.
az functionapp scale config set --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
--maximum-instance-count <MAX_SCALE_SETTING>
Dans cet exemple, remplacez <RESOURCE_GROUP> et <APP_NAME> par, respectivement, les noms de votre groupe de ressources et de votre application de fonction. Remplacez <MAX_SCALE_SETTING> par la valeur d’échelle maximale que vous définissez.
Configurer tous les domaines personnalisés et l’accès CORS
Si votre application d’origine avait des domaines personnalisés liés ou des paramètres CORS définis, recréez-les dans votre nouvelle application. Pour plus d’informations sur les domaines personnalisés, consultez Configurer un domaine personnalisé existant dans Azure App Service.
Utilisez cette
az functionapp config hostname addcommande pour rebiner les mappages de domaine personnalisés à votre application :az functionapp config hostname add --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --hostname <CUSTOM_DOMAIN>Dans cet exemple, remplacez
<RESOURCE_GROUP>et<APP_NAME>par, respectivement, les noms de votre groupe de ressources et de votre application de fonction. Remplacez par<CUSTOM_DOMAIN>votre nom de domaine personnalisé.Utilisez cette
az functionapp cors addcommande pour remplacer les paramètres CORS :az functionapp cors add --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --allowed-origins <ALLOWED_ORIGIN_1> <ALLOWED_ORIGIN_2> <ALLOWED_ORIGIN_N>Dans cet exemple, remplacez
<RESOURCE_GROUP>et<APP_NAME>par, respectivement, les noms de votre groupe de ressources et de votre application de fonction. Remplacez<ALLOWED_ORIGIN_*>par vos origines autorisées.
Configurer des identités managées et attribuer des rôles
La façon dont vous configurez des identités managées dans votre nouvelle application dépend du type d’identité managée :
| Type d'identité managée | Créer une identité | Attributions de rôles |
|---|---|---|
| Affecté par l’utilisateur | Optionnel | Vous pouvez continuer à utiliser les mêmes identités managées affectées par l’utilisateur avec la nouvelle application. Vous devez réaffecter ces identités à votre application Flex Consumption et vérifier qu’elles ont toujours les attributions de rôles correctes dans les services distants. Si vous choisissez de créer des identités pour la nouvelle application, vous devez attribuer les mêmes rôles que les identités existantes. |
| Attribué par le système | Oui | Étant donné que chaque application de fonction possède sa propre identité managée affectée par le système, vous devez activer l’identité managée affectée par le système dans la nouvelle application et réaffecter les mêmes rôles que dans l’application d’origine. |
La recréation correcte des attributions de rôles est essentielle pour garantir que votre application de fonction a le même accès aux ressources Azure après la migration.
Conseil / Astuce
Si votre application d’origine a utilisé des chaînes de connexion ou d’autres secrets partagés pour l’authentification, il s’agit d’une excellente occasion d’améliorer la sécurité de votre application en passant à l’authentification Microsoft Entra ID avec des identités managées. Pour plus d’informations, consultez Tutoriel : Créer une application de fonction qui se connecte aux services Azure à l’aide d’identités plutôt que de secrets.
Utilisez cette
az functionapp identity assigncommande pour activer l’identité managée affectée par le système dans votre nouvelle application :az functionapp identity assign --name <APP_NAME> --resource-group <RESOURCE_GROUP>Dans cet exemple, remplacez
<RESOURCE_GROUP>et<APP_NAME>par, respectivement, les noms de votre groupe de ressources et de votre application de fonction.Utilisez ce script pour obtenir l’ID principal de l’identité affectée par le système et l’ajouter aux rôles requis :
# Get the principal ID of the system identity principalId=$(az functionapp identity show --name <APP_NAME> --resource-group <RESOURCE_GROUP> \ --query principalId -o tsv) # Assign a role in a specific resource (scope) to the system identity az role assignment create --assignee $principalId --role "<ROLE_NAME>" --scope "<RESOURCE_ID>"Dans cet exemple, remplacez
<RESOURCE_GROUP>et<APP_NAME>par, respectivement, les noms de votre groupe de ressources et de votre application de fonction. Remplacez<ROLE_NAME>et<RESOURCE_ID>par le nom du rôle et la ressource spécifique que vous avez capturés à partir de l’application d’origine.Répétez les commandes précédentes pour chaque rôle requis par la nouvelle application.
Configurer les restrictions d’accès réseau
Si votre application d’origine avait des restrictions d’accès entrant basées sur IP, vous pouvez recréer l’une des mêmes règles d’accès entrantes que vous souhaitez conserver dans votre nouvelle application.
Conseil / Astuce
Le plan Flex Consumption prend entièrement en charge l’intégration du réseau virtuel. En raison de cela, vous avez également la possibilité d’utiliser des points de terminaison privés entrants après la migration. Pour plus d’informations, consultez Points de terminaison privés.
Utilisez cette az functionapp config access-restriction add commande pour chaque restriction d’accès IP que vous souhaitez répliquer dans la nouvelle application :
az functionapp config access-restriction add --name <APP_NAME> --resource-group <RESOURCE_GROUP> \
--rule-name <RULE_NAME> --action Deny --ip-address <IP_ADDRESS> --priority <PRIORITY>
Dans cet exemple, remplacez ces espaces réservés par les valeurs de votre application d’origine :
| Espace réservé | Valeur |
|---|---|
<APP_NAME> |
Nom de votre application de fonction. |
<RESOURCE_GROUP> |
Votre groupe de ressources. |
<RULE_NAME> |
Nom convivial de la règle IP. |
<Priority> |
Priorité de l’exclusion. |
<IP_Address> |
Adresse IP à exclure. |
Exécutez cette commande pour chaque restriction IP documentée de l’application d’origine.
Activer la supervision
Avant de démarrer votre nouvelle application dans le plan Flex Consumption, vérifiez que Application Insights est activé. La configuration d’Application Insights vous aide à résoudre les problèmes qui peuvent se produire pendant le déploiement et le démarrage du code.
Implémentez une stratégie de supervision complète qui couvre les métriques d’application, les journaux et les coûts. En utilisant une telle stratégie, vous pouvez valider la réussite de votre migration, identifier les problèmes rapidement et optimiser les performances et le coût de votre nouvelle application.
Si vous envisagez de comparer cette nouvelle application à votre application actuelle, assurez-vous que votre schéma collecte également les benchmarks requis pour la comparaison. Pour plus d’informations, consultez Configurer la surveillance.
Configurer une authentification intégrée
Si votre application d’origine a utilisé l’authentification cliente intégrée (parfois appelée authentification simple), vous devez la recréer dans votre nouvelle application. Si vous envisagez de réutiliser le même enregistrement client, veillez à définir les points de terminaison authentifiés de la nouvelle application dans le fournisseur d'authentification.
En fonction des informations que vous avez collectées précédemment, utilisez la az webapp auth update commande pour recréer chaque inscription d’authentification intégrée requise par votre application.
Déployer votre code d’application sur la nouvelle application Flex Consumption
Avec votre nouvelle application de plan Flex Consumption entièrement configurée en fonction des paramètres de l’application d’origine, il est temps de déployer votre code sur les nouvelles ressources d’application dans Azure.
Avertissement
Une fois le déploiement réussi, les déclencheurs de votre nouvelle application démarrent immédiatement le traitement des données à partir des services connectés. Pour réduire les données dupliquées et empêcher la perte de données lors du démarrage de la nouvelle application et arrêter l’application d’origine, vous devez passer en revue les stratégies que vous avez définies dans les atténuations par type de déclencheur.
Functions fournit plusieurs façons de déployer votre code, soit à partir du projet de code, soit en tant que package de déploiement prêt à l’exécution.
Conseil / Astuce
Si votre code de projet est conservé dans un référentiel de code source, il est maintenant le moment idéal pour configurer un pipeline de déploiement continu. Le déploiement continu vous permet de déployer automatiquement des mises à jour d’application en fonction des modifications apportées à un référentiel connecté.
Vous devez mettre à jour vos flux de travail de déploiement existants pour déployer votre code source sur votre nouvelle application :
Vous pouvez également créer un flux de travail de déploiement continu pour votre nouvelle application. Pour plus d’informations, consultez Déploiement continu pour Azure Functions
Tâches post-migration
Après une migration réussie, vous devez effectuer ces tâches de suivi :
Vérifier les fonctionnalités de base
Vérifiez que la nouvelle application s’exécute dans un plan Flex Consumption :
Utilisez cette
az functionapp showcommande deux pour afficher les détails sur le plan d’hébergement :az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query "serverFarmId"Dans cet exemple, remplacez
<RESOURCE_GROUP>et<APP_NAME>par, respectivement, les noms de votre groupe de ressources et de votre application de fonction.Utilisez un client HTTP pour appeler au moins un point de terminaison de déclencheur HTTP sur votre nouvelle application pour vous assurer qu’elle répond comme prévu.
Capturer des mesures de performances
Avec votre nouvelle application en cours d’exécution, vous pouvez exécuter les mêmes benchmarks de performances que ceux que vous avez collectés à partir de votre application d’origine, par exemple :
| Benchmark suggéré | Commentaire |
|---|---|
| Démarrage à froid | Mesurez l’heure de la première requête à la première réponse après une période d’inactivité. |
| Débit | Mesurez le nombre maximal de requêtes par seconde à l’aide d’outils de test de charge pour déterminer comment l’application gère les requêtes simultanées. |
| Latence | Suivez les temps de réponse de P50, P95 et P99 dans différentes conditions de charge. Vous pouvez surveiller ces métriques dans Application Insights. |
Vous pouvez utiliser cette requête Kusto pour passer en revue les temps de réponse de latence suggérés dans Application Insights :
requests
| where timestamp > ago(1d)
| summarize percentiles(duration, 50, 95, 99) by bin(timestamp, 1h)
| render timechart
Remarque
Les métriques du plan Flex Consumption diffèrent des métriques du plan consommation. Lorsque vous comparez les performances avant et après la migration, gardez à l’esprit que vous devez utiliser différentes métriques pour suivre des caractéristiques de performances similaires. Pour plus d’informations, consultez Configurer la surveillance.
Créer des tableaux de bord personnalisés
Les métriques Azure Monitor et Application Insights vous permettent de créer des tableaux de bord dans le portail Azure qui affichent des graphiques à partir des métriques de plateforme et des journaux d’activité d’exécution et d’analytique.
Envisagez de configurer des tableaux de bord et des alertes sur vos métriques clés dans le portail Azure. Pour plus d’informations, consultez Surveiller votre application dans Azure.
Affiner les paramètres du plan
Les améliorations réelles des performances et les implications des coûts de la migration peuvent varier en fonction des charges de travail et de la configuration spécifiques à votre application. Le plan Flex Consumption fournit plusieurs paramètres que vous pouvez ajuster pour affiner les performances de votre application. Vous souhaiterez peut-être effectuer des ajustements pour qu’ils correspondent plus étroitement au comportement de l’application d’origine ou à équilibrer les coûts et les performances. Pour plus d’informations, consultez Ajuster votre application dans l’article Flex Consumption.
Supprimer l’application d’origine (facultatif)
Après avoir testé minutieusement votre nouvelle application de fonction Flex Consumption et validé que tout fonctionne comme prévu, vous pouvez nettoyer les ressources pour éviter les coûts inutiles. Même si les déclencheurs dans l’application d’origine sont probablement déjà désactivés, vous pouvez attendre quelques jours ou même semaines avant de supprimer entièrement l’application d’origine. Ce délai, qui dépend des modèles d’utilisation de votre application, garantit que tous les scénarios, y compris les scénarios peu fréquents, sont correctement testés. Ce n'est que lorsque vous êtes satisfait des résultats de la migration que vous devriez procéder à la suppression de votre application fonctionnelle d'origine.
Important
Cette action supprime votre application de fonction d’origine. Le plan Consommation reste intact si d’autres applications l’utilisent. Avant de continuer, assurez-vous que vous avez correctement migré toutes les fonctionnalités vers la nouvelle application Flex Consumption, vérifié qu’aucun trafic n’est dirigé vers l’application d’origine et sauvegardé les journaux, la configuration ou les données pertinents qui peuvent être nécessaires pour référence.
Utilisez la az functionapp delete commande pour supprimer l’application de fonction d’origine :
az functionapp delete --name <ORIGINAL_APP_NAME> --resource-group <RESOURCE_GROUP>
Dans cet exemple, remplacez <RESOURCE_GROUP> et <APP_NAME> par, respectivement, les noms de votre groupe de ressources et de votre application de fonction.
Résolution des problèmes et stratégies de récupération
Malgré une planification minutieuse, les problèmes de migration peuvent se produire. Voici comment gérer les problèmes potentiels lors de la migration :
| Problème | Solution |
|---|---|
| Problèmes de performances de démarrage à froid | • Passer en revue les paramètres d’accès concurrentiel • Rechercher les dépendances manquantes |
| Liaisons manquantes | • Vérifier les offres groupées d’extensions • Mettre à jour les configurations de liaison |
| Erreurs d’autorisation | • Vérifier les attributions d’identité et les autorisations de rôle |
| Problèmes de connectivité réseau | • Valider les restrictions d’accès et les paramètres réseau |
| Informations sur les applications manquantes | Recréer la connexion Application Insights |
| Échec du démarrage de l’application | Consultez les étapes de résolution des problèmes généraux |
| Les déclencheurs ne traitent pas les événements | Consultez les étapes de résolution des problèmes généraux |
Si vous rencontrez des problèmes lors de la migration d’une application de production, vous souhaiterez peut-être restaurer la migration vers l’application d’origine pendant la résolution des problèmes.
Étapes de dépannage générales
Utilisez ces étapes pour les cas où la nouvelle application ne parvient pas à démarrer ou si les déclencheurs de fonction ne traitent pas les événements :
Dans votre nouvelle page d’application dans le portail Azure, sélectionnez Diagnostiquer et résoudre les problèmes dans le volet gauche de la page de l’application. Sélectionnez Disponibilité et performances et examinez le détecteur de panne ou d'erreurs de rapport de l’application de fonction. Pour plus d’informations, consultez la vue d’ensemble des diagnostics Azure Functions.
Dans la page de l'application, sélectionnez Surveillance>Application Insights>afficher les données Application Insights, puis sélectionnez Rechercher>Échecs et examinez les événements d’échec.
Sélectionnez Journaux de surveillance>Logs et exécutez cette requête Kusto pour vérifier les erreurs dans ces tables :
traces | where severityLevel == 3 | where cloud_RoleName == "<APP_NAME>" | where timestamp > ago(1d) | project timestamp, message, operation_Name, customDimensions | order by timestamp descDans ces requêtes, remplacez
<APP_NAME>par le nom de votre nouvelle application. Ces requêtes vérifient les erreurs au cours du dernier jour (where timestamp > ago(1d)).Une fois de retour sur la page de l'application, sélectionnez Paramètres>Variables d’environnement et vérifiez que tous les paramètres critiques de l'application ont été correctement transférés. Recherchez les paramètres déconseillés qui ont peut-être été migrés de manière incorrecte, ou des fautes de frappe ou des chaînes de connexion incorrectes. Vérifiez la connexion de stockage hôte par défaut.
Sélectionnez Identité des paramètres> et vérifiez que les identités attendues existent et qu’elles ont été affectées aux rôles appropriés.
Dans votre code, vérifiez que toutes les configurations de liaison sont correctes, en accordant une attention particulière aux noms de chaîne de connexion, aux noms de file d’attente de stockage et aux noms de conteneur et aux paramètres de groupe de consommateurs dans les déclencheurs Event Hubs.
Étapes de restauration pour les applications de production critiques
Si vous n’êtes pas en mesure de résoudre les problèmes avec succès, vous pouvez revenir à l’utilisation de votre application d’origine pendant que vous continuez à résoudre les problèmes.
Si l’application d’origine a été arrêtée, redémarrez-la :
Utilisez cette
az functionapp startcommande pour redémarrer l’application de fonction d’origine :az functionapp delete --name <ORIGINAL_APP_NAME> --resource-group <RESOURCE_GROUP>Si vous avez créé de nouvelles files d’attente/rubriques/conteneurs, vérifiez que les clients sont redirigés vers les ressources d’origine.
Si vous avez modifié dns ou domaines personnalisés, rétablissez ces modifications pour pointer vers l’application d’origine.
Envoi de commentaires
Si vous rencontrez des problèmes avec votre migration à l’aide de cet article ou si vous souhaitez fournir d’autres commentaires sur ces conseils, utilisez l’une de ces méthodes pour obtenir de l’aide ou fournir vos commentaires :
-
Obtenir de l’aide chez Microsoft Q&A
-Créer un problème dans le dépôt Azure Functions
-
Fournir des commentaires sur le produit
-
Créer un ticket de support