Jaa kautta


Opetusohjelma: Käyttäjätietofunktioiden käynnistäminen Python-konsolisovelluksesta

Jos haluat kutsua Fabric User Data -funktiokohteita Pythonin konsolisovelluksesta, voit lähettää HTTP-pyyntöjä suoritettavaan funktion päätepisteeseen. Tässä pikaoppaassa opit määrittämään Python-sovelluksen Visual Studio Coden avulla.

Ennakkovaatimukset

Luo Microsoft Entra -sovellus

Seuraavissa vaiheissa kerrotaan, kuinka ReactJS-sovelluksen tuki määritetään Microsoft Entrassa.

  1. Rekisteröi sovellus noudattamalla ohjeita kohdassa Pikaopas: Sovelluksen rekisteröinti Microsoftin käyttäjätietoympäristössä.

  2. Microsoft Entra -sovelluksen sovelluksen (asiakasohjelman) tunnuksen ja hakemiston (vuokraajan) tunnuksen arvot näkyvät Yhteenveto-ruudussa. Tallenna nämä arvot, koska niitä tarvitaan myöhemmin.

  3. Valitse Hallinta -luettelosta -ohjelmointirajapinnan käyttöoikeudetja valitse sitten Lisää käyttöoikeus -.

  4. Lisää PowerBI-palvelu, valitse Delegoidut käyttöoikeudet ja valitse UserDataFunction.Execute.All tai kohde. Suorita.Kaikki käyttöoikeudet. Varmista, että järjestelmänvalvojan suostumusta ei tarvita.

  5. Palaa Hallinta-asetukseen ja valitse Todennus>Lisää alustan>yksisivuinen sovellus.

  6. Lisää paikallisiin kehitystarkoituksiin kohtaan http://localhost:3000Uudelleenohjauksen URI-osoitteet ja varmista, että sovellus on otettu käyttöön valtuutuskoodin työnkulussa, jossa on Koodin vaihto -ohjelman (PKCE) todisteavain. Tallenna muutoksesi valitsemalla Määritä-painike. Jos sovellus kohtaa virheen, joka liittyy alkuperän välisiin pyyntöihin, lisää mobiili- ja työpöytäsovellusympäristö edellisessä vaiheessa samalla uudelleenohjaus-URI:lla.

  7. Siirry Authentication-alaspäin kohtaan Lisäasetukset - ja valitse Salli julkisen asiakkaan työnkulut-kohdassa Kyllä Ota käyttöön seuraavat mobiili- ja työpöytätyönkulut.

Konsolisovelluksen luominen

  1. Funktion on oltava julkisesti käytettävissä. Siirrä funktioiden hallinnassa hiiren osoitin funktion nimen päälle, valitse näkyviin tulevasta ellipsikuvakkeesta (...) ja valitse sitten ominaisuudet-. Ota avautuvassa Ominaisuudet-ruudussa käyttöön Julkinen käyttöoikeus -. Kirjaa muistiin myös julkinen URL-, jota käytetään Python-sovelluksessasi.

  2. Luo uusi kansio Python-sovelluksellesi, esimerkiksi oma tietosovellus -. Avaa kansio Visual Studio Codessa.

  3. Määritä Python-virtuaaliympäristö Visual Studio Codessa. Jos haluat luoda paikallisia ympäristöjä Visual Studio Codessa, avaa komentopalettinäppäinyhdistelmällä Ctrl+Vaihto+P ja etsi ja valitse sitten Python: Luo ympäristö -komento.

    • Komento esittää luettelon ympäristötyypeistä ja valitsee venv.
    • Valitse Python-tulkkiversio, Python 3.11.
  4. Suorita seuraava komento aktivoidaksesi virtuaaliympäristön Visual Studio Code -päätteessä.

    venv\Scripts\activate.bat
    
  5. Asenna seuraavaksi tässä esimerkissä tarvittavat Python-kirjastot suorittamalla komento.

    pip install azure-identity, requests 
    
  6. Luo app.py tiedosto ja käynnistä käyttäjätietofunktiokohde koodilla.

    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)
    
    

    Muistiinpano

    Esimerkki on tarkoitettu vain kehitystarkoituksiin vain. Päivitä sovellus käyttämään Microsoft Entra ID -todennusta ennen sovelluksen käyttämistä tuotantokäyttötapauksessa.

Funktion käynnistäminen ulkoisesta sovelluksesta

Funktiot voidaan käynnistää antamalla REST-kutsu päätepisteen URL-osoitteeseen. Valitse funktio, jonka haluat käynnistää Functions Explorer -, ja valitse Kopioi funktion URL-osoite. Voit myös ottaa tämän URL-osoitteen ulkoisen käytön käyttöön tai poistaa sen käytöstä ominaisuudet - valikosta.

Näyttökuva, jossa näytetään, miten voit korjata virheen paikallisesti keskeytyskohdalla.

Käytä sitten tätä URL-osoitetta sovelluksessasi funktion kutsumiseksi. Katso Käyttäjätietofunktioiden käynnistäminen sovelluksen

Tulosrakenne

Kun käynnistät käyttäjätietofunktion ulkoisesta sovelluksesta, tulosterakenne on seuraavassa muodossa:

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

Seuraavat ominaisuudet palautetaan:

  • functionName: Suoritettavan funktion nimi.
  • invocationId: Funktion suorituksen kutsutunnus.
  • status: Funktion suorituksen tulos ja tuetut arvot ovat Succeeded, BadRequest, Failed, Timeout ja ResponseTooLarge.
  • tuloste: Funktion palauttama tulostearvo.
  • virheet: Jos virheitä siepattiin, tämä palauttaa luettelon virheistä sekä niiden nimet, virhesanoman ja virheominaisuudet.

Vastauskoodit

Funktio palauttaa seuraavat HTTP-koodit suorituksen tuloksena.

Vastauskoodin Viesti Kuvaus
200 Onnistui Pyyntö onnistui.
400 Virheellinen pyyntö Pyyntö ei ollut pätevä. Tämä vastaus voi johtua puuttuvista tai virheellisistä syöttöparametrien arvoista, tietotyypeistä tai nimistä. Tämä reaktio voi johtua myös siitä, että julkinen pääsy on poistettu käytöstä jonkin toiminnon ajaksi.
403 Kielletty Vastaus oli liian suuri ja kutsu epäonnistui.
408 Pyydä aikakatkaisua Pyyntö epäonnistui, koska suoritus kesti yli 200 sekuntia.
409 Ristiriita Pyyntöä ei voitu täyttää ristiriitaisen tilan vuoksi. Tämä voi johtua käsittelemättömästä poikkeuksesta tai virheestä käyttäjän tunnistetiedoissa.
422 Virheellinen pyyntö Pyyntö epäonnistui funktiossa esitettyjen UserThrownError-virheiden vuoksi.
500 Sisäisen palvelimen virhe Pyyntö epäonnistui palvelun sisäisen virheen vuoksi.

Virheenkorjaus ja testaus

Tee sovelluksen virheenkorjaus Visual Studio Codessa python-virheenkorjausohjelman avulla. Lisää keskeytyskohtia tarvittaessa mahdollisten ongelmien vianmäärityksen korjaukseksi. Lisätietoja

Seuraavat vaiheet