Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt fabric-gebruikersgegevensfuncties aanroepen vanuit externe toepassingen door HTTP-aanvragen te verzenden naar het openbare eindpunt van de functie. Hiermee kunt u uw Fabric-bedrijfslogica integreren in web-apps, automatiseringsscripts, microservices of een systeem buiten de Fabric-omgeving.
In deze handleiding leert u:
- Een Microsoft Entra-toepassing registreren voor verificatie
- De openbare URL van de functie ophalen en openbare toegang inschakelen
- Een Python-consoletoepassing maken waarmee de functie wordt aangeroepen
- Inzicht in het antwoordschema en de HTTP-statuscodes
Vereiste voorwaarden
- Visual Studio Code is geïnstalleerd op uw lokale computer.
- Python 3.11 geïnstalleerd op uw lokale computer.
- Een Microsoft Fabric-account. U kunt zich aanmelden voor een gratis proefversie.
- Een Infrastructuurwerkruimte.
- Een gepubliceerd item met gebruikersgegevensfuncties. Zie voor instructies Functies voor gebruikersgegevens maken in Visual Studio Code of Functies voor gebruikersgegevens maken in de portal.
Een Microsoft Entra-app maken
Als u gebruikersgegevensfuncties wilt aanroepen vanuit een externe toepassing, moet u een toepassing registreren in Microsoft Entra-id. Deze app-registratie biedt de referenties die uw Python-toepassing gebruikt om te verifiëren.
Ga naar het Microsoft Entra-beheercentrum en registreer een toepassing met behulp van de stappen die worden beschreven in quickstart: Een toepassing registreren bij het Microsoft Identity Platform.
De waarden voor toepassing-ID (client) en directory-ID (tenant) van Microsoft Entra worden weergegeven in het vak Samenvatting. Noteer deze waarden omdat ze later vereist zijn.
Onder de lijst Beheren, selecteer API-machtigingenen vervolgens Machtiging toevoegen.
Voeg de PowerBI-service toe, selecteer Gedelegeerde machtigingen en selecteer UserDataFunction.Execute.All of item. Execute.All permissions. Controleer of beheerderstoestemming niet is vereist.
Ga terug naar de instelling Beheren en selecteer Verificatie>een platformtoepassing> metéén pagina toevoegen.
Voeg voor lokale ontwikkelingsdoeleinden onder
http://localhost:3000toe en controleer of de toepassing is ingeschakeld voor de autorisatiecodestroom met Proof Key for Code Exchange (PKCE). Selecteer de knop Configureren om uw wijzigingen op te slaan. Als de toepassing een fout krijgt met betrekking tot cross-origin-aanvragen, voegt u het platform voor mobiele toepassingen en desktoptoepassingen toe in de vorige stap met dezelfde omleidings-URI.Ga terug naar verificatie, schuif omlaag naar geavanceerde instellingen en selecteer onder Toestaan van openbare clientstromen, Ja voor inschakelen van de volgende mobiele en desktopstromen.
Een consoletoepassing maken
Nu u een app-registratie hebt, maakt u een Python-consoletoepassing die uw gebruikersgegevensfunctie verifieert en aanroept.
Haal de functie-URL op die moet worden aangeroepen
Elke functie voor gebruikersgegevens heeft een unieke openbare URL die fungeert als het REST API-eindpunt. Voordat u de functie vanuit een externe toepassing kunt aanroepen, moet u openbare toegang inschakelen en de URL ophalen.
De functie-URL ophalen:
Open in de Fabric-portal het functie-item voor gebruikersgegevens.
Zorg ervoor dat u zich in de modus Alleen uitvoeren bevindt, niet in de modus Ontwikkelen .
Beweeg in de Functieverkenner de muisaanwijzer over de naam van de functie en selecteer het beletselteken (...).
Selecteer Eigenschappen.
Zorg ervoor dat openbare toegang is ingeschakeld in het deelvenster Eigenschappen. Als dat niet het geval is, selecteert u de schakelaar om deze in te schakelen.
Kopieer de openbare URL voor gebruik in uw Python-toepassing.
Aanbeveling
Als openbare toegang al is ingeschakeld, kunt u het deelvenster Eigenschappen overslaan. Selecteer in Functions Explorer het beletselteken (...) naast de functienaam en selecteer Functie-URL kopiëren. Hiermee kopieert u dezelfde URL als de openbare URL in het deelvenster Eigenschappen.
Vervang in uw toepassingscode de
FUNCTION_URLtijdelijke aanduiding door de URL die u hebt gekopieerd.
Uw Python-project instellen
Maak een Python-project met een virtuele omgeving en installeer de vereiste afhankelijkheden.
Maak bijvoorbeeld
my-data-appeen nieuwe map voor uw Python-app.Open de map in Visual Studio Code.
Open het opdrachtenpalet (Ctrl+Shift+P) en zoek naar Python: Omgeving maken.
Selecteer venv als het omgevingstype.
Selecteer Python 3.11 als de interpreterversie.
Open een nieuwe terminal in Visual Studio Code (Ctrl+').
Activeer de virtuele Python-omgeving:
Windows:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activateInstalleer de vereiste Python-bibliotheken:
pip install azure-identity requests
De toepassingscode toevoegen
Voeg de Python-code toe die wordt geverifieerd met Microsoft Entra ID en roept de functie voor gebruikersgegevens aan.
Maak een bestand met de naam
app.pyin de projectmap.Voeg de volgende code toe. Vervang door
<REPLACE WITH USER DATA FUNCTION URL>de openbare URL die u eerder hebt gekopieerd.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}")Notitie
In dit voorbeeld wordt
InteractiveBrowserCredentialgebruikt vanwege de eenvoud waarmee een browser wordt geopend voor interactieve aanmelding. Voor productietoepassingen geeft u declient_identenant_idvan uw geregistreerde Microsoft Entra-toepassing door aanInteractiveBrowserCredentialof gebruikt u een ander referentietype, zoalsClientSecretCredentialvoor service-naar-serviceverificatie. Zie de Azure Identity-clientbibliotheek voor Python voor meer informatie.
De toepassing uitvoeren
Gebruik de volgende opdracht in de terminal om de toepassing uit te voeren:
python app.py
Er wordt een browservenster geopend waarmee u zich kunt aanmelden met uw Microsoft-account. Na verificatie roept de toepassing uw gebruikersgegevensfunctie aan en drukt de applicatie de respons af.
Als u fouten wilt opsporen in de toepassing in Visual Studio Code, stelt u onderbrekingspunten in door in de rugmarge naast de regelnummers te klikken en vervolgens op F5 te drukken om de foutopsporing te starten. Zie Python-foutopsporing in Visual Studio Code voor meer informatie.
Uitvoerschema
Wanneer u een functie voor gebruikersgegevens aanroept vanuit een externe toepassing, volgt de hoofdtekst van het antwoord dit JSON-schema:
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded",
"output": "Hello, John!",
"errors": []
}
Het antwoord bevat de volgende eigenschappen:
- functionName: de naam van de functie die is uitgevoerd.
- invocationId: een unieke id voor deze specifieke functie-uitvoering. Handig voor het oplossen van problemen en het correleren van logboeken.
-
status: Het resultaat van de uitvoering van de functie. Mogelijke waarden zijn
Succeeded,BadRequest, ,FailedenTimeoutResponseTooLarge. -
uitvoer: De retourwaarde van uw functie. Het gegevenstype en de structuur zijn afhankelijk van wat uw functie retourneert. Als uw functie bijvoorbeeld een tekenreeks retourneert,
outputis dit een tekenreeks. Als uw functie een woordenlijst retourneert,outputis dit een JSON-object. -
fouten: een lijst met fouten die zijn vastgelegd tijdens de uitvoering. Elke fout bevat een
name,messageen optioneelpropertiesobject met sleutel-waardeparen met meer details. Leeg wanneer de functie slaagt.
Antwoordcodes
De functie retourneert de volgende HTTP-codes als gevolg van de uitvoering.
| antwoordcode | Message | Beschrijving |
|---|---|---|
| 200 | Success | De aanvraag is geslaagd. |
| 400 | Onjuiste aanvraag | De aanvraag is niet geldig. Dit antwoord kan worden veroorzaakt door ontbrekende of onjuiste invoerparameterwaarden, gegevenstypen of namen. Dit antwoord kan ook worden veroorzaakt doordat openbare toegang wordt uitgeschakeld voor een functie. |
| 403 | Verboden | Het antwoord was te groot en de aanroep is mislukt. |
| 408 | Time-out aanvragen | De aanvraag is mislukt omdat de uitvoering langer duurt dan de maximaal toegestane tijd. |
| 409 | Conflict | De aanvraag kan niet worden voltooid vanwege een conflicterende status. Deze fout kan worden veroorzaakt door een niet-verwerkte uitzondering of een fout met gebruikersreferenties. |
| 422 | Onjuiste aanvraag | De aanvraag is mislukt vanwege een UserThrownError die is gegenereerd in de functie. |
| 500 | Interne serverfout | De aanvraag is mislukt vanwege een interne fout in de service. |