Megosztás a következőn keresztül:


Oktatóanyag: Felhasználói adatfüggvények meghívása Python-konzolalkalmazásból

A Fabric felhasználói adatfüggvényeket külső alkalmazásokból is meghívhatja, ha HTTP-kéréseket küld a függvény nyilvános végpontjára. Ez lehetővé teszi a Fabric üzleti logikájának integrálását webalkalmazásokba, automatizálási szkriptekbe, mikroszolgáltatásokba vagy a Fabric-környezeten kívüli rendszerekbe.

Ebben az útmutatóban Ön:

  • Microsoft Entra-alkalmazás regisztrálása hitelesítéshez
  • A függvény nyilvános URL-címének lekérése és a nyilvános hozzáférés engedélyezése
  • Python-konzolalkalmazás létrehozása, amely meghívja a függvényt
  • A válaszséma és a HTTP-állapotkódok ismertetése

Előfeltételek

Microsoft Entra alkalmazás létrehozása

Ha külső alkalmazásból szeretné meghívni a felhasználói adatfüggvényeket, regisztrálnia kell egy alkalmazást a Microsoft Entra-azonosítóban. Ez az alkalmazásregisztráció biztosítja a Python-alkalmazás által a hitelesítéshez használt hitelesítő adatokat.

  1. Lépjen a Microsoft Entra felügyeleti központjába , és regisztráljon egy alkalmazást a rövid útmutatóban ismertetett lépések végrehajtásával : Alkalmazás regisztrálása a Microsoft identitásplatformon.

  2. A Microsoft Entra alkalmazás (ügyfél) azonosítója és címtár (bérlő) azonosítója az Összegzés dobozban jelenik meg. Jegyezze fel ezeket az értékeket, mert később szükség van rájuk.

  3. A Kezelés listában válassza a API-engedélyeket, majd kattintson a Engedély hozzáadásagombra.

  4. Adja hozzá a PowerBI szolgáltatást, válassza a Delegált engedélyek lehetőséget, majd a UserDataFunction.Execute.All vagy elem lehetőséget. Execute.All engedélyek. Győződjön meg arról, hogy nincs szükség rendszergazdai hozzájárulásra.

  5. Lépjen vissza a Kezelés beállításhoz, és válassza a Hitelesítés>egyoldalas> hozzáadása lehetőséget.

  6. Helyi fejlesztési célokból adja hozzá http://localhost:3000 az Átirányítási URI-k alatt, és győződjön meg arról, hogy az alkalmazás engedélyezve van az engedélyezési kódfolyamathoz a Code Exchange-hez (PKCE) készült Proof Key billentyűvel. A módosítások mentéséhez válassza a Konfigurálás gombot. Ha az alkalmazás a forrásközi kérelmekkel kapcsolatos hibát tapasztal, adja hozzá a Mobil és asztali alkalmazásplatformot az előző lépésben ugyanazzal az átirányítási URI-val.

  7. Lépjen vissza a Hitelesítésszakaszhoz, görgessen le a Speciális beállítások részhez, majd a Nyilvános ügyfélfolyamatok engedélyezésealatt válassza az Igen lehetőséget a Az alábbi mobil- és asztali folyamatok engedélyezéseesetén.

Konzolalkalmazás létrehozása

Most, hogy már rendelkezik alkalmazásregisztrációval, hozzon létre egy Python-konzolalkalmazást, amely hitelesíti és meghívja a felhasználói adatfüggvényt.

A meghívandó függvény URL-címének lekérése

Minden felhasználói adatfüggvény rendelkezik egy egyedi nyilvános URL-címvel, amely a REST API-végpontjaként szolgál. Mielőtt meghívhatja a függvényt egy külső alkalmazásból, engedélyeznie kell a nyilvános hozzáférést, és le kell kérnie az URL-címet.

A függvény URL-címének lekérése:

  1. A Fabric portálon nyissa meg a felhasználói adatfüggvény-elemet.

  2. Győződjön meg arról, hogy csak Futtatás módban van, nem pedig Fejlesztés módban.

  3. A Függvénykezelőben mutasson a függvény nevére, és válassza ki a három pontot (...).

  4. Válassza a Tulajdonságokelemet.

  5. A Tulajdonságok panelen győződjön meg arról, hogy a nyilvános hozzáférés engedélyezve van. Ha nem, válassza a kapcsolót az engedélyezéshez.

  6. Másolja ki a Nyilvános URL-címet a Python-alkalmazásban való használatra.

    Képernyőkép a Tulajdonságok panelről, amelyen engedélyezve van a nyilvános hozzáférés és a Nyilvános URL-mező.

    Jótanács

    Ha a nyilvános hozzáférés már engedélyezve van, kihagyhatja a Tulajdonságok panelt. A Függvénykezelőben válassza a függvény neve melletti három pontot (...), majd a Függvény URL-címének másolása lehetőséget. Ez ugyanazt az URL-címet másolja, mint a Nyilvános URL-címet a Tulajdonságok panelen.

  7. Az alkalmazáskódban cserélje le a FUNCTION_URL helyőrzőt a másolt URL-címre.

