Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez appeler des fonctions de données utilisateur Fabric à partir d’applications externes en envoyant des requêtes HTTP au point de terminaison public de la fonction. Cela vous permet d’intégrer votre logique métier Fabric dans des applications web, des scripts d’automatisation, des microservices ou n’importe quel système en dehors de l’environnement Fabric.
Dans ce tutoriel, vous allez :
- Inscrire une application Microsoft Entra pour l’authentification
- Obtenir l’URL publique de la fonction et activer l’accès public
- Créer une application console Python qui appelle la fonction
- Comprendre le schéma de réponse et les codes d’état HTTP
Conditions préalables
- Visual Studio Code installé sur votre ordinateur local.
- Python 3.11 installé sur votre ordinateur local.
- Un compte Microsoft Fabric. Vous pouvez vous inscrire à un essai gratuit.
- Un espace de travail Fabric.
- Élément de fonctions de données utilisateur publié. Pour obtenir des instructions, consultez Créer des fonctions de données utilisateur dans Visual Studio Code ou Créer des fonctions de données utilisateur dans le portail.
Créer une application Microsoft Entra
Pour appeler des fonctions de données utilisateur à partir d’une application externe, vous devez inscrire une application dans Microsoft Entra ID. Cette inscription d’application fournit les informations d’identification que votre application Python utilise pour s’authentifier.
Accédez au Centre d’administration Microsoft Entra et inscrivez une application en suivant les étapes décrites dans le guide de démarrage rapide : Inscrire une application auprès de la plateforme d’identités Microsoft.
Les valeurs d’ID et d’ID d’annuaire (locataire) de l’application Microsoft Entra s’affichent dans la zone Résumé. Enregistrez ces valeurs, car elles sont requises ultérieurement.
Sous la liste Gérer, sélectionnez Autorisations d’API, puis Ajouter une autorisation.
Ajoutez le service PowerBI, sélectionnez Autorisations déléguées, puis sélectionnez UserDataFunction.Execute.All ou élément. Autorisations Execute.All . Vérifiez que le consentement de l’administrateur n’est pas obligatoire.
Revenez au paramètre Gérer et sélectionnez Authentification>Ajouter une> de plateforme.
À des fins de développement local, ajoutez
http://localhost:3000sous URI de redirection, puis vérifiez que l’application est activée pour le flux de code d’autorisation avec la clé de preuve PKCE (Proof Key for Code Exchange). Sélectionnez le bouton Configurer pour enregistrer vos modifications. Si l’application rencontre une erreur liée aux requêtes inter-origines, ajoutez la plateforme Des applications mobiles et de bureau à l’étape précédente avec le même URI de redirection.Revenez à Authentification, faites défiler jusqu’à Paramètres avancés et, sous Autoriser les flux clients publics, sélectionnez Oui pour Activer les flux suivants pour mobile et bureau.
Créer une application console
Maintenant que vous disposez d’une inscription d’application, créez une application console Python qui authentifie et appelle votre fonction de données utilisateur.
Obtenir l’URL de la fonction à appeler
Chaque fonction de données utilisateur a une URL publique unique qui sert de point de terminaison d’API REST. Avant de pouvoir appeler la fonction à partir d’une application externe, vous devez activer l’accès public et obtenir l’URL.
Pour obtenir l’URL de la fonction :
Dans le portail Fabric, ouvrez votre élément de fonctions de données utilisateur.
Assurez-vous que vous êtes en mode Exécuter uniquement , et non en mode Développer .
Dans l’Explorateur de Fonctions, survolez le nom de la fonction et sélectionnez les points de suspension (...).
Sélectionnez Propriétés.
Dans le volet Propriétés, vérifiez que l’accès public est activé. Si ce n’est pas le cas, activez l'interrupteur pour l’activer.
Copiez l’URL publique à utiliser dans votre application Python.
Conseil / Astuce
Si l’accès public est déjà activé, vous pouvez ignorer le volet Propriétés. Dans l’Explorateur Functions, sélectionnez les points de suspension (...) en regard du nom de la fonction et sélectionnez Copier l’URL de la fonction. Cette opération copie la même URL que l’URL publique dans le volet Propriétés.
Dans votre code d’application, remplacez l’espace
FUNCTION_URLréservé par l’URL que vous avez copiée.
Configurer votre projet Python
Créez un projet Python avec un environnement virtuel et installez les dépendances requises.
Créez un dossier pour votre application Python, par exemple
my-data-app.Ouvrez le dossier dans Visual Studio Code.
Ouvrez la palette de commandes (Ctrl+Maj+P) et recherchez Python : Créer un environnement.
Sélectionnez venv comme type d’environnement.
Sélectionnez Python 3.11 comme version de l’interpréteur.
Ouvrez un nouveau terminal dans Visual Studio Code (Ctrl+').
Activez l’environnement virtuel Python :
Windows :
.venv\Scripts\activatemacOS/Linux :
source .venv/bin/activateInstallez les bibliothèques Python requises :
pip install azure-identity requests
Ajouter le code de l’application
Ajoutez le code Python qui s’authentifie avec l’ID Microsoft Entra et appelle votre fonction de données utilisateur.
Créez un fichier nommé
app.pydans votre dossier de projet.Ajoutez le code suivant. Remplacez
<REPLACE WITH USER DATA FUNCTION URL>par l’URL publique que vous avez copiée précédemment.from azure.identity import InteractiveBrowserCredential import requests import json # Acquire a token using interactive browser authentication # This opens a browser window for the user to sign in with their Microsoft account credential = InteractiveBrowserCredential() scope = "https://analysis.windows.net/powerbi/api/user_impersonation" token = credential.get_token(scope) if not token.token: print("Error: Could not get access token") exit(1) # Prepare headers with the access token headers = { "Authorization": f"Bearer {token.token}", "Content-Type": "application/json" } FUNCTION_URL = "<REPLACE WITH USER DATA FUNCTION URL>" # Prepare the request data (modify to match your function's expected input) data = {"name": "John"} try: # Call the user data function public URL response = requests.post(FUNCTION_URL, json=data, headers=headers) response.raise_for_status() print(json.dumps(response.json(), indent=2)) except Exception as e: print(f"Error: {e}")Remarque
Cet exemple utilise
InteractiveBrowserCredentialpar souci de simplicité, ce qui ouvre un navigateur pour la connexion interactive. Pour les applications de production, transmettez les paramètresclient_idettenant_idde votre application Microsoft Entra inscrite àInteractiveBrowserCredential, ou utilisez un type d’informations d’identification différent, tel queClientSecretCredential, pour l’authentification de service à service. Pour plus d’informations, consultez la bibliothèque de client Azure Identity pour Python.
Exécuter l’application
Pour exécuter l’application, utilisez la commande suivante dans le terminal :
python app.py
Une fenêtre de navigateur s’ouvre pour vous connecter avec votre compte Microsoft. Après l’authentification, l’application appelle votre fonction de données utilisateur et imprime la réponse.
Pour déboguer l’application dans Visual Studio Code, définissez des points d’arrêt en cliquant sur la gouttière à côté des numéros de ligne, puis appuyez sur F5 pour démarrer le débogage. Pour plus d’informations, consultez débogage Python dans Visual Studio Code.
Schéma de sortie
Lorsque vous appelez une fonction de données utilisateur à partir d’une application externe, le corps de la réponse suit ce schéma JSON :
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded",
"output": "Hello, John!",
"errors": []
}
La réponse inclut les propriétés suivantes :
- functionName : Le nom de la fonction qui a été exécutée.
- invocationId : identificateur unique pour cette exécution de fonction spécifique. Utile pour le dépannage et la corrélation des journaux de logs.
-
état : résultat de l’exécution de la fonction. Les valeurs possibles sont
Succeeded,BadRequest,Failed,TimeoutetResponseTooLarge. -
sortie : valeur de retour de votre fonction. Le type de données et la structure dépendent de ce que votre fonction retourne. Par exemple, si votre fonction retourne une chaîne,
outputest une chaîne. Si votre fonction retourne un dictionnaire,outputest un objet JSON. -
erreurs : liste des erreurs capturées pendant l’exécution. Chaque erreur inclut un
name, unmessage, et unpropertiesoptionnel contenant des paires clé-valeur avec plus de détails. Vide lorsque la fonction réussit.
Codes de réponse
La fonction retourne les codes HTTP suivants suite à l’exécution.
| Code de réponse | Message | Description |
|---|---|---|
| 200 | Success | La demande a été réalisée avec succès. |
| 400 | Demande incorrecte | La demande n’était pas valide. Cette réponse peut être due à des valeurs de paramètre d’entrée manquantes ou incorrectes, à des types de données ou à des noms. Cette réponse peut également être due à la désactivation de l’accès public pour une fonction. |
| 4:03 | Interdit | La réponse était trop grande et l’invocation a échoué. |
| 408 | Délai d’expiration de la demande | La requête a échoué en raison de l’exécution prenant plus de temps que le temps maximal autorisé. |
| 409 | Conflit | La requête n’a pas pu être terminée en raison d’un état de conflit. Cette erreur peut être due à une exception non gérée ou à une erreur avec les informations d’identification de l’utilisateur. |
| 422 | Demande incorrecte | La requête a échoué en raison d’un userThrownError déclenché dans la fonction. |
| 500 | Erreur interne du serveur | La requête a échoué en raison d’une erreur interne dans le service. |