Delen via


Zelfstudie: Gebruikersgegevensfuncties aanroepen vanuit een Python-consoletoepassing

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

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.

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

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

  3. Onder de lijst Beheren, selecteer API-machtigingenen vervolgens Machtiging toevoegen.

  4. Voeg de PowerBI-service toe, selecteer Gedelegeerde machtigingen en selecteer UserDataFunction.Execute.All of item. Execute.All permissions. Controleer of beheerderstoestemming niet is vereist.

  5. Ga terug naar de instelling Beheren en selecteer Verificatie>een platformtoepassing> metéén pagina toevoegen.

  6. Voeg voor lokale ontwikkelingsdoeleinden onder http://localhost:3000 toe 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.

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

  1. Open in de Fabric-portal het functie-item voor gebruikersgegevens.

  2. Zorg ervoor dat u zich in de modus Alleen uitvoeren bevindt, niet in de modus Ontwikkelen .

  3. Beweeg in de Functieverkenner de muisaanwijzer over de naam van de functie en selecteer het beletselteken (...).

  4. Selecteer Eigenschappen.

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

  6. Kopieer de openbare URL voor gebruik in uw Python-toepassing.

    Schermopname van het deelvenster Eigenschappen met Openbare toegang ingeschakeld en het veld Openbare URL.

    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.

  7. Vervang in uw toepassingscode de FUNCTION_URL tijdelijke 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.

  1. Maak bijvoorbeeld my-data-appeen nieuwe map voor uw Python-app.

  2. Open de map in Visual Studio Code.

  3. Open het opdrachtenpalet (Ctrl+Shift+P) en zoek naar Python: Omgeving maken.

  4. Selecteer venv als het omgevingstype.

  5. Selecteer Python 3.11 als de interpreterversie.

  6. Open een nieuwe terminal in Visual Studio Code (Ctrl+').

  7. Activeer de virtuele Python-omgeving:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

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

  1. Maak een bestand met de naam app.py in de projectmap.

  2. 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 InteractiveBrowserCredential gebruikt vanwege de eenvoud waarmee een browser wordt geopend voor interactieve aanmelding. Voor productietoepassingen geeft u de client_id en tenant_id van uw geregistreerde Microsoft Entra-toepassing door aan InteractiveBrowserCredentialof gebruikt u een ander referentietype, zoals ClientSecretCredential voor 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 zijnSucceeded, BadRequest, , Faileden TimeoutResponseTooLarge.
  • 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, output is dit een tekenreeks. Als uw functie een woordenlijst retourneert, output is dit een JSON-object.
  • fouten: een lijst met fouten die zijn vastgelegd tijdens de uitvoering. Elke fout bevat een name, messageen optioneel properties object 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.