Emplacements de déploiement Azure FunctionsAzure Functions deployment slots

Les emplacements de déploiement Azure Functions permettent à votre application de fonction d’exécuter différentes instances appelées « emplacements ».Azure Functions deployment slots allow your function app to run different instances called "slots". Les emplacements sont différents environnements exposés via un point de terminaison disponible publiquement.Slots are different environments exposed via a publicly available endpoint. Une instance d’application est toujours mappée à l’emplacement de production, et vous pouvez permuter des instances affectées à un emplacement à la demande.One app instance is always mapped to the production slot, and you can swap instances assigned to a slot on demand. Les applications de fonction qui s’exécutent dans le cadre du plan App Service peuvent avoir plusieurs emplacements tandis que, dans le cadre du plan Consommation, un seul emplacement est autorisé.Function apps running under the Apps Service plan may have multiple slots, while under the Consumption plan only one slot is allowed.

Les éléments suivants reflètent la manière dont les fonctions sont affectées par la permutation d’emplacements :The following reflect how functions are affected by swapping slots:

  • La redirection du trafic est transparente. La permutation n’entraîne l’abandon d’aucune demande.Traffic redirection is seamless; no requests are dropped because of a swap.
  • Si une fonction est en cours d’exécution pendant un permutation, l’exécution se poursuit et les déclencheurs suivants sont routés vers l’instance d’application permutée.If a function is running during a swap, execution continues and the next triggers are routed to the swapped app instance.

Notes

Les emplacements ne sont actuellement pas disponibles pour le plan Consommation Linux.Slots are currently not available for the Linux Consumption plan.

Pourquoi utiliser des emplacements ?Why use slots?

L’utilisation d’emplacements de déploiement présente un certain nombre d’avantages.There are a number of advantages to using deployment slots. Les scénarios suivants décrivent des utilisations courantes des emplacements :The following scenarios describe common uses for slots:

  • Différents environnements à des fins différentes : L’utilisation de différents emplacements vous donne la possibilité de différencier des instances d’application avant de basculer vers un emplacement de production ou de préproduction.Different environments for different purposes: Using different slots gives you the opportunity to differentiate app instances before swapping to production or a staging slot.
  • Préchauffage : Le déploiement de l’application vers un emplacement plutôt que directement en production permet de « préchauffer » celle-ci avant sa mise en ligne.Prewarming: Deploying to a slot instead of directly to production allows the app to warm up before going live. En outre, l’utilisation d’emplacements réduit la latence pour les charges de travail déclenchées par HTTP.Additionally, using slots reduces latency for HTTP-triggered workloads. Les instances sont préchauffées avant déploiement, ce qui réduit le démarrage à froid de fonctions nouvellement déployées.Instances are warmed up before deployment, which reduces the cold start for newly deployed functions.
  • Facilité de secours : Après permutation avec l’emplacement de production, la précédente application en production se retrouve dans l’emplacement de l’application précédemment en préproduction.Easy fallbacks: After a swap with production, the slot with a previously staged app now has the previous production app. Si les modifications résultant de la permutation dans l’emplacement de production ne vous conviennent pas, vous pouvez inverser immédiatement la permutation pour revenir à votre « dernière bonne instance connue ».If the changes swapped into the production slot aren't as you expect, you can immediately reverse the swap to get your "last known good instance" back.

Permuter des opérationsSwap operations

Pendant une permutation, un emplacement est considéré source et l’autre comme cible.During a swap, one slot is considered the source and the other the target. L’emplacement source contient l’instance de l’application qui est appliquée à l’emplacement cible.The source slot has the instance of the application that is applied to the target slot. Les étapes suivantes garantissent que l’emplacement cible ne rencontre pas de temps d’arrêt lors d’une permutation :The following steps ensure the target slot doesn't experience downtime during a swap:

  1. Appliquer les paramètres : Les paramètres de l’emplacement cible sont appliqués à toutes les instances de l’emplacement source.Apply settings: Settings from the target slot are applied to all instances of the source slot. Par exemple, les paramètres de l’emplacement production sont appliqués à l’instance en préproduction.For example, the production settings are applied to the staging instance. Les paramètres appliqués incluent les catégories suivantes :The applied settings include the following categories:

  2. Attendre les redémarrages et la disponibilité : L’opération de permutation attend que chaque instance dans l’emplacement source ait redémarré et soit disponible pour recevoir des demandes.Wait for restarts and availability: The swap waits for every instance in the source slot to complete its restart and to be available for requests. Si l’une des instances ne parvient pas à redémarrer, l’opération d’échange rétablit toutes les modifications apportées à l’emplacement source, puis cesse d’être exécutée.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. Mettre à jour le routage : Si toutes les instances dans l’emplacement source sont correctement préchauffées, les deux emplacements opèrent la permutation en échangeant leurs règles d’acheminement.Update routing: If all instances on the source slot are warmed up successfully, the two slots complete the swap by switching routing rules. Après cette étape, l’emplacement cible (par exemple, l’emplacement de production) dispose de l’application déjà initialisée dans l’emplacement source.After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

  4. Répéter l’opération : Maintenant que l’emplacement source contient l’application qui se trouvait dans l’emplacement cible avant la permutation, menez à bien la même opération en appliquant tous les paramètres, puis en redémarrant les instances pour l’emplacement source.Repeat operation: Now that the source slot has the pre-swap app previously in the target slot, complete the same operation by applying all settings and restarting the instances for the source slot.

