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. Veillez à choisir un outil qui garde vos données en sécurité. Pour plus d’informations, consultez Outils de test HTTP.
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.
- 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 seraitmyfunctiondemos-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êtex-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.
Accédez à votre application de fonction dans le portail Azure, sélectionnez Clés d’application, puis la clé
_master
.Dans la section Modifier la clé, copiez la valeur de clé dans le Presse-papiers, puis sélectionnez OK.
Appeler la fonction
Dans le Portail Azure, accédez à votre application de fonction et choisissez votre fonction.
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.
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
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.Envoyez la requête HTTP POST. La réponse doit être une réponse HTTP 202 (Accepté).
Revenez ensuite à votre fonction sur le Portail Azure. Consultez les journaux pour voir les messages émanant de l’appel manuel de la fonction.
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.