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.
Pour appeler des éléments de fonction de données utilisateur Fabric à partir d’une application console dans Python, vous pouvez envoyer des requêtes HTTP au point de terminaison de fonction qui doit être exécuté. Dans ce guide de démarrage rapide, vous apprendrez à configurer une application Python à l’aide de Visual Studio Code.
Conditions préalables
- Installez Visual Studio Code.
- Téléchargez Python 3.1 sur votre machine locale.
- Créez un compte Microsoft Fabric gratuitement si vous n'en avez pas.
- Créer un espace de travail.
- Créez un élément de fonctions de données utilisateur et publiez-le. Consultez ces articles sur la création d’un dans Visual Studio Code ou sur la création d’un dans le portail. Publiez les modifications afin que l’élément de fonctions de données utilisateur soit prêt à être appelé.
Créer une application Microsoft Entra
Les étapes suivantes expliquent comment configurer la prise en charge d’une application ReactJS dans Microsoft Entra.
Inscrivez une application en suivant les étapes décrites dans Démarrage rapide : Inscrire une application avec 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
La fonction doit être accessible au public. Dans l'explorateur de fonctions, passez la souris sur le nom de la fonction et sélectionnez l'icône en forme de points de suspension (...) qui apparaît, puis sélectionnez Propriétés. Dans le volet Propriétés qui s’ouvre, activez Accès public. Vous devez également noter l’URL publique à utiliser dans votre application Python.
Créez un nouveau dossier pour votre application Python, par exemple my-data-app. Ouvrez le dossier dans Visual Studio Code.
Configurez l’environnement virtuel Python dans Visual Studio Code. Pour créer des environnements locaux dans Visual Studio Code, ouvrez la palette de commandes avec Ctrl+Maj+P, puis recherchez et sélectionnez la commande Python : Créer un environnement.
- La commande présente une liste de types d’environnement et sélectionne venv.
- Sélectionnez la version Python de l'interpréteur Python 3.11.
Exécutez la commande suivante pour activer l’environnement virtuel dans le terminal Visual Studio Code.
venv\Scripts\activate.batEnsuite, exécutez la commande pour installer les bibliothèques Python nécessaires à cet exemple.
pip install azure-identity, requestsCréez un fichier
app.pyet utilisez le code pour appeler l’élément de fonctions de données utilisateur.from azure.identity import InteractiveBrowserCredential import requests import json # Acquire a token # DO NOT USE IN PRODUCTION. # Below code to acquire token is to test the User data function endpoint and is for the purpose of development only. # For production, always register an application in a Microsoft Entra ID tenant and use the appropriate client_id and scopes. app = InteractiveBrowserCredential() scp = 'https://analysis.windows.net/powerbi/api/user_impersonation' result = app.get_token(scp) if not result.token: print('Error:', "Could not get access token") # Prepare headers headers = { 'Authorization': f'Bearer {result.token}', 'Content-Type': 'application/json' } FUNCTION_URL = '<REPLACE WITH USER DATA FUNCTION URL>' # Prepare the request data data = '{"name": "John"}' # JSON payload to send to the Azure Function headers = { # "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } 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())) except Exception as e: print({"error": str(e)}, 500) if __name__ == "__main__": app.run(debug=True)Remarque
L'exemple est uniquement à des fins de développement. Mettez à jour l’application pour utiliser l’authentification Microsoft Entra ID avant d’utiliser l’application pour un cas d’utilisation de production.
Appel d'une fonction à partir d'une application externe
Les fonctions peuvent être invoquées en émettant un appel REST vers l'URL du point de terminaison. Sélectionnez la fonction que vous souhaitez appeler dans l'Explorateur de fonctions et sélectionnez Copier l'URL de la fonction. Vous pouvez également activer ou désactiver la possibilité d’utiliser cette URL en externe à partir du menu Propriétés.
Ensuite, utilisez cette URL dans votre application pour appeler la fonction. Consultez Appeler les fonctions de données utilisateur à partir d'une application
Schéma de sortie
Lors de l'appel d'une fonction de données utilisateur à partir d'une application externe, le schéma de sortie aura le format suivant :
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded | BadRequest | Failed | Timeout | ResponseTooLarge",
"output": /*shows the result of the function dependeing on the output type*/,
"errors": [
{
"name": "Error name",
"message": "Error message",
"properties": {
/*Key value pairs custom to error*/
}
},
]
}
Les propriétés suivantes sont renvoyées :
- functionName : Le nom de la fonction qui a été exécutée.
- invocationId : L'ID d'appel pour l'exécution d'une fonction.
-
état : le résultat de l’exécution de la fonction et les valeurs prises en charge sont
Succeeded, ,BadRequestFailed,TimeoutetResponseTooLarge. - sortie : La valeur de sortie renvoyée par la fonction.
- erreurs : Si des erreurs ont été capturées, cela renverra une liste de chaque erreur avec leur nom, leur message d'erreur et leurs propriétés d'erreur.
Codes de réponse
La fonction renverra les codes HTTP suivants à la suite de 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’a pas été 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é car l'exécution a pris plus de 200 secondes. |
| 409 | Conflit | Impossible de terminer la requête en raison d’un état de conflit. Cela peut être dû à 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. |
Débogage et test
Déboguez l’application dans Visual Studio Code à l’aide du débogueur Python. Ajoutez des points d'arrêt si nécessaire pour déboguer d'éventuels problèmes. En savoir plus