Guide pratique pour désactiver des fonctions dans Azure Functions

Cet article explique comment désactiver une fonction dans Azure Functions. Quand vous désactivez une fonction, le runtime ignore l’événement destiné à déclencher la fonction. Vous pouvez ainsi empêcher l’exécution d’une fonction spécifique sans avoir à modifier et republier l’intégralité de l’application de fonction.

Vous pouvez désactiver une fonction en place en créant un paramètre d’application au format AzureWebJobs.<FUNCTION_NAME>.Disabled défini sur true. Vous pouvez créer et modifier ce paramètre d’application de plusieurs façons, notamment en utilisant Azure CLI, Azure PowerShell et l’onglet Vue d’ensemble de votre fonction dans le Portail Azure.

Les modifications apportées aux paramètres d’application entraînent le redémarrage de votre application de fonction. Pour plus d'informations, consultez Informations de référence sur les paramètres d'application d'Azure Functions.

Désactiver une fonction

Utilisez l’un de ces modes pour créer un paramètre d’application qui désactive un exemple de fonction nommé QueueTrigger :

Utilisez les boutons Activer et Désactiver sur la page Vue d’ensemble de la fonction. Ces boutons fonctionnent en modifiant la valeur du paramètre d’application AzureWebJobs.QueueTrigger.Disabled. Le paramètre d’application propre à la fonction est créé la première fois qu’une fonction est désactivée.

Function state switch

Même lorsque vous publiez dans votre application de fonction à partir d’un projet local, vous pouvez toujours utiliser le portail pour désactiver des fonctions dans l’application de fonction.

Notes

Les fonctions désactivées peuvent toujours être exécutées en appelant le point de terminaison REST à l’aide d’une clé principale. Pour plus d’informations, consultez Exécuter une fonction désactivée. Cela signifie qu’une fonction désactivée s’exécute toujours lorsqu’elle est démarrée à partir de la fenêtre Test/Exécution dans le portail à l’aide de la forme de base (clé d’hôte).

Désactiver des fonctions dans un emplacement

Par défaut, les paramètres d’application s’appliquent également aux applications qui s’exécutent dans les emplacements de déploiement. Toutefois, vous pouvez remplacer le paramètre d’application utilisé par l’emplacement en définissant un paramètre d’application spécifique à un emplacement. Par exemple, vous souhaitez peut-être qu’une fonction soit active en production, mais pas pendant les tests de déploiement. Il est courant de désactiver les fonctions déclenchées par le minuteur dans les emplacements pour empêcher les exécutions simultanées.

Pour désactiver une fonction uniquement dans l’emplacement de préproduction :

Accédez à l’instance d’emplacement de votre application de fonction en sélectionnant Emplacements de déploiement sous Déploiement, en choisissant votre emplacement, puis en sélectionnant Fonctions dans l’instance d’emplacement. Choisissez votre fonction, puis utilisez les boutons Activer et Désactiver sur la page Vue d’ensemble de la fonction. Ces boutons fonctionnent en modifiant la valeur du paramètre d’application AzureWebJobs.<FUNCTION_NAME>.Disabled. Ce paramètre propre à la fonction est créé la première fois que vous désactivez la fonction.

Vous pouvez également ajouter directement le paramètre d’application nommé AzureWebJobs.<FUNCTION_NAME>.Disabled avec la valeur true dans la configuration de l’instance d’emplacement. Lorsque vous ajoutez un paramètre d’application spécifique à un emplacement, veillez à cocher la case Paramètre de l’emplacement de déploiement. Cette option conserve la valeur du paramètre avec l’emplacement pendant les échanges.

Pour plus d’informations, consultez Emplacements de déploiement Azure Functions.

Exécuter une fonction désactivée

Vous pouvez toujours provoquer l’exécution d’une fonction désactivée en fournissant la clé principale dans une requête REST à l’URL de point de terminaison de la fonction désactivée. De cette façon, vous pouvez développer et valider des fonctions dans Azure dans un état désactivé tout en empêchant d’autres utilisateurs d’y accéder. L’utilisation de tout autre type de clé dans la requête renvoie une réponse HTTP 404.

Attention

En raison des autorisations élevées que donnent la clé principale dans votre application de fonction, vous ne devez pas la partager avec des tiers ni la distribuer dans des applications clientes natives. Faites preuve de prudence lorsque vous choisissez le niveau d’accès administrateur.

Pour en savoir plus sur la clé principale, consultez Obtention de clés. Pour en savoir plus sur l’appel de fonctions non déclenchées par le HTTP, voir Exécution manuelle d’une fonction non déclenchée par le HTTP.

Désactiver les fonctions localement

Les fonctions peuvent être désactivées de la même façon lors de l’exécution locale. Pour désactiver une fonction nommée QueueTrigger, ajoutez une entrée à la collection Values dans le fichier local.settings.json, comme suit :

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "AzureWebJobs.QueueTrigger.Disabled": true
  }
}

À propos de l’installation

Gardez à l’esprit les considérations suivantes lorsque vous désactivez des fonctions :

  • Lorsque vous désactivez une fonction déclenchée par HTTP à l’aide des méthodes décrites dans cet article, il est toujours possible d’accéder au point de terminaison en cas d’exécution sur votre ordinateur local et dans le portail.

  • À ce stade, vous ne pouvez pas désactiver les noms de fonctions qui contiennent un trait d’union (-) en cas d’exécution sur Linux. Si vous envisagez de désactiver vos fonctions lors d’une exécution sur Linux, n’utilisez pas de traits d’union dans les noms de vos fonctions.

Étapes suivantes

Cet article traite de la désactivation des déclencheurs automatiques. Pour plus d’informations sur les déclencheurs, consultez Déclencheurs et liaisons.