Öğretici: Python konsol uygulamasından kullanıcı verileri işlevlerini çağırma

İşlevin genel uç noktasına HTTP istekleri göndererek dış uygulamalardan Doku kullanıcı verileri işlevlerini çağırabilirsiniz. Bu, Doku iş mantığınızı web uygulamaları, otomasyon betikleri, mikro hizmetler veya Doku ortamı dışındaki herhangi bir sistemle tümleştirmenizi sağlar.

Bu eğitimde, siz:

  • Microsoft Entra uygulamasını kimlik doğrulaması için kaydetme
  • İşlevin genel URL'sini alma ve genel erişimi etkinleştirme
  • İşlevi çağıran bir Python konsol uygulaması oluşturma
  • Yanıt şemasını ve HTTP durum kodlarını anlama

Önkoşullar

Microsoft Entra uygulaması oluşturma

Dış uygulamadan kullanıcı verileri işlevlerini çağırmak için bir uygulamayı Microsoft Entra Id'ye kaydetmeniz gerekir. Bu uygulama kaydı, Python uygulamanızın kimlik doğrulaması için kullandığı kimlik bilgilerini sağlar.

  1. Microsoft Entra yönetim merkezine gidin ve Hızlı Başlangıç: Microsoft kimlik platformuna uygulama kaydetme başlığı altında açıklanan adımları kullanarak bir uygulamayı kaydedin.

  2. Özet kutusunda Microsoft Entra uygulaması Uygulaması (istemci) Kimliği ve Dizin (kiracı) Kimliği değerleri görüntülenir. Bu değerleri daha sonra gerekli olduğundan kaydedin.

  3. Yönet listesinin altında, API izinleriniseçin, ardından "İzin ekle"'yi seçin.

  4. PowerBI Hizmeti'ni ekleyin, Temsilci izinleri'ni seçin ve UserDataFunction.Execute.All veya item öğesini seçin. Execute.All izinleri. Yönetici onayının gerekli olmadığını onaylayın.

  5. Yönet ayarına geri dönün ve Kimlik Doğrulaması> Platform >ekle'yiseçin.

  6. Yerel geliştirme amacıyla Yeniden Yönlendirme URI'leri bölümüne ekleyin http://localhost:3000 ve uygulamanın Kod Değişimi için Proof Key (PKCE) ile yetkilendirme kodu akışı için etkinleştirildiğini onaylayın. Değişikliklerinizi kaydetmek için Yapılandır düğmesini seçin. Uygulama çıkış noktaları arası isteklerle ilgili bir hatayla karşılaşırsa, önceki adımda aynı yeniden yönlendirme URI'sine sahip Mobil ve masaüstü uygulamaları platformunu ekleyin.

  7. Kimlik Doğrulaması'ne dönün, ekranı aşağı kaydırarak gelişmiş ayarlar gidin ve genel istemci akışlarına izin veraltında için Evet'i seçinaşağıdaki mobil ve masaüstü akışlarını etkinleştirin.

Konsol uygulaması oluşturma

Artık bir uygulama kaydınız olduğuna göre, kullanıcı verileri işlevinizin kimliğini doğrulayan ve çağıran bir Python konsol uygulaması oluşturun.

Çağrılacak işlev URL'sini alma

Her kullanıcı veri işlevinin REST API uç noktası olarak hizmet veren benzersiz bir genel URL'si vardır. İşlevi bir dış uygulamadan çağırabilmeniz için önce genel erişimi etkinleştirmeniz ve URL'yi almanız gerekir.

İşlev URL'sini almak için:

  1. Fabric portalında kullanıcı verisi işlevi öğenizi açın.

  2. Geliştirme modu değil Yalnızca çalıştır modunda olduğunuzdan emin olun.

  3. İşlevler gezgininde, işlevin adının üzerine gelin ve üç noktayı (...) seçin.

  4. Özellikleröğesini seçin.

  5. Özellikler bölmesinde Genel erişimin etkinleştirildiğinden emin olun. Aksi takdirde, açmak için anahtarı seçin.

  6. Python uygulamanızda kullanmak üzere Genel URL'yi kopyalayın.

    Genel erişimin etkinleştirildiği Özellikler bölmesini ve Genel URL alanını gösteren ekran görüntüsü.

    Tavsiye

    Genel erişim zaten etkinse Özellikler bölmesini atlayabilirsiniz. İşlevler gezgininde işlev adının yanındaki üç noktayı (...) ve İşlev URL'sini Kopyala'yı seçin. Bu, Özellikler bölmesindeki Genel URL ile aynı URL'yi kopyalar.

  7. Uygulama kodunuzda yer tutucusunu FUNCTION_URL kopyaladığınız URL ile değiştirin.

Python projenizi ayarlama

