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


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

Ha a Fabric User adatfüggvény elemeit egy pythonos konzolalkalmazásból szeretné meghívni, http-kéréseket küldhet a végrehajtandó függvényvégpontnak. Ebben a rövid útmutatóban megtudhatja, hogyan állíthat be Python-alkalmazást a Visual Studio Code használatával.

Előfeltételek

Microsoft Entra alkalmazás létrehozása

Az alábbi lépések bemutatják, hogyan konfigurálható a ReactJS-alkalmazások támogatása a Microsoft Entra-ban.

  1. Alkalmazás regisztrálása az rövid útmutatóban leírt lépések használatá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

  1. A függvénynek nyilvánosan hozzáférhetőnek kell lennie. A Függvénykezelőben mutasson a függvény nevére, és válassza a megjelenő három pont ikont (...), majd válassza a Tulajdonságoklehetőséget. A Tulajdonságok panelen, amely megnyílik, engedélyezze a nyilvános hozzáférést. Jegyezze fel a Python-alkalmazásban használandó nyilvános URL-címet is.

  2. Hozzon létre egy új mappát a Python-alkalmazáshoz, például my-data-app. Nyissa meg a mappát a Visual Studio Code-ban.

  3. A Python virtuális környezet beállítása a Visual Studio Code-ban. Ha helyi környezeteket szeretne létrehozni a Visual Studio Code-ban, nyissa meg a Parancspalettát a Ctrl+Shift+P billentyűkombinációval, majd keresse meg és válassza ki a Python: Környezet létrehozása parancsot.

    • A parancs megjeleníti a környezettípusok listáját, és kiválasztja a venv-t.
    • Válassza ki a Python-értelmező verzióját Python 3.11.
  4. Futtassa a következő parancsot a virtuális környezet aktiválásához a Visual Studio Code terminálban.

    venv\Scripts\activate.bat
    
  5. Ezután futtassa a parancsot a példához szükséges Python-kódtárak telepítéséhez.

    pip install azure-identity, requests 
    
  6. Hozzon létre egy app.py fájlt, és használja a kódot a felhasználói adatfüggvényelem meghívásához.

    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)
    
    

    Megjegyzés

    A példa csak fejlesztési célokra szolgál. Frissítse az alkalmazást a Microsoft Entra ID-hitelesítés használatára, mielőtt éles használati esethez használja az alkalmazást.

Függvény meghívása külső alkalmazásból

A függvények a végpont URL-címére irányuló REST-hívás kiadásával hívhatók meg. Jelölje ki a meghívni kívánt függvényt a Functions explorer, majd válassza a Függvény URL-címének másolásalehetőséget. A külső használat lehetőségét is be- vagy kikapcsolhatja az URL-címhez a Tulajdonságok menüben.

Képernyőkép a töréspontok helyi hibakereséséről.

Ezután használja ezt az URL-címet az alkalmazásban a függvény meghívásához. Lásd: Felhasználói adatfüggvények meghívása alkalmazásból

Kimeneti séma

Ha felhasználói adatfüggvényt kér le egy külső alkalmazásból, a kimeneti séma formátuma a következő lesz:

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

A rendszer a következő tulajdonságokat adja vissza:

  • functionName: A végrehajtott függvény neve.
  • invocationId: Egy függvény végrehajtásának meghívási azonosítója.
  • állapot: A függvény végrehajtásának eredménye és a támogatott értékek a következőkSucceeded: , BadRequestFailedés TimeoutResponseTooLarge.
  • kimeneti: A függvény által visszaadott kimeneti érték.
  • hibák: Ha bármilyen hibát rögzítettek, a rendszer az egyes hibák listáját adja vissza a nevükkel, hibaüzenetükkel és hibatulajdonságukkal.

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 a hiányzó vagy helytelen bemeneti paraméterértékek, 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 több mint 200 másodpercet vett igénybe.
409 Ütközés A kérés nem hajtható végre ütköző állapot miatt. Ezt okozhatja egy nem kezelt kivétel vagy a felhasználói hitelesítő adatokkal kapcsolatos hiba.
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.

Hibakeresés és tesztelés

Az alkalmazás hibakeresése a Visual Studio Code-ban Python-hibakereső használatával. Szükség esetén töréspontokat adhat hozzá a hibakereséshez, ha bármilyen probléma merül fel. További információ

Következő lépések