Bagikan melalui


Tutorial: Memanggil fungsi data pengguna dari aplikasi konsol Python

Anda dapat memanggil fungsi data pengguna Fabric dari aplikasi eksternal dengan mengirim permintaan HTTP ke titik akhir publik fungsi. Ini memungkinkan Anda untuk mengintegrasikan logika bisnis Fabric Anda ke dalam aplikasi web, skrip otomatisasi, layanan mikro, atau sistem apa pun di luar lingkungan Fabric.

Di tutorial ini, Anda akan:

  • Mendaftarkan aplikasi Microsoft Entra untuk autentikasi
  • Dapatkan URL fungsi publik dan aktifkan akses publik
  • Membuat aplikasi konsol Python yang memanggil fungsi
  • Memahami skema respons dan kode status HTTP

Prasyarat

Membuat aplikasi Microsoft Entra

Untuk memanggil fungsi data pengguna dari aplikasi eksternal, Anda perlu mendaftarkan aplikasi di ID Microsoft Entra. Pendaftaran aplikasi ini menyediakan kredensial yang digunakan aplikasi Python Anda untuk mengautentikasi.

  1. Buka pusat admin Microsoft Entra dan daftarkan aplikasi menggunakan langkah-langkah yang dijelaskan dalam Mulai Cepat: Mendaftarkan aplikasi dengan platform identitas Microsoft.

  2. Nilai ID Aplikasi Microsoft Entra (klien) dan ID Direktori (penyewa) muncul di kotak Ringkasan. Rekam nilai-nilai ini karena diperlukan nanti.

  3. Di bawah daftar Kelola , pilih izin API , lalu Tambahkan izin.

  4. Tambahkan Layanan PowerBI, pilih Izin yang didelegasikan, dan pilih UserDataFunction.Execute.All atau item. Izin Execute.All . Konfirmasikan bahwa persetujuan admin tidak diperlukan.

  5. Kembali ke pengaturan Kelola dan pilih Autentikasi> Tambahkanaplikasi satu halaman>.

  6. Untuk tujuan pengembangan lokal, tambahkan http://localhost:3000 di bawah URI Pengalihan dan konfirmasikan bahwa aplikasi diaktifkan untuk alur kode otorisasi dengan Proof Key for Code Exchange (PKCE). Pilih tombol Konfigurasi untuk menyimpan perubahan Anda. Jika aplikasi mengalami kesalahan yang terkait dengan permintaan lintas asal, tambahkan platform Aplikasi seluler dan desktop di langkah sebelumnya dengan URI pengalihan yang sama.

  7. Kembali ke Autentikasi, gulir ke bawah ke Pengaturan Tingkat Lanjut dan, di bawah Izinkan alur klien publik, pilih Ya untuk Mengaktifkan alur seluler dan desktop berikut.

Membuat aplikasi konsol

Sekarang setelah Anda memiliki pendaftaran aplikasi, buat aplikasi konsol Python yang mengautentikasi dan memanggil fungsi data pengguna Anda.

Dapatkan URL fungsi untuk dipanggil

Setiap fungsi data pengguna memiliki URL publik unik yang berfungsi sebagai titik akhir REST API-nya. Sebelum dapat memanggil fungsi dari aplikasi eksternal, Anda perlu mengaktifkan akses publik dan mendapatkan URL.

Untuk mendapatkan URL fungsi:

  1. Di portal Fabric, buka item fungsi data pengguna Anda.

  2. Pastikan Anda berada dalam mode Jalankan saja , bukan mode Kembangkan .

  3. Di penjelajah Functions, arahkan mouse ke atas nama fungsi dan pilih elipsis (...).

  4. Pilih Properti.

  5. Di panel Properti, pastikan Akses publik diaktifkan. Jika tidak, pilih tombol untuk mengaktifkannya.

  6. Salin URL Publik untuk digunakan di aplikasi Python Anda.

    Cuplikan layar memperlihatkan panel Properti dengan akses Publik diaktifkan dan bidang URL Publik.

    Tip

    Jika akses publik sudah diaktifkan, Anda bisa melewati panel Properti. Di penjelajah Functions, pilih elipsis (...) di samping nama fungsi dan pilih Salin URL Fungsi. Ini menyalin URL yang sama dengan URL Publik di panel Properti.

  7. Dalam kode aplikasi Anda, ganti placeholder FUNCTION_URL dengan URL yang Anda salin.

Menyiapkan proyek Python Anda

