Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Du kan påkalde Fabric-brugerdatafunktioner fra eksterne applikationer ved at sende HTTP-forespørgsler til funktionens offentlige endepunkt. Dette gør det muligt for dig at integrere din Fabric-forretningslogik i webapps, automatiseringsscripts, mikroservices eller ethvert system uden for Fabric-miljøet.
I dette selvstudium skal du:
- Registrer en Microsoft Entra-applikation til autentificering
- Få funktionens offentlige URL og aktiver offentlig adgang
- Opret en Python-konsolapplikation, der kalder funktionen
- Forstå responsskemaet og HTTP-statuskoderne
Forudsætninger
- Visual Studio Code installeret på din lokale maskine.
- Python 3.11 installeret på din lokale maskine.
- En Microsoft Fabric-konto. Du kan tilmelde dig en gratis prøveperiode.
- Et Fabric-arbejdsområde.
- Et publiceret user data-funktionselement. For instruktioner, se Opret brugerdatafunktioner i Visual Studio Code eller Opret brugerdatafunktioner i portalen.
Opret en Microsoft Entra-app
For at kalde brugerdatafunktioner fra en ekstern applikation skal du registrere en applikation i Microsoft Entra ID. Denne app-registrering giver de legitimationsoplysninger, din Python-applikation bruger til autentificering.
Gå til Microsoft Entra administrationscenter og registrer en applikation ved at bruge trinene beskrevet i Quickstart: Registrer en applikation hos Microsofts identitetsplatform.
Værdierne for Microsoft Entra-appprogram-id (klient) og katalog-id (lejer) vises i feltet Oversigt. Registrer disse værdier, fordi de er påkrævet senere.
På listen Administrer skal du vælge API-tilladelserog derefter Tilføj tilladelse.
Tilføj PowerBI-tjeneste, vælg Delegerede tilladelser, og vælg UserDataFunction.Execute.All eller item. Udfør.Alle tilladelser. Bekræft, at administratorsamtykke ikke er påkrævet.
Gå tilbage til indstillingen Administrer, og vælg Godkendelse>Tilføj en platform>Enkeltsidet program.
I forbindelse med lokal udvikling skal du tilføje
http://localhost:3000under Omdirigerings-URI'er og bekræfte, at programmet er aktiveret for godkendelseskodeflowet med proof key for Code Exchange (PKCE). Vælg knappen Konfigurer for at gemme dine ændringer. Hvis programmet støder på en fejl, der er relateret til anmodninger på tværs af oprindelse, skal du tilføje platformen Mobil- og skrivebordsprogrammer i det forrige trin med den samme omdirigerings-URI.Gå tilbage til Godkendelse, rul ned til avancerede indstillinger, og under Tillad offentlige klientflowskal du vælge Ja for at Aktivér følgendepå mobilenheder og stationære computere .
Opret et konsolprogram
Nu hvor du har en app-registrering, skal du oprette en Python-konsolapplikation, der autentificerer og kalder din brugerdatafunktion.
Få funktions-URL'en til at påkalde
Hver brugerdatafunktion har en unik offentlig URL, der fungerer som dens REST API-endepunkt. Før du kan kalde funktionen fra en ekstern applikation, skal du aktivere offentlig adgang og hente URL'en.
For at få funktions-URL:
I Fabric-portalen åbner du dit user data functions-element.
Sørg for, at du er i kun kør tilstand, ikke udviklertilstand .
I Funktionsstifinder skal du holde musen over navnet på funktionen og vælge ellipsen (...).
Vælg Egenskaber.
I Egenskaber-panelet skal du sikre dig, at offentlig adgang er aktiveret. Hvis ikke, vælg knappen for at aktivere det.
Kopier den offentlige URL til brug i din Python-applikation.
Tips
Hvis offentlig adgang allerede er aktiveret, kan du springe Egenskaber-panelet over. I Funktionsstifinder vælger du ellipsen (...) ved siden af funktionsnavnet og vælger Kopier Funktions-URL. Dette kopierer den samme URL som den offentlige URL i Egenskaber-panelet.
I din applikationskode erstatter du pladsholderen
FUNCTION_URLmed den URL, du kopierede.
Opsæt dit Python-projekt
Opret et Python-projekt med et virtuelt miljø og installer de nødvendige afhængigheder.
Opret for eksempel
my-data-appen ny mappe til din Python-app.Åbn mappen i Visual Studio Code.
Åbn Command Palette (Ctrl+Shift+P) og søg efter Python: Create Environment.
Vælg venv som miljøtype.
Vælg Python 3.11 som tolkerversion.
Åbn en ny terminal i Visual Studio Code (Ctrl+').
Aktiver Python virtuelle miljø:
Windows:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activateInstaller de nødvendige Python-biblioteker:
pip install azure-identity requests
Tilføj applikationskoden
Tilføj Python-koden, der autentificerer med Microsoft Entra ID og kalder din brugerdatafunktion.
Opret en fil med navn
app.pyi din projektmappe.Tilføj følgende kode. Erstat
<REPLACE WITH USER DATA FUNCTION URL>med den offentlige URL, du kopierede tidligere.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}")Seddel
Dette eksempel bruger
InteractiveBrowserCredentialfor enkelhedens skyld, som åbner en browser til interaktiv login. For produktionsapplikationer skal du sendeclient_idogtenant_idfra din registrerede Microsoft Entra-applikation tilInteractiveBrowserCredential, eller bruge en anden legitimationstype, f.eksClientSecretCredential. til service-til-service autentificering. For mere information, se Azure Identity klientbibliotek for Python.
Kør applikationen
For at køre applikationen skal du bruge følgende kommando i terminalen:
python app.py
Et browservindue åbnes, hvor du kan logge ind med din Microsoft-konto. Efter autentificeringen kalder applikationen din brugerdatafunktion og udskriver svaret.
For at fejlfinde applikationen i Visual Studio Code, sæt breakpoints ved at klikke i tagrenderne ved siden af linjenumrene, og tryk derefter F5 for at starte fejlsøgningen. For mere information, se Python-fejlfinding i Visual Studio Code.
Outputskema
Når du kalder en brugerdatafunktion fra en ekstern applikation, følger responskroppen dette JSON-skema:
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded",
"output": "Hello, John!",
"errors": []
}
Svaret indeholder følgende egenskaber:
- functionName: Navnet på den funktion, der blev udført.
- invocationId: En unik identifikator for denne specifikke funktionsudførelse. Nyttigt til fejlfinding og korrelering af logfiler.
-
Status: Resultatet af funktionens udførelse. Mulige værdier er
Succeeded, , ,Failed,Timeout, ogResponseTooLargeBadRequest. -
output: Returværdien af din funktion. Datatypen og strukturen afhænger af, hvad din funktion returnerer. For eksempel, hvis din funktion returnerer en streng,
outputer en streng. Hvis din funktion returnerer en ordbog,outputer det et JSON-objekt. - fejl: En liste over fejl, der fanges under udførelsen. Hver fejl indeholder et
name,message, og et valgfritpropertiesobjekt, der indeholder nøgle-værdi-par med flere detaljer. Tom, når funktionen lykkes.
Svarkoder
Funktionen returnerer følgende HTTP-koder som følge af udførelsen.
| svarkode | Budskab | Beskrivelse |
|---|---|---|
| 200 | Vellykket | Anmodningen blev fuldført. |
| 400 | Ugyldig anmodning | Anmodningen var ikke gyldig. Dette svar kan skyldes manglende eller forkerte inputparameterværdier, datatyper eller navne. Denne reaktion kan også skyldes, at offentlig adgang er slået fra for en funktion. |
| 403 | Ikke tilladt | Svaret var for stort, og aktiveringen mislykkedes. |
| 408 | Anmod om timeout | Anmodningen mislykkedes, fordi udførelsen tog længere tid end den maksimalt tilladte tid. |
| 409 | Conflict | Anmodningen kunne ikke gennemføres på grund af en konfliktfyldt tilstand. Denne fejl kan skyldes en unhandled-undtagelse eller en fejl med brugerlegitimationsoplysninger. |
| 422 | Ugyldig anmodning | Anmodningen mislykkedes på grund af en UserThrownError, der blev udløst i funktionen. |
| 500 | Intern serverfejl | Anmodningen mislykkedes på grund af en intern fejl i tjenesten. |