Sanal ortamla bir Python projesi oluşturun ve gerekli bağımlılıkları yükleyin.

  1. Python uygulamanız için yeni bir klasör oluşturun, örneğin my-data-app.

  2. Visual Studio Code'da klasörü açın.

  3. Komut Paleti'ni (Ctrl+Shift+P) açın ve Python: Ortam Oluştur'u arayın.

  4. Ortam türü olarak venv'yi seçin.

  5. Yorumlayıcı sürümü olarak Python 3.11'i seçin.

  6. Visual Studio Code'da yeni bir terminal açın (Ctrl+').

  7. Python sanal ortamını etkinleştirin:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  8. Gerekli Python kitaplıklarını yükleyin:

    pip install azure-identity requests
    

Uygulama kodunu ekleme

Microsoft Entra Id ile kimlik doğrulaması yapıp kullanıcı verileri işlevinizi çağıran Python kodunu ekleyin.

  1. Proje klasörünüzde adlı app.py bir dosya oluşturun.

  2. Aşağıdaki kodu ekleyin. <REPLACE WITH USER DATA FUNCTION URL> değerini daha önce kopyaladığınız genel URL ile değiştirin.

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

    Uyarı

    Bu örnek, basitlik sağlamak adına InteractiveBrowserCredential kullanır, bu da etkileşimli oturum açma için bir tarayıcı açar. Üretim uygulamaları için, kayıtlı Microsoft Entra uygulamanızdan client_id ve tenant_id bilgilerinizi InteractiveBrowserCredential'ye geçirin veya hizmetten hizmete kimlik doğrulaması için ClientSecretCredential gibi farklı bir kimlik bilgisi türü kullanın. Daha fazla bilgi için bkz. Python için Azure Identity istemci kitaplığı.

Uygulamayı çalıştırma

Uygulamayı çalıştırmak için terminalde aşağıdaki komutu kullanın:

python app.py

Microsoft hesabınızla oturum açmanız için bir tarayıcı penceresi açılır. Kimlik doğrulamasından sonra uygulama kullanıcı verileri işlevinizi çağırır ve yanıtı yazdırır.

Visual Studio Code'da uygulamanın hatalarını ayıklamak için, satır numaralarının yanındaki oluk işaretine tıklayarak kesme noktaları ayarlayın ve hata ayıklamayı başlatmak için F5 tuşuna basın. Daha fazla bilgi için bkz. Visual Studio Code'da Python hata ayıklama.

Çıkış şeması

Dış bir uygulamadan kullanıcı verileri işlevini çağırdığınızda, yanıt gövdesi şu JSON şemasını izler:

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

Yanıt şu özellikleri içerir:

  • functionName: Çalıştırılan işlevin adı.
  • invocationId: Bu özel işlev yürütmesi için benzersiz bir tanımlayıcı. Sorun gidermek ve günlükleri ilişkilendirmek için kullanışlıdır.
  • status: İşlevin yürütülmesinin sonucu. Olası değerler , , SucceededBadRequest, Failedve TimeoutdeğerleridirResponseTooLarge.
  • output: İşlevinizin dönüş değeri. Veri türü ve yapısı işlevinizin ne döndürdüğüne bağlıdır. Örneğin, işleviniz bir dize döndürüyorsa, output bir dizedir. İşleviniz bir sözlük döndürüyorsa, output bir JSON nesnesidir.
  • errors: Yürütme sırasında yakalanan hataların listesi. Her hata, daha fazla ayrıntı içeren anahtar-değer çiftlerini içeren bir name, messageve isteğe bağlı properties nesnesi içerir. İşlev başarılı olduğunda boş.

Yanıt kodları

İşlev, yürütmenin bir sonucu olarak aşağıdaki HTTP kodlarını döndürür.

Yanıt kodu Message Açıklama
200 Success İstek başarılı oldu.
400 Hatalı İstek İstek geçerli değildi. Bu yanıt eksik veya yanlış giriş parametresi değerleri, veri türleri veya adlardan kaynaklanıyor olabilir. Bu yanıt, bir işlev için genel erişimin kapatılmasından da kaynaklanabilir.
403 Yasak Yanıt çok büyük ve çağrı başarısız oldu.
408 İstek Zaman Aşımı Yürütmenin izin verilen en uzun süreden uzun sürmesi nedeniyle istek başarısız oldu.
409 Çakışma İstek, çakışan bir durum nedeniyle tamamlanamadı. Bu hataya işlenmeyen bir özel durum veya kullanıcı kimlik bilgileriyle ilgili bir hata neden olabilir.
422 Hatalı İstek İşlevde tetiklenen userThrownError nedeniyle istek başarısız oldu.
beş yüz İç Sunucu Hatası İstek, hizmetteki bir iç hata nedeniyle başarısız oldu.