Sdílet prostřednictvím


Návod: Volání funkcí uživatelských dat z konzolové aplikace Python

Funkce uživatelských dat fabric můžete vyvolat z externích aplikací odesláním požadavků HTTP do veřejného koncového bodu funkce. To vám umožní integrovat obchodní logiku Fabric do webových aplikací, automatizačních skriptů, mikroslužeb nebo jakéhokoli systému mimo prostředí Fabric.

V tomto kurzu se naučíte:

  • Registrace aplikace Microsoft Entra pro ověřování
  • Získání veřejné adresy URL funkce a povolení veřejného přístupu
  • Vytvoření konzolové aplikace Pythonu, která volá funkci
  • Vysvětlení schématu odpovědí a stavových kódů HTTP

Požadavky

Vytvoření aplikace Microsoft Entra

Pokud chcete volat funkce uživatelských dat z externí aplikace, musíte aplikaci zaregistrovat v Microsoft Entra ID. Tato registrace aplikace poskytuje přihlašovací údaje, které vaše aplikace v Pythonu používá k ověření.

  1. Přejděte do Centra pro správu Microsoft Entra a zaregistrujte aplikaci pomocí kroků popsaných v rychlém startu: Registrace aplikace na platformě Microsoft Identity Platform.

  2. Hodnoty ID aplikace Microsoft Entra (klient) a ID adresáře (tenanta) se zobrazí v poli Souhrn. Poznamenejte si tyto hodnoty, protože je budete potřebovat později.

  3. V seznamu Spravovat vyberte oprávnění rozhraní API, a pak Přidat oprávnění.

  4. Přidejte službu PowerBI, vyberte Delegovaná oprávnění a vyberte UserDataFunction.Execute.All nebo položku. Oprávnění Execute.All Ověřte, že souhlas správce není povinný.

  5. Vraťte se do nastavení Spravovat a vyberte Možnost Přidat ověřování>jednostrákovou aplikaci>.

  6. Pro účely místního vývoje přidejte http://localhost:3000 do identifikátorů URI přesměrování a ověřte, že je aplikace povolená pro tok autorizačního kódu s ověřovacím klíčem pro exchange kódu (PKCE). Výběrem tlačítka Konfigurovat uložte provedené změny. Pokud aplikace narazí na chybu související s požadavky mezi různými zdroji, přidejte platformu mobilních a desktopových aplikací v předchozím kroku se stejnou URI adresou přesměrování.

  7. Zpět na Ověřování, sjeďte dolů na Rozšířené nastavení a v části Povolení veřejných klientských tokůzaškrtněte Ano u Povolit následující mobilní a desktopové toky.

Vytvoření konzolové aplikace

Teď, když máte registraci aplikace, vytvořte konzolovou aplikaci Pythonu, která ověřuje a volá funkci uživatelských dat.

Získat adresu URL funkce pro vyvolání

Každá funkce uživatelských dat má jedinečnou veřejnou adresu URL, která slouží jako koncový bod rozhraní REST API. Než budete moct volat funkci z externí aplikace, musíte povolit veřejný přístup a získat adresu URL.

Získání adresy URL funkce:

  1. Na portálu Fabric otevřete položku funkcí uživatelských dat.

  2. Ujistěte se, že jste v režimu Pouze spuštění, ne v režimu Vývoj.

  3. V Průzkumníku funkcí najeďte myší na název funkce a vyberte symbol se třemi tečkami (...).

  4. Vyberte Vlastnosti.

  5. V podokně Vlastnosti se ujistěte, že je povolený veřejný přístup . Pokud ne, vyberte přepínač, který chcete povolit.

  6. Zkopírujte veřejnou adresu URL pro použití v aplikaci v Pythonu.

    Snímek obrazovky znázorňující podokno Vlastnosti s povoleným veřejným přístupem a polem Veřejná adresa URL

    Návod

    Pokud je už povolený veřejný přístup, můžete podokno Vlastnosti přeskočit. V Průzkumníku funkcí vyberte tři tečky (...) vedle názvu funkce a vyberte Kopírovat adresu URL funkce. Tím se zkopíruje stejná adresa URL jako Public URL v podokně Vlastnosti.

  7. V kódu aplikace nahraďte FUNCTION_URL zástupný text adresou URL, kterou jste zkopírovali.

Nastavení projektu Pythonu