Gardez à l’esprit les points suivants :Keep in mind the following points:

  • À tout moment pendant une opération de permutation, l’initialisation des applications permutées se produit sur l’emplacement source.At any point of the swap operation, initialization of the swapped apps happens on the source slot. L’emplacement cible reste en ligne pendant la préparation de l’emplacement source, que la permutation réussisse ou échoue.The target slot remains online while the source slot is prepared, whether the swap succeeds or fails.

  • Pour permuter un emplacement de préproduction avec l’emplacement de production, assurez-vous que l’emplacement de production est toujours l’emplacement cible.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. De cette façon, l’opération d’échange n’affectera pas votre application de production.This way, the swap operation doesn't affect your production app.

  • Les paramètres liés aux sources et aux liaisons d’événements doivent être configurés en tant que paramètres d’emplacement de déploiement avant le lancement d’une permutation.Settings related to event sources and bindings must be configured as deployment slot settings before you start a swap. Le marquage à l’avance de ces paramètres comme « rémanents », garantit que les événements et les sorties sont dirigés vers l’instance appropriée.Marking them as "sticky" ahead of time ensures events and outputs are directed to the proper instance.

Gérer les paramètresManage settings

Lorsque vous clonez la configuration depuis un autre emplacement de déploiement, celle-ci est modifiable.When you clone configuration from another deployment slot, the cloned configuration is editable. Au cours d’un échange, certains éléments de configuration suivent le contenu (éléments non propres à un emplacement) tandis que d’autres restent dans le même emplacement après l’échange (éléments propres à un emplacement).Some configuration elements follow the content across a swap (not slot specific), whereas other configuration elements stay in the same slot after a swap (slot specific). Les listes suivantes représentent les paramètres qui évoluent lorsque vous échangez les emplacements.The following lists show the settings that change when you swap slots.

Paramètres échangés:Settings that are swapped:

  • Paramètres généraux, par exemple versions du framework, 32/64 bits, sockets webGeneral settings, such as framework version, 32/64-bit, web sockets
  • Paramètres d’application (peuvent être configurés pour respecter un emplacement)App settings (can be configured to stick to a slot)
  • Chaînes de connexion (peuvent être configurées pour respecter un emplacement)Connection strings (can be configured to stick to a slot)
  • Mappages de gestionnairesHandler mappings
  • Certificats publicsPublic certificates
  • Contenu WebJobsWebJobs content
  • Connexions hybrides*Hybrid connections *
  • Intégration du réseau virtuel*Virtual network integration *
  • Points de terminaison de service*Service endpoints *
  • Azure Content Delivery Network*Azure Content Delivery Network *

Il est prévu que les fonctionnalités marquées d’un astérisque (*) ne soient plus échangées.Features marked with an asterisk (*) are planned to be unswapped.

Paramètres non échangés :Settings that aren't swapped:

  • Points de terminaison de publicationPublishing endpoints
  • Noms de domaine personnalisésCustom domain names
  • Certificats non publics et paramètres TLS/SSLNon-public certificates and TLS/SSL settings
  • Paramètres de mise à l’échelleScale settings
  • Planificateurs WebJobsWebJobs schedulers
  • Restrictions d’adresse IPIP restrictions
  • Always OnAlways On
  • Paramètres de diagnosticDiagnostic settings
  • Partage des ressources cross-origin (CORS)Cross-origin resource sharing (CORS)

Notes

Certains paramètres d’application qui s’appliquent à des paramètres non échangés ne sont pas non plus échangés.Certain app settings that apply to unswapped settings are also not swapped. Par exemple, étant donné que les paramètres de diagnostic ne sont pas échangés, les paramètres d’application associés comme WEBSITE_HTTPLOGGING_RETENTION_DAYS et DIAGNOSTICS_AZUREBLOBRETENTIONDAYS ne sont pas non plus échangés, même s’ils n’apparaissent pas comme des paramètres d’emplacement.For example, since diagnostic settings are not swapped, related app settings like WEBSITE_HTTPLOGGING_RETENTION_DAYS and DIAGNOSTICS_AZUREBLOBRETENTIONDAYS are also not swapped, even if they don't show up as slot settings.

