Gunakan Fungsi di Aplikasi Fabric

Fungsi adalah fungsi TypeScript yang berjalan di server di dalam aplikasi Fabric Anda. Gunakan fungsi untuk logika yang tidak boleh berjalan di browser, seperti bekerja dengan rahasia, mengakses data hak istimewa, dan memanggil layanan hilir dengan identitas aplikasi.

Setiap fungsi didaftarkan dengan nama dan diekspos sebagai endpoint HTTP yang dapat dipanggil. Frontend React Anda memanggil fungsi melalui klien Rayfin yang diketik, sehingga Anda tidak perlu mengimplementasikan permintaan, routing, atau penanganan token.

Note

Perintah dalam artikel ini menggunakan versi pratinjau dari Rayfin CLI.

Kapan menggunakan sebuah fungsi

Gunakan Fungsi Rayfin untuk:

  • Panggil API eksternal dengan token aplikasi. Contohnya termasuk Azure AI Foundry, Azure DevOps, Fabric, Azure Storage, dan Azure Key Vault.
  • Baca atau tulis database aplikasi dengan keamanan pada level baris yang diterapkan oleh server.
  • Jaga agar kunci API, nama deployment model, dan rahasia lain tidak masuk ke kode klien.
  • Menjalankan orkestrasi, seperti panggilan fan-out, agregasi, atau pemberian prompt AI, di dekat data.

Prasyarat

Sebelum Anda mulai, instal atau buat sumber daya berikut:

  • Node.js versi 20 atau yang lebih baru dan npm.
  • Sebuah kerangka aplikasi Fabric yang dibuat dengan Rayfin CLI.
  • Azure Functions Core Tools, yang digunakan oleh host fungsi lokal untuk debugging.

Instal Azure Functions Core Tools versi 4:

npm install --global azure-functions-core-tools@4

Buat aplikasi dengan fungsi

Buat kerangka aplikasi dan inisialisasi proyek fungsi:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

Perintah ini rayfin functions init menambahkan proyek fungsi, konfigurasi TypeScript-nya, dan file fungsi starter ke aplikasi yang sudah ada.

Bangun aplikasi dengan GitHub Copilot

Kerangka tersebut mencakup instruksi GitHub Copilot dan keterampilan yang diperlukan untuk mengerjakan proyek ini. Buka proyek di Visual Studio Code, dan jelaskan aplikasi yang ingin Anda bangun di GitHub Copilot Chat.

Sebagai contoh, gunakan prompt berikut untuk membuat asisten peninjauan pull request AI:

Build an app that helps business analysts track sales performance across
regions. Show key metrics, let analysts ask questions about trends, and
use Functions to securely retrieve data from our sales API with application
authentication.

GitHub Copilot dapat menghasilkan dan memperbarui file serta komponen yang diperlukan. Anda juga dapat meminta agen menjalankan aplikasi, melakukan debug fungsi secara lokal, dan menyebarkan aplikasi.

Pahami tata letak proyek

Perintah inisialisasi fungsi memperbarui rayfin/rayfin.yml dan membuat rayfin/functions. Aplikasi dengan fungsi tipikal memiliki struktur sebagai berikut:

my-app/
├── rayfin/
│   ├── rayfin.yml
│   ├── data/
│   │   ├── TripPlan.ts
│   │   └── schema.ts
│   └── functions/
│       ├── package.json
│       ├── tsconfig.json
│       └── src/
│           ├── function_app.ts
│           └── types.ts
└── src/
    └── services/

Berkas-berkas tersebut berfungsi sebagai berikut:

Jalur Kegunaan
rayfin/rayfin.yml Mengonfigurasi layanan autentikasi, data, fungsi, dan hosting statis.
rayfin/data/ Berisi model data aplikasi dan ekspor skema.
rayfin/functions/package.json Mendefinisikan dependensi dan skrip build untuk proyek fungsi.
rayfin/functions/tsconfig.json Mengonfigurasi proses build TypeScript untuk fungsi.
rayfin/functions/src/function_app.ts Berisi implementasi fungsi Anda.
rayfin/functions/src/types.ts Berisi tipe AppFunctionsSchema yang dihasilkan. Jangan edit file ini secara manual.
src/ Berisi frontend React dan semua jenis domain bersama atau pembungkus.

Saat Anda mengaktifkan fungsi, rayfin/rayfin.yml termasuk layanan fungsi:

services:
  functions:
    enabled: true
    auth:
      type: application
    buildCommand: npm run build

Autentikasi aplikasi

Fungsi yang Diaktifkan memerlukan autentikasi aplikasi eksplisit di rayfin/rayfin.yml:

services:
  functions:
    enabled: true
    auth:
      type: application
    buildCommand: npm run build

