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.

Postman est utilisé dans l’exemple suivant, mais vous pouvez utiliser cURL, Fiddler ou tout autre outil pour envoyer des requêtes HTTP.

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.

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.

Define the request location: host name + folder path + function name

  • 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.

    Locate the master key to copy.

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

    Copy the master key to the clipboard.

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. Vous remarquez ici la présence de messages émanant de la fonction consignée lors de l’exécution de la fonction à partir de Postman.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Ouvrez Postman (ou un outil équivalent de composition HTTP) et entrez l’emplacement de la requête dans la zone de texte URL.

  4. Assurez-vous que la méthode HTTP est définie sur POST, sélectionnez l’onglet En-têtes et ajoutez ces deux paires clé-valeur d’en-tête :

    Clé Valeur
    x-functions-key La valeur de la clé principale collée à partir du presse-papiers.
    Content-Type application/json

    Postman headers settings.

  5. Sélectionnez l’onglet Corps et renseignez { "input": "<TRIGGER_INPUT>" } comme corps de la requête.

    Postman body settings.

    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.

  6. Sélectionnez Envoyer.

    Send a request with Postman.

    Postman indique alors un état 202 Accepté.

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

    View the logs to see the master key test results.

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