Del via


Selvstudium: Aktivér brugerdatafunktioner fra et Python-konsolprogram

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

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.

  1. Gå til Microsoft Entra administrationscenter og registrer en applikation ved at bruge trinene beskrevet i Quickstart: Registrer en applikation hos Microsofts identitetsplatform.

  2. 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.

  3. På listen Administrer skal du vælge API-tilladelserog derefter Tilføj tilladelse.

  4. 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.

  5. Gå tilbage til indstillingen Administrer, og vælg Godkendelse>Tilføj en platform>Enkeltsidet program.

  6. I forbindelse med lokal udvikling skal du tilføje http://localhost:3000 under 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.

  7. 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:

  1. I Fabric-portalen åbner du dit user data functions-element.

  2. Sørg for, at du er i kun kør tilstand, ikke udviklertilstand .

  3. I Funktionsstifinder skal du holde musen over navnet på funktionen og vælge ellipsen (...).

  4. Vælg Egenskaber.

  5. I Egenskaber-panelet skal du sikre dig, at offentlig adgang er aktiveret. Hvis ikke, vælg knappen for at aktivere det.

  6. Kopier den offentlige URL til brug i din Python-applikation.

    Skærmbillede, der viser Egenskaber-panelet med offentlig adgang aktiveret og feltet Offentlig URL.

    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.

  7. I din applikationskode erstatter du pladsholderen FUNCTION_URL med den URL, du kopierede.

Opsæt dit Python-projekt

Opret et Python-projekt med et virtuelt miljø og installer de nødvendige afhængigheder.

  1. Opret for eksempel my-data-appen ny mappe til din Python-app.

  2. Åbn mappen i Visual Studio Code.

  3. Åbn Command Palette (Ctrl+Shift+P) og søg efter Python: Create Environment.

  4. Vælg venv som miljøtype.

  5. Vælg Python 3.11 som tolkerversion.

  6. Åbn en ny terminal i Visual Studio Code (Ctrl+').

  7. Aktiver Python virtuelle miljø:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  8. Installer 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.

  1. Opret en fil med navn app.py i din projektmappe.

  2. 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 InteractiveBrowserCredential for enkelhedens skyld, som åbner en browser til interaktiv login. For produktionsapplikationer skal du sende client_id og tenant_id fra din registrerede Microsoft Entra-applikation til InteractiveBrowserCredential, eller bruge en anden legitimationstype, f.eks ClientSecretCredential . 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, og ResponseTooLargeBadRequest.
  • output: Returværdien af din funktion. Datatypen og strukturen afhænger af, hvad din funktion returnerer. For eksempel, hvis din funktion returnerer en streng, output er en streng. Hvis din funktion returnerer en ordbog, output er det et JSON-objekt.
  • fejl: En liste over fejl, der fanges under udførelsen. Hver fejl indeholder et name, message, og et valgfrit properties objekt, 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.