Del via


Selvstudium: Aktivér brugerdatafunktioner fra et Python-konsolprogram

Hvis du vil aktivere funktionselementer for stofbrugerdata fra et konsolprogram i Python, kan du sende HTTP-anmodninger til det funktionsslutpunkt, der skal udføres. I denne vejledning lærer du, hvordan du konfigurerer en Python-app ved hjælp af Visual Studio Code.

Forudsætninger

Opret en Microsoft Entra-app

Følgende trin forklarer, hvordan du konfigurerer understøttelse af en ReactJS-applikation i Microsoft Entra.

  1. Registrer et program ved hjælp af de trin, der er beskrevet i Hurtig start: Registrer et program med Microsoft-identitetsplatformen.

  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

  1. Funktionen skal være offentligt tilgængelig. I Funktionsoversigt skal du holde markøren over navnet på funktionen og vælge ellipseikonet (...) , der vises, og derefter vælge Egenskaber. I ruden Egenskaber, der åbnes, skal du aktivere Offentlig adgang. Du bør også notere dig den offentlige URL-adresse, der skal bruges i dit Python-program.

  2. Opret en ny mappe til din Python-app, f.eks. my-data-app. Åbn mappen i Visual Studio Code.

  3. Konfigurer det virtuelle Python-miljø i Visual Studio Code. Hvis du vil oprette lokale miljøer i Visual Studio Code, skal du åbne kommandopaletten med Ctrl+Skift+P og derefter søge efter og vælge kommandoen Python: Opret miljø.

    • Kommandoen præsenterer en liste over miljøtyper og vælger venv.
    • Vælg Python-fortolkerversionen Python 3.11.
  4. Kør følgende kommando for at aktivere det virtuelle miljø i Visual Studio Code-terminalen.

    venv\Scripts\activate.bat
    
  5. Kør derefter kommandoen for at installere de Python-biblioteker, der skal bruges til dette eksempel.

    pip install azure-identity, requests 
    
  6. Opret en app.py fil, og brug koden til at aktivere elementet brugerdatafunktioner.

    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)
    
    

    Seddel

    Eksemplet er kun til udviklingsformål. Opdater programmet til at bruge Microsoft Entra ID-godkendelse, før du bruger programmet til en produktionsbrugssag.

Aktivering af en funktion fra et eksternt program

Funktioner kan aktiveres ved at udstede et REST-kald til URL-adressen for slutpunktet. Vælg den funktion, du vil aktivere i Functions Explorer, og vælg Kopiér FUNKTIONs-URL-adresse. Du kan også slå muligheden for at bruge denne URL-adresse eksternt fra menuen Egenskaber.

Skærmbillede, der viser, hvordan du foretager lokal fejlfinding med pausepunkter.

Brug derefter denne URL-adresse i dit program til at aktivere funktionen. Se Aktivér brugerdatafunktioner fra et program

Outputskema

Når du aktiverer en brugerdatafunktion fra et eksternt program, har outputskemaet følgende format:

{
  "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*/
       }
     },
  ]
}

Følgende egenskaber returneres:

  • functionName: Navnet på den funktion, der blev udført.
  • invocationId: Aktiverings-id'et for udførelse af en funktion.
  • status: Resultatet af funktionens udførelse og understøttede værdier er Succeeded, BadRequest, FailedTimeout , og ResponseTooLarge.
  • output: Den outputværdi, der returneres af funktionen.
  • fejl: Hvis der blev registreret fejl, returneres der en liste over hver fejl med deres navn, fejlmeddelelse og fejlegenskaber.

Svarkoder

Funktionen returnerer følgende HTTP-koder som et resultat 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 tager mere end 200 sekunder.
409 Conflict Anmodningen kunne ikke fuldføres på grund af en modstridende tilstand. Dette kan skyldes en ubehandlet 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.

Fejlfinding og test

Foretag fejlfinding af programmet i Visual Studio Code ved hjælp af python-fejlfinding. Tilføj pausepunkter, hvis det er nødvendigt for at foretage fejlfinding, hvis der er problemer. Få mere at vide

Næste trin