Delen via


Zelfstudie: Gebruikersgegevensfuncties aanroepen vanuit een Python-consoletoepassing

Als u onderdelen van de functie Fabric-gebruikersgegevens wilt aanroepen vanuit een consoletoepassing in Python, kunt u HTTP-aanvragen verzenden naar het functie-eindpunt dat moet worden uitgevoerd. In deze quickstart leert u hoe u een Python-app instelt met behulp van Visual Studio Code.

Vereiste voorwaarden

Een Microsoft Entra-app maken

In de volgende stappen wordt uitgelegd hoe u ondersteuning configureert voor een ReactJS-toepassing in Microsoft Entra.

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

  1. De functie moet openbaar toegankelijk zijn. Beweeg in de Functieverkenner de muisaanwijzer over de naam van de functie en selecteer het beletselteken (...) dat wordt weergegeven en selecteer vervolgens Eigenschappen. Schakel in het deelvenster Eigenschappen dat wordt geopend Openbare toegangin. U moet ook een notitie maken van de openbare URL voor gebruik in uw Python-toepassing.

  2. Maak een nieuwe map voor uw Python-app, bijvoorbeeld mijn-gegevens-app. Open de map in Visual Studio Code.

  3. Stel de virtuele Python-omgeving in Visual Studio Code in. Als u lokale omgevingen wilt maken in Visual Studio Code, opent u het opdrachtenpalet met Ctrl+Shift+P en zoekt en selecteert u vervolgens de opdracht Omgeving maken.

    • Met de opdracht wordt een lijst met omgevingstypen weergegeven en wordt venv geselecteerd.
    • Selecteer de Python-interpreterversie Python 3.11.
  4. Voer de volgende opdracht uit om de virtuele omgeving te activeren in de Visual Studio Code-terminal.

    venv\Scripts\activate.bat
    
  5. Voer vervolgens de opdracht uit om de Python-bibliotheken te installeren die nodig zijn voor dit voorbeeld.

    pip install azure-identity, requests 
    
  6. Maak een app.py-bestand en gebruik de code om het gebruikersgegevensfuncties-item aan te roepen.

    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)
    
    

    Notitie

    Het voorbeeld is alleen bedoeld voor ontwikkelingsdoeleinden . Werk de toepassing bij voor het gebruik van Microsoft Entra ID-verificatie voordat u de toepassing gebruikt voor een productiegebruiksscenario.

Een functie aanroepen vanuit een externe toepassing

Functies kunnen worden aangeroepen door een REST-aanroep naar de eindpunt-URL uit te voeren. Selecteer de functie die u wilt aanroepen in de Functions Explorer en selecteer Functie-URL kopiëren. U kunt de mogelijkheid om deze URL extern te gebruiken ook in- of uitschakelen vanuit het menu Eigenschappen.

Schermafbeelding waarin wordt getoond hoe u lokaal kunt debuggen met behulp van breakpoints.

Gebruik vervolgens deze URL in uw toepassing om de functie aan te roepen. Zie Functies voor gebruikersgegevens aanroepen vanuit een toepassing

Uitvoerschema

Wanneer u een gebruikersgegevensfunctie aanroept vanuit een externe toepassing, heeft het uitvoerschema de volgende indeling:

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

De volgende eigenschappen worden geretourneerd:

  • functionName: de naam van de functie die is uitgevoerd.
  • invocationId: de aanroep-id voor het uitvoeren van een functie.
  • status: Het resultaat van de uitvoering en ondersteunde waarden van de functie zijn Succeeded, BadRequest, Faileden TimeoutResponseTooLarge.
  • uitvoer: de uitvoerwaarde die door de functie wordt geretourneerd.
  • fouten: als er fouten zijn vastgelegd, retourneert dit een lijst met elke fout met de naam, het foutbericht en de fouteigenschappen.

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 ongeldig. 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 dan 200 seconden duurt.
409 Conflict De aanvraag kan niet worden voltooid vanwege een conflicterende status. Dit 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.

Foutopsporing en testen uitvoeren

Fouten opsporen in de toepassing in Visual Studio Code met behulp van python-foutopsporingsprogramma. Voeg indien nodig onderbrekingspunten toe om fouten op te sporen als er problemen zijn. Meer informatie

Volgende stappen