Créer un paramètre de déploiementCreate a deployment setting

Vous pouvez marquer des paramètres en tant que paramètres de déploiement, ce qui a pour effet de les rendre « rémanents ».You can mark settings as a deployment setting, which makes it "sticky". Un paramètre rémanent ne suit pas la permutation de l’instance d’application.A sticky setting doesn't swap with the app instance.

Si vous créez un paramètre de déploiement dans un emplacement, veillez à créer le même paramètre avec une valeur unique dans tout autre emplacement qui est impliqué dans une permutation.If you create a deployment setting in one slot, make sure to create the same setting with a unique value in any other slot that is involved in a swap. De cette façon, si la valeur d’un paramètre ne change pas, son nom reste cohérent dans les emplacements.This way, while a setting's value doesn't change, the setting names remain consistent among slots. Cette cohérence de nom garantit que votre code ne tente pas d’accéder à un paramètre défini dans un emplacement, mais pas dans un autre.This name consistency ensures your code doesn't try to access a setting that is defined in one slot but not another.

Pour créer un paramètre de déploiement, procédez comme suit :Use the following steps to create a deployment setting:

  1. Dans l’application de fonction, accédez à Deployment slots (Emplacements de déploiement), puis sélectionnez le nom de l’emplacement.Navigate to Deployment slots in the function app, and then select the slot name.

    Recherchez des emplacements dans le portail Azure.

  2. Sélectionnez Configuration, puis le nom du paramètre que vous souhaitez utiliser avec l’emplacement actuel.Select Configuration, and then select the setting name you want to stick with the current slot.

    Configurez le paramètre d’application d’un emplacement dans le portail Azure.

  3. Sélectionnez Deployment slot setting (Paramètre d’emplacement de déploiement), puis OK.Select Deployment slot setting, and then select OK.

    Configurez le paramètre d’emplacement de déploiement.

  4. Lorsque la section du paramètre disparaît, sélectionnez Save (Enregistrer) pour conserver les modificationsOnce setting section disappears, select Save to keep the changes

    Enregistrez le paramètre d’emplacement de déploiement.

DéploiementDeployment

Les emplacements sont vides lorsque vous créez un emplacement.Slots are empty when you create a slot. Pour déployer votre application dans un emplacement, vous pouvez utiliser toute technologie de déploiement prise en charge.You can use any of the supported deployment technologies to deploy your application to a slot.

Mise à l'échelleScaling

Tous les emplacements sont mis à l’échelle du nombre de rôles de travail dans l’emplacement de production.All slots scale to the same number of workers as the production slot.

  • Pour les plans Consommation, l’emplacement est mis à l’échelle à mesure que l’échelle de l’application de fonction évolue.For Consumption plans, the slot scales as the function app scales.
  • Pour les plans App Service, l’application s’adapte à un nombre fixe de rôles de travail.For App Service plans, the app scales to a fixed number of workers. Les emplacements s’exécutent sur le même nombre de rôles de travail que le plan de l’application.Slots run on the same number of workers as the app plan.

Ajouter un emplacementAdd a slot

Vous pouvez ajouter un emplacement via l’interface de ligne de commande ou le portail.You can add a slot via the CLI or through the portal. Les étapes suivantes montrent comment créer un emplacement sur le portail :The following steps demonstrate how to create a new slot in the portal:

  1. Accédez à votre application de fonction.Navigate to your function app.

  2. Sélectionnez Deployment slots (Emplacements de déploiement), puis + Add Slot (+ Ajouter un emplacement).Select Deployment slots, and then select + Add Slot.

    Ajout d’un emplacement de déploiement Azure Functions.

  3. Tapez le nom de l’emplacement, puis sélectionnez Add (Ajouter).Type the name of the slot and select Add.

    Nommez l’emplacement de déploiement Azure Functions.

Permuter des emplacementsSwap slots

Vous pouvez permuter des emplacements via l’interface de ligne de commande ou le portail.You can swap slots via the CLI or through the portal. Les étapes suivantes expliquent comment permuter des emplacements dans le portail :The following steps demonstrate how to swap slots in the portal:

  1. Accédez à l’application de fonction.Navigate to the function app.

  2. Sélectionnez Deployment slots (Emplacements de déploiement), puis Swap (Échanger).Select Deployment slots, and then select Swap.

    Échangez l’emplacement de déploiement.

  3. Vérifiez les paramètres de configuration de votre échange, puis sélectionnez Swap (Échanger)Verify the configuration settings for your swap and select Swap

    Échangez l’emplacement de déploiement.

L’exécution de l’opération peut prendre un certain temps.The operation may take a moment while the swap operation is executing.

Restaurer un échangeRoll back a swap