Set kerangka Functions baru auth.type: application.

Fungsi yang dinonaktifkan dapat menghilangkan auth. Namun, jika Anda memberikan auth, itu harus mencakup:

auth:
  type: application

Alur penuh npx rayfin up dan normal npx rayfin dev memvalidasi pengaturan ini sebelum menerapkan pengaturan proyek ke backend Fabric atau Docker.

Jalankan full npx rayfin up untuk menerapkan mode autentikasi YAML ke aplikasi jarak jauh yang sudah ada.

Jalur autentikasi yang digunakan oleh Fungsi yang telah dideploy

Fungsi yang Diterapkan menggunakan dua jalur autentikasi terpisah:

Jalur akses Credential Identitas dan izin
Koneksi eksternal melalui ctx.Tokens.* Token sumber daya yang disediakan oleh platform Identitas aplikasi dan izin pada sumber daya eksternal
Rayfin DB melalui ctx.getDataClient() Token Rayfin dari Invocation Identitas dan izin penelepon pada Rayfin DB

Untuk aplikasi Fabric saat ini, identitas aplikasi adalah pemilik item BaaS.

Oleh karena itu, koneksi eksternal menggunakan izin pemilik item, bukan izin pengguna aplikasi yang memanggil fungsi tersebut. Berikan identitas aplikasi izin yang diperlukan untuk setiap sumber daya eksternal dan API yang dipanggil oleh kode Functions.

Mendeklarasikan audiens atau menerapkan Functions tidak memberikan izin identitas aplikasi kepada sumber daya eksternal.

Masuk aplikasi dan otorisasi untuk memanggil fungsi terpisah dari akses identitas aplikasi ke sumber daya eksternal.

Akses Rayfin DB selalu menggunakan token Rayfin dan mempertahankan identitas penelepon serta izin database. Pengaturan services.functions.auth.type: application tidak mengalihkan akses Rayfin DB ke identitas aplikasi.

Untuk deklarasi audiens, token sumber daya, izin, dan perilaku pengembangan lokal, lihat Hubungkan Fungsi ke sumber daya eksternal.

Menjalankan aplikasi secara lokal

Dari folder root aplikasi, masuk:

cd my-app
npx rayfin login

Jalankan frontend dan host fungsi lokal:

npm run dev

Dalam proyek dengan fungsi yang diaktifkan, npm run dev dipetakan ke rayfin dev. Perintah ini menerapkan skema, memulai host fungsi lokal, dan memulai server pengembangan Vite. Buka URL lokal yang dicetak di terminal, dan biarkan terminal tetap berjalan saat Anda mengembangkan dan men-debug aplikasi.

Untuk memulai hanya fungsi host, misalnya saat Anda menjalankan frontend secara terpisah, gunakan perintah berikut sebagai gantinya:

cd my-app
npx rayfin dev 

Sebarkan ke Fabric

Sebarkan data aplikasi, situs statis, dan fungsi:


npx rayfin up --workspace <workspace-name>

Ganti <WORKSPACE> dengan nama workspace Fabric yang dituju.

Tambahkan fungsi ke aplikasi yang sudah ada

Dari root aplikasi Fabric yang sudah ada, aktifkan fitur tersebut dan inisialisasi proyek fungsi sekali:


npx rayfin functions init

Setelah inisialisasi, tambahkan implementasi fungsi ke rayfin/functions/src/function_app.ts.

Limitations

  • Kepemilikan fungsi: Hanya pemilik item fungsi data pengguna yang dapat memodifikasi dan mempublikasikan kode Fungsi.
  • Jeda publikasi: Tunggu setidaknya dua menit setelah memublikasikan sebelum memublikasikan lagi. Masa tunggu ini berlaku saat menerbitkan dari portal Functions di browser, ekstensi Visual Studio Code untuk fungsi data pengguna, tindakan impor Git, atau pipeline deployment.
  • Ukuran paket penerapan: File ZIP Functions tidak boleh melebihi 30 MB.
  • Ukuran payload permintaan: Layanan fungsi data pengguna mendokumentasikan batas maksimum 4 MB untuk gabungan semua parameter permintaan. Batas ini diperkirakan berlaku untuk Fungsi Rayfin, tetapi belum diverifikasi.
  • Waktu habis eksekusi: Sebuah fungsi dapat berjalan hingga 240 detik.
  • Retensi log panggilan: Log pemanggilan historis disimpan selama 30 hari secara default.
  • Identitas aplikasi: Identitas aplikasi saat ini adalah pemilik item BaaS.

Untuk persyaratan ketersediaan regional dan detail lebih lanjut tentang keterbatasan fungsi data pengguna, lihat Detail layanan dan keterbatasan fungsi data pengguna Fabric.