Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
- Visual Studio Code terinstal di komputer lokal Anda.
- Python 3.11 diinstal pada komputer lokal Anda.
- Akun Microsoft Fabric. Anda dapat mendaftar untuk uji coba gratis.
- Ruang kerja Fabric.
- Item untuk fungsi data pengguna yang diterbitkan. Untuk petunjuknya, lihat Membuat fungsi data pengguna di Visual Studio Code atau Membuat fungsi data pengguna di portal.
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.
Buka pusat admin Microsoft Entra dan daftarkan aplikasi menggunakan langkah-langkah yang dijelaskan dalam Mulai Cepat: Mendaftarkan aplikasi dengan platform identitas Microsoft.
Nilai ID Aplikasi Microsoft Entra (klien) dan ID Direktori (penyewa) muncul di kotak Ringkasan. Rekam nilai-nilai ini karena diperlukan nanti.
Di bawah daftar Kelola
, pilih izin API , lalu Tambahkan izin .Tambahkan Layanan PowerBI, pilih Izin yang didelegasikan, dan pilih UserDataFunction.Execute.All atau item. Izin Execute.All . Konfirmasikan bahwa persetujuan admin tidak diperlukan.
Kembali ke pengaturan Kelola dan pilih Autentikasi> Tambahkanaplikasi satu halaman>.
Untuk tujuan pengembangan lokal, tambahkan
http://localhost:3000di 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.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:
Di portal Fabric, buka item fungsi data pengguna Anda.
Pastikan Anda berada dalam mode Jalankan saja , bukan mode Kembangkan .
Di penjelajah Functions, arahkan mouse ke atas nama fungsi dan pilih elipsis (...).
Pilih Properti.
Di panel Properti, pastikan Akses publik diaktifkan. Jika tidak, pilih tombol untuk mengaktifkannya.
Salin URL Publik untuk digunakan di aplikasi Python Anda.
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.
Dalam kode aplikasi Anda, ganti placeholder
FUNCTION_URLdengan URL yang Anda salin.
Menyiapkan proyek Python Anda
Buat proyek Python dengan lingkungan virtual dan instal dependensi yang diperlukan.
Buat folder baru untuk aplikasi Python Anda, misalnya
my-data-app.Buka folder di Visual Studio Code.
Buka Palet Perintah (Ctrl+Shift+P) dan cari Python: Buat Lingkungan.
Pilih venv sebagai jenis lingkungan.
Pilih Python 3.11 sebagai versi penerjemah.
Buka terminal baru di Visual Studio Code (Ctrl+').
Aktifkan lingkungan virtual Python:
Windows:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activateInstal 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.
Buat file bernama
app.pydi folder proyek Anda.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
InteractiveBrowserCredentialdemi kesederhanaan, yang membuka browser untuk masuk interaktif. Untuk aplikasi produksi, teruskanclient_iddantenant_iddari aplikasi Microsoft Entra terdaftar Anda keInteractiveBrowserCredential, atau gunakan jenis kredensial yang berbeda sepertiClientSecretCredentialuntuk 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, danResponseTooLarge. -
output: Nilai pengembalian fungsi Anda. Jenis dan struktur data bergantung pada apa yang dikembalikan fungsi Anda. Misalnya, jika fungsi Anda mengembalikan string,
outputadalah string. Jika fungsi Anda mengembalikan kamus,outputadalah objek JSON. -
errors: Daftar kesalahan yang diambil selama eksekusi. Setiap kesalahan mencakup
name,messagedan objek opsionalpropertiesyang 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. |