Vytvořte projekt Pythonu s virtuálním prostředím a nainstalujte požadované závislosti.

  1. Vytvořte novou složku pro aplikaci v Pythonu, například my-data-app.

  2. Otevřete složku v editoru Visual Studio Code.

  3. Otevřete paletu příkazů (Ctrl+Shift+P) a vyhledejte Python: Vytvořit prostředí.

  4. Jako typ prostředí vyberte venv .

  5. Jako verzi interpretu vyberte Python 3.11 .

  6. Otevřete nový terminál v editoru Visual Studio Code (Ctrl+').

  7. Aktivujte virtuální prostředí Pythonu:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  8. Nainstalujte požadované knihovny Pythonu:

    pip install azure-identity requests
    

Přidání kódu aplikace

Přidejte kód v jazyce Python, který se autentizuje prostřednictvím Microsoft Entra ID a volá vaši funkci uživatelských dat.

  1. Vytvořte soubor s názvem app.py ve složce projektu.

  2. Přidejte následující kód. Nahraďte <REPLACE WITH USER DATA FUNCTION URL> veřejnou adresou URL, kterou jste zkopírovali dříve.

    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}")
    

    Poznámka:

    Tento příklad používá InteractiveBrowserCredential pro zjednodušení a otevření prohlížeče pro interaktivní přihlášení. V případě produkčních aplikací předávejte client_id a tenant_id ze své registrované aplikace Microsoft Entra do InteractiveBrowserCredential, nebo použijte jiný typ přihlašovacích údajů, například ClientSecretCredential pro ověřování mezi službami. Další informace najdete v klientské knihovně Azure Identity pro Python.

Spuštění aplikace

Pokud chcete aplikaci spustit, použijte v terminálu následující příkaz:

python app.py

Otevře se okno prohlížeče, ve které se můžete přihlásit pomocí účtu Microsoft. Po ověření aplikace zavolá funkci dat uživatele a vytiskne odpověď.

Pokud chcete ladit aplikaci v editoru Visual Studio Code, nastavte zarážky kliknutím na okraj vedle čísel řádků a poté stiskněte klávesu F5 pro spuštění ladění. Další informace najdete v tématu Ladění Pythonu v editoru Visual Studio Code.

Výstupní schéma

Při vyvolání funkce dat uživatele z externí aplikace se text odpovědi řídí tímto schématem JSON:

{
  "functionName": "hello_fabric",
  "invocationId": "1234567890",
  "status": "Succeeded",
  "output": "Hello, John!",
  "errors": []
}

Odpověď obsahuje tyto vlastnosti:

  • functionName: Název funkce, která byla provedena.
  • invocationId: Jedinečný identifikátor pro toto konkrétní spuštění funkce. Užitečné pro řešení potíží a korelaci protokolů.
  • status: Výsledek spuštění funkce. Možné hodnoty jsou Succeeded, , BadRequestFailed, Timeouta ResponseTooLarge.
  • výstup: Návratová hodnota funkce. Datový typ a struktura závisí na tom, co vaše funkce vrátí. Pokud například vaše funkce vrátí řetězec, output je řetězec. Pokud vaše funkce vrátí slovník, output je objekt JSON.
  • chyby: Seznam chyb zachycených během provádění. Každá chyba obsahuje objekt name, messagea volitelný properties objekt obsahující páry klíč-hodnota s dalšími podrobnostmi. Prázdné, pokud bude funkce úspěšná.

Kódy odpovědí

Funkce vrátí následující kódy HTTP v důsledku provádění.

Kód odpovědi Zpráva popis
200 Success Požadavek byl úspěšně zpracován.
400 Nesprávná žádost Požadavek nebyl platný. Tato odpověď může být způsobená chybějícími nebo nesprávnými vstupními hodnotami parametrů, datovými typy nebo názvy. Tato odpověď může být také způsobena vypnutím veřejného přístupu pro funkci.
403 Zakázáno Odezva byla příliš velká a vyvolání selhalo.
408 Časový limit požadavku Požadavek selhal kvůli tomu, že provádění trvá déle, než je maximální povolená doba.
409 Konflikt Žádost se nedá dokončit kvůli konfliktnímu stavu. Příčinou této chyby může být neošetřená výjimka nebo chyba s přihlašovacími údaji uživatele.
422 Nesprávná žádost Požadavek selhal kvůli chybě UserThrownError vyvolané ve funkci.
500 Vnitřní chyba serveru Požadavek selhal kvůli vnitřní chybě ve službě.