Buat proyek Python dengan lingkungan virtual dan instal dependensi yang diperlukan.

  1. Buat folder baru untuk aplikasi Python Anda, misalnya my-data-app.

  2. Buka folder di Visual Studio Code.

  3. Buka Palet Perintah (Ctrl+Shift+P) dan cari Python: Buat Lingkungan.

  4. Pilih venv sebagai jenis lingkungan.

  5. Pilih Python 3.11 sebagai versi penerjemah.

  6. Buka terminal baru di Visual Studio Code (Ctrl+').

  7. Aktifkan lingkungan virtual Python:

    Windows:

    .venv\Scripts\activate
    

    macOS/Linux:

    source .venv/bin/activate
    
  8. Instal pustaka Python yang diperlukan:

    pip install azure-identity requests
    

Menambahkan kode aplikasi

Tambahkan kode Python yang mengautentikasi dengan MICROSOFT Entra ID dan memanggil fungsi data pengguna Anda.

  1. Buat file bernama app.py di folder proyek Anda.

  2. Tambahkan kode berikut. Ganti <REPLACE WITH USER DATA FUNCTION URL> dengan URL publik yang Anda salin sebelumnya.

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

    Nota

    Contoh ini menggunakan InteractiveBrowserCredential demi kesederhanaan, yang membuka browser untuk masuk interaktif. Untuk aplikasi produksi, teruskan client_id dan tenant_id dari aplikasi Microsoft Entra terdaftar Anda ke InteractiveBrowserCredential, atau gunakan jenis kredensial yang berbeda seperti ClientSecretCredential untuk autentikasi layanan-ke-layanan. Untuk informasi selengkapnya, lihat Pustaka klien Azure Identity untuk Python.

Jalankan aplikasi

Untuk menjalankan aplikasi, gunakan perintah berikut di terminal:

python app.py

Jendela browser terbuka bagi Anda untuk masuk dengan akun Microsoft Anda. Setelah autentikasi, aplikasi memanggil fungsi data pengguna Anda dan mencetak respons.

Untuk melakukan debug aplikasi di Visual Studio Code, atur titik henti dengan mengklik gutter di samping nomor baris, lalu tekan F5 untuk memulai pemecahan masalah. Untuk informasi selengkapnya, lihat Penelusuran kesalahan Python di Visual Studio Code.

Skema keluaran

Saat Anda memanggil fungsi data pengguna dari aplikasi eksternal, isi respons mengikuti skema JSON ini:

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

Respons mencakup properti ini:

  • functionName: Nama fungsi yang dijalankan.
  • invocationId: Pengidentifikasi unik untuk eksekusi fungsi khusus ini. Berguna untuk memecahkan masalah dan menghubungkan log.
  • status: Hasil eksekusi fungsi. Nilai yang mungkin adalah Succeeded, , BadRequestFailed, Timeout, dan ResponseTooLarge.
  • output: Nilai pengembalian fungsi Anda. Jenis dan struktur data bergantung pada apa yang dikembalikan fungsi Anda. Misalnya, jika fungsi Anda mengembalikan string, output adalah string. Jika fungsi Anda mengembalikan kamus, output adalah objek JSON.
  • errors: Daftar kesalahan yang diambil selama eksekusi. Setiap kesalahan mencakup name, message dan objek opsional properties yang berisi pasangan kunci-nilai dengan detail selengkapnya. Kosong ketika fungsi berhasil.

Kode respons

Fungsi mengembalikan kode HTTP berikut sebagai hasil dari eksekusi.

Kode respons Pesan Deskripsi
200 Keberhasilan Permintaan berhasil.
400 Permintaan Tidak Valid Permintaan tidak valid. Respons ini bisa disebabkan oleh nilai parameter input, jenis data, atau nama yang hilang atau salah. Respons ini juga dapat disebabkan oleh akses publik yang dinonaktifkan untuk fungsi.
403 Dilarang Respons terlalu besar dan pemanggilan gagal.
408 Batas Waktu Permintaan Permintaan gagal karena eksekusi membutuhkan waktu lebih lama dari waktu maksimum yang diizinkan.
409 Konflik Permintaan tidak dapat diselesaikan karena status yang bertentangan. Kesalahan ini dapat disebabkan oleh pengecualian yang tidak tertangani atau kesalahan dengan kredensial pengguna.
422 Permintaan Tidak Valid Permintaan gagal karena UserThrownError yang dilemparkan dalam fungsi.
500 Kesalahan Server Internal Permintaan gagal karena kesalahan internal dalam layanan.