Si une permutation provoque une erreur ou si vous souhaitez simplement « annuler » une permutation, vous pouvez restaurer l’état initial.If a swap results in an error or you simply want to "undo" a swap, you can roll back to the initial state. Pour revenir à l’état avant permutation, effectuez un autre permutation pour inverser la permutation précédente.To return to the pre-swapped state, do another swap to reverse the swap.

Supprimer un emplacementRemove a slot

Vous pouvez supprimer un emplacement via l’interface de ligne de commande ou le portail.You can remove a slot via the CLI or through the portal. Les étapes suivantes montrent comment supprimer un emplacement sur le portail :The following steps demonstrate how to remove a slot in the portal:

  1. Dans l’application de fonction, accédez à Deployment slots (Emplacements de déploiement), puis sélectionnez le nom de l’emplacement.Navigate to Deployment slots in the function app, and then select the slot name.

    Recherchez des emplacements dans le portail Azure.

  2. Sélectionnez Supprimer.Select Delete.

    Suppression de l’emplacement de déploiement dans le portail Azure.

  3. Tapez le nom de l’emplacement de déploiement que vous souhaitez supprimer, puis sélectionnez Delete (Supprimer).Type the name of the deployment slot you want to delete, and then select Delete.

    Suppression de l’emplacement de déploiement dans le portail Azure.

  4. Fermez le volet confirmation de la suppression.Close the delete confirmation pane.

    Confirmation de suppression de l’emplacement de déploiement.

Automatiser la gestion des emplacementsAutomate slot management

Azure CLI vous permet d’automatiser les actions suivantes pour un emplacement :Using the Azure CLI, you can automate the following actions for a slot:

Changer le plan App ServiceChange App Service plan

Une application de fonction qui s’exécute dans le cadre d’un plan App Service vous permet de modifier le plan App service sous-jacent pour un emplacement.With a function app that is running under an App Service plan, you can change the underlying App Service plan for a slot.

Notes

Vous ne pouvez pas modifier le plan App Service d’un emplacement dans le cadre du plan Consommation.You can't change a slot's App Service plan under the Consumption plan.

Pour modifier le plan App service d’un emplacement, procédez comme suit :Use the following steps to change a slot's App Service plan:

  1. Dans l’application de fonction, accédez à Deployment slots (Emplacements de déploiement), puis sélectionnez le nom de l’emplacement.Navigate to Deployment slots in the function app, and then select the slot name.

    Recherchez des emplacements dans le portail Azure.

  2. Sous App Service plan (Plan App Service), sélectionnez Change App Service plan (Modifier le plan App Service).Under App Service plan, select Change App Service plan.

  3. Sélectionnez le plan vers lequel vous souhaitez effectuer la mise à niveau ou créez un nouveau plan.Select the plan you want to upgrade to, or create a new plan.

    Modification du plan App Service dans le portail Azure.

  4. Sélectionnez OK.Select OK.

LimitesLimitations

Les emplacements de déploiement Azure Functions présentent les limitations suivantes :Azure Functions deployment slots have the following limitations:

  • Le nombre d’emplacements disponibles pour une application dépend du plan.The number of slots available to an app depends on the plan. Le plan Consommation ne peut disposer que d’un seul emplacement de déploiement.The Consumption plan is only allowed one deployment slot. Des emplacements supplémentaires sont disponibles pour des applications s’exécutant dans le cadre du plan App Service.Additional slots are available for apps running under the App Service plan.
  • La permutation d’un emplacement a pour effet de réinitialiser les clés pour les applications dont le paramètre d’application AzureWebJobsSecretStorageType a la valeur files.Swapping a slot resets keys for apps that have an AzureWebJobsSecretStorageType app setting equal to files.
  • Les emplacements ne sont pas disponibles pour le plan Consommation Linux.Slots aren't available for the Linux Consumption plan.

Niveaux de prise en chargeSupport levels

Il existe deux niveaux de prise en charge des emplacements de déploiement :There are two levels of support for deployment slots:

  • Disponibilité générale : entièrement pris en charge et approuvé pour la production.General availability (GA): Fully supported and approved for production use.
  • Préversion : pas encore pris en charge, mais le statut de disponibilité générale est prévu à l’avenir.Preview: Not yet supported, but is expected to reach GA status in the future.
Système d’exploitation/Plan d’hébergementOS/Hosting plan Niveau de prise en chargeLevel of support
Consommation WindowsWindows Consumption Disponibilité généraleGeneral availability
Windows PremiumWindows Premium Disponibilité généraleGeneral availability
Dédié (Windows)Windows Dedicated Disponibilité généraleGeneral availability
Consommation LinuxLinux Consumption Non pris en chargeUnsupported
Linux PremiumLinux Premium Disponibilité généraleGeneral availability
Dédié (Linux)Linux Dedicated Disponibilité généraleGeneral availability

Étapes suivantesNext steps