A Python-projekt beállítása

Hozzon létre egy Python-projektet egy virtuális környezettel, és telepítse a szükséges függőségeket.

  1. Hozzon létre például egy új mappát a Python-alkalmazáshoz my-data-app.

  2. Nyissa meg a mappát a Visual Studio Code-ban.

  3. Nyissa meg a parancskatalógust (Ctrl+Shift+P), és keresse meg a Python: Környezet létrehozása parancsot.

  4. Válassza ki a venv elemet a környezet típusaként.

  5. Válassza a Python 3.11-et értelmező verzióként.

  6. Nyisson meg egy új terminált a Visual Studio Code-ban (Ctrl+).

  7. A Python virtuális környezet aktiválása:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  8. Telepítse a szükséges Python-kódtárakat:

    pip install azure-identity requests
    

Az alkalmazáskód hozzáadása

Adja hozzá a Python-kódot, amely a Microsoft Entra ID segítségével hitelesít, és meghívja a felhasználói adatfüggvényt.

  1. Hozzon létre egy fájlt app.py a projektmappában.

  2. Adja hozzá a következő kódot. Cserélje le <REPLACE WITH USER DATA FUNCTION URL> a korábban másolt nyilvános URL-címre.

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

    Megjegyzés

    Az egyszerűség kedvéért ez a példa a InteractiveBrowserCredential elemet használja, amely megnyitja a böngészőt az interaktív bejelentkezéshez. Éles alkalmazások esetén adja át a client_id és tenant_id a regisztrált Microsoft Entra-alkalmazásból InteractiveBrowserCredential-hoz/hez, vagy használjon másik hitelesítő típust, például ClientSecretCredential-at/et szolgáltatásközi hitelesítéshez. További információt a Pythonhoz készült Azure Identity ügyfélkódtárában talál.

Az alkalmazás futtatása

Az alkalmazás futtatásához használja a következő parancsot a terminálban:

python app.py

Megnyílik egy böngészőablak, amellyel bejelentkezhet a Microsoft-fiókjával. A hitelesítés után az alkalmazás meghívja a felhasználói adatkezelő függvényt, és megjeleníti a választ.

Az alkalmazás Visual Studio Code-ban való hibakereséséhez állítsa be a töréspontokat a sorszámok melletti ereszcsatornára kattintva, majd nyomja le az F5 billentyűt a hibakeresés megkezdéséhez. További információ: Python-hibakeresés a Visual Studio Code-ban.

Kimeneti séma

Amikor külső alkalmazásból hív meg egy felhasználói adatfüggvényt, a válasz törzse a következő JSON-sémát követi:

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

A válasz a következő tulajdonságokat tartalmazza:

  • functionName: A végrehajtott függvény neve.
  • invocationId: Az adott függvény végrehajtásának egyedi azonosítója. A naplók hibaelhárításához és korrelálásához hasznos.
  • állapot: A függvény végrehajtásának eredménye. A lehetséges értékek a következők: Succeeded, BadRequestFailed, Timeoutés ResponseTooLarge.
  • kimenet: A függvény visszatérési értéke. Az adattípus és a struktúra attól függ, hogy a függvény mit ad vissza. Ha például a függvény egy sztringet ad vissza, output az egy sztring. Ha a függvény egy szótárt ad vissza, output az egy JSON-objektum.
  • hibák: A végrehajtás során rögzített hibák listája. Minden hiba tartalmaz egy name, message, és opcionális properties objektumot, amely kulcs-érték párokat tartalmaz további részletekkel. Üres, ha a függvény sikeres.

Válaszkódok

A függvény a végrehajtás eredményeként a következő HTTP-kódokat adja vissza.

válaszkód Message Leírás
200 Success A kérés sikeres volt.
400 Hibás kérés A kérés érvénytelen volt. A válasz oka lehet hiányzó vagy helytelen bemeneti paraméterek értékei, adattípusok vagy nevek. Ezt a választ az is okozhatja, hogy egy függvény nyilvános hozzáférése ki van kapcsolva.
403 hibakód Tiltott A válasz túl nagy volt, és a meghívás sikertelen volt.
408 Kérelem időtúllépése A kérés meghiúsult, mert a végrehajtás a megengedettnél hosszabb időt vett igénybe.
409 Ütközés A kérés nem hajtható végre ütköző állapot miatt. Ezt a hibát nem kezelt kivétel vagy a felhasználói hitelesítő adatokkal kapcsolatos hiba okozhatja.
422 Hibás kérés A kérés meghiúsult a függvényben létrehozott UserThrownError miatt.
ötszáz Belső kiszolgálóhiba A kérés a szolgáltatás belső hibája miatt meghiúsult.