Partager via


Exécuter manuellement une fonction non déclenchée via HTTP

Cet article explique comment exécuter manuellement une fonction non déclenchée via une requête HTTP spécialement formatée.

Dans certains contextes, notamment pendant le développement et la résolution des problèmes, vous allez peut-être devoir exécuter « à la demande » un Azure Function qui est déclenchée indirectement. Parmi les exemples de déclencheurs indirects figurent les fonctions selon une planification ou les fonctions dont l’exécution résulte des événements.

La procédure décrite dans cet article équivaut à utiliser la fonctionnalité Test/Run de l’onglet Code + Test d’une fonction dans le Portail Azure. Vous pouvez également utiliser Visual Studio Code afin d’exécuter manuellement des fonctions.

Prérequis

Les exemples dans cet article utilisent un outil de test HTTP. Vous pouvez obtenir et utiliser l’un des outils suivants qui envoient des requêtes HTTP :

Attention

Dans les scénarios comprenant des données sensibles, comme des informations d’identification, des secrets, des jetons d’accès, des clés API et d’autres informations similaires, veillez à utiliser un outil qui protège vos données avec les fonctionnalités de sécurité nécessaires, qui fonctionne en mode hors connexion ou localement, qui ne synchronise pas vos données avec le cloud, et qui ne vous impose pas de vous connecter à un compte en ligne. Vous réduirez ainsi les risques liés à l’exposition de données sensibles au public.

Définir l’emplacement de la requête

Pour exécuter une fonction non déclenchée via HTTP, vous devez trouver un moyen d’envoyer une requête vers Azure. L’URL utilisée pour effectuer cette requête présente une forme spécifique.

Définir l’emplacement de la requête : nom d'hôte + chemin d’accès du dossier + nom de fonction

  • Nom d’hôte : emplacement public de l’application de fonction composé du nom de l’application plus azurewebsites.net ou votre domaine personnalisé. Lorsque vous travaillez avec des emplacements de déploiement utilisés pour la mise en lots, la partie du nom d’hôte est le nom d’hôte de la production avec -<slotname> ajouté à celui-ci. Dans l’exemple précédent, l’URL serait myfunctiondemos-staging.azurewebsites.net pour un emplacement nommé staging.
  • Chemin d’accès au dossier : Pour accéder aux fonctions non déclenchées par HTTP au moyen d’une requête HTTP, vous devez envoyer cette requête à travers le chemin admin/functions. Les API sous le chemin d’accès /admin/ ne sont accessibles que sur autorisation.
  • Nom de fonction : Nom de la fonction que vous souhaitez exécuter.

Les considérations suivantes s’appliquent lorsque vous effectuez des requêtes vers des points de terminaison d’administrateur dans votre application de fonction :

  • Lorsque vous effectuez des requêtes vers un point de terminaison sous le chemin d’accès /admin/, vous devez fournir la clé principale de votre application dans l’en-tête x-functions-key de la requête.
  • Lorsque vous exécutez localement, l’autorisation n’est pas appliquée et la clé principale de la fonction n’est pas requise. Vous pouvez directement appeler la fonction en omettant l’en-tête x-functions-key.
  • Lors de l’accès aux points de terminaison d’application de fonction dans un emplacement de déploiement, assurez-vous d’utiliser le nom d’hôte et la clé principale spécifiques à l’emplacement dans l’URL de la requête.

Obtenir la clé principale

Vous pouvez obtenir la clé principale à partir du Portail Azure ou à l’aide d’Azure CLI.

Attention

En raison des autorisations élevées dans votre application de fonction accordées par la clé principale, vous ne devez pas partager celle-ci avec des tiers, ou la distribuer dans une application. La clé ne doit être envoyée qu’à un point de terminaison HTTPS.

  1. Accédez à votre application de fonction dans le portail Azure, sélectionnez Clés d’application, puis la clé _master.

    Localisez la clé principale à copier.

  2. Dans la section Modifier la clé, copiez la valeur de clé dans le Presse-papiers, puis sélectionnez OK.

    Copiez la clé principale dans le Presse-papiers.

Appeler la fonction

  1. Dans le Portail Azure, accédez à votre application de fonction et choisissez votre fonction.

  2. Sélectionnez Code + test, puis Ajouter. Les messages de la fonction sont consignés ici lorsque vous exécutez manuellement la fonction à partir de votre outil de test HTTP.

    Capture d’écran montrant la page « Code + test » avec un message des journaux affichés.

  3. Dans votre outil de test HTTP, utilisez l’emplacement de la requête que vous avez défini comme URL de requête, vérifiez que la méthode de requête HTTP est POST et incluez les deux en-têtes de requête suivantes :

    Clé Valeur
    x-functions-key La valeur de la clé principale collée à partir du presse-papiers.
    Content-Type application/json
  4. Assurez-vous que la charge utile/le corps de la requête POST est { "input": "<TRIGGER_INPUT>" }. Le type de <TRIGGER_INPUT> que vous fournissez dépend du type de déclencheur, mais il ne peut s’agir que d’une chaîne, d’une valeur numérique ou booléenne. Pour les services utilisant des charges utiles JSON, telles qu’Azure Service Bus, la charge utile de test JSON doit être ignorée et sérialisée comme chaîne.

    Si vous ne souhaitez pas transmettre de données d’entrée à la fonction, vous devez toujours fournir un dictionnaire vide {} comme corps de la requête POST. Pour plus d’informations, consultez l’article de référence pour le déclencheur non-HTTP spécifique.

  5. Envoyez la requête HTTP POST. La réponse doit être une réponse HTTP 202 (Accepté).

  6. Revenez ensuite à votre fonction sur le Portail Azure. Consultez les journaux pour voir les messages émanant de l’appel manuel de la fonction.

    Affichez les journaux pour voir les résultats du test de clé principale.

La manière dont vous accédez aux données envoyées au déclencheur dépend du type de déclencheur et de votre langage de fonction. Pour plus d’informations, consultez les exemples de référence relatifs à votre déclencheur spécifique.

Étapes suivantes