Fabric Apps'te Fonksiyonları Kullanın

Fonksiyonlar, Fabric uygulamanızın içindeki sunucuda çalışan TypeScript fonksiyonlarıdır. Tarayıcıda çalışmaması gereken mantık fonksiyonlarını kullanın; örneğin sırlarla çalışmak, ayrıcalıklı verilere erişmek ve uygulama kimliğiyle aşağı akış servislerini çağırmak.

Her fonksiyon bir isimle kayıtlıdır ve çağrılabilir HTTP uç noktası olarak açığa çıkar. React ön yüzünüz, fonksiyonu tiplenen Rayfin istemcisi aracılığıyla çağırır, böylece istek, yönlendirme veya token işleme uygulamanıza gerek kalmaz.

Uyarı

Bu makaledeki komutlar, Rayfin CLI'nin önizleme versiyonunu kullanır.

Bir fonksiyon ne zaman kullanılır

Bir Rayfin fonksiyonu kullanın:

  • Bir uygulama tokenı ile harici bir API çağırın. Örnekler arasında Azure Yapay Zeka Atölyesi, Azure DevOps, Fabric, Azure Depolama ve Azure Key Vault yer alır.
  • Uygulamanın veritabanını, sunucu tarafından uygulanan satır düzeyinde güvenlikle okuyun veya yazın.
  • API anahtarlarını, model dağıtım adlarını ve diğer sırları istemci kodundan uzak tutun.
  • Fan-out çağrıları, birleştirme veya yapay zekâ istemleri gibi orkestrasyonları veriye yakın bir yerde çalıştırın.

Prerequisites

Başlamadan önce aşağıdaki kaynakları kurun veya oluşturun:

  • Node.js 20 veya üzeri ve npm.
  • Rayfin CLI ile oluşturulan bir Fabric uygulaması iskelesi.
  • Azure İşlevleri Core Tools, yerel fonksiyonların hata ayıklama için kullandığı bir yazılım.

Install Azure İşlevleri Core Tools version 4:

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

Fonksiyonlu bir uygulama oluşturun

Bir uygulamayı iskele edin ve fonksiyon projesini başlatın:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

Komut, rayfin functions init mevcut uygulamaya fonksiyon projesini, TypeScript yapılandırmasını ve bir başlangıç fonksiyon dosyasını ekler.

Uygulamayı GitHub Copilot ile oluştur

İskelet, proje üzerinde çalışmak için gerekli GitHub Copilot yönergelerini ve becerilerini içerir. Projeyi Visual Studio Code'ta açın ve GitHub Copilot Chat'te oluşturmak istediğiniz uygulamayı tanımlayın.

Örneğin, bir yapay zeka pull request inceleme asistanı oluşturmak için aşağıdaki istemi kullanın:

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, gerekli dosyaları ve bileşenleri oluşturup güncelleyebilir. Ayrıca ajandan uygulamayı çalıştırmasını, fonksiyonları yerel olarak hata ayıklamasını ve uygulamayı dağıtmasını da talep edebilirsiniz.

Proje düzenini anlamak

İşlevler başlatma komutu, rayfin/rayfin.yml öğesini günceller ve rayfin/functions öğesini oluşturur. Fonksiyonlu tipik bir uygulama şu yapıya sahiptir:

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

Dosyalar aşağıdaki amaçlara hizmet eder:

Yol Purpose
rayfin/rayfin.yml Kimlik doğrulama, veri, fonksiyonlar ve statik barındırma hizmetlerini yapılandırır.
rayfin/data/ Uygulamanın veri modellerini ve şema dışa aktarmalarını içerir.
rayfin/functions/package.json Fonksiyon projesi için bağımlılıkları tanımlar ve betikler oluşturur.
rayfin/functions/tsconfig.json TypeScript derlemesini fonksiyonlar için yapılandırır.
rayfin/functions/src/function_app.ts Fonksiyon uygulamalarınızı içerir.
rayfin/functions/src/types.ts Oluşturulan AppFunctionsSchema türleri içerir. Bu dosyayı el ile düzenlemeyin.
src/ React ön yüzünü ve paylaşılan alan türlerini veya wrapper'ları içerir.

Fonksiyonları etkinleştirdiğinizde, rayfin/rayfin.yml fonksiyon servisi şunları içerir:

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

Uygulama kimlik doğrulaması

Etkin Fonksiyonlar, aşağıdaki durumlarda açıkça uygulama doğrulaması rayfin/rayfin.ymlgerektirir:

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

Yeni Functions iskele seti auth.type: application.

Devre dışı bırakılmış işlevler auth öğesini atlayabilir. Ancak, auth belirtirseniz şunları içermelidir:

auth:
  type: application

Tam npx rayfin dev ve normal npx rayfin up akışı, proje ayarlarını Fabric veya Docker arka ucuna uygulamadan önce bu ayarı doğrular.

Mevcut bir uzak uygulamaya YAML kimlik doğrulama modunu uygulamak için tam npx rayfin up bir işlem yapın.

Dağıtılmış Fonksiyonlar tarafından kullanılan kimlik doğrulama yolları

Dağıtılan Fonksiyonlar iki ayrı kimlik doğrulama yolu kullanır:

Erişim yolu Credential Kimlik ve izinler
ctx.Tokens.* üzerinden dış bağlantılar Platform tarafından sağlanan kaynak belirteçleri Uygulama kimliği ve harici kaynak üzerindeki izinleri
Rayfin DB aracılığıyla ctx.getDataClient() Invocation'ın Rayfin tokenı Rayfin DB'deki arayanın kimliği ve izinleri

Mevcut Fabric uygulamaları için, uygulama kimliği BaaS öğesinin sahibidir.

Bu nedenle harici bağlantılar, işlevi çağıran uygulama kullanıcısının izinlerini değil, öğe sahibinin izinlerini kullanır. Uygulama kimliğine, Fonksiyon koduyla çağrılan her harici kaynak ve API için gereken izinleri verin.

Bir hedef kitlesi ilan etmek veya Fonksiyonları dağıtmak, uygulama kimliği iznini harici bir kaynağa vermez.

Uygulama girişi ve bir fonksiyonu çağırmak için yetkilendirme, uygulama kimliğinin harici kaynaklara erişiminden ayrıdır.

Rayfin veritabanı erişimi her zaman Rayfin token'ını kullanır ve arayanın kimliğini ve veritabanı izinlerini korur. services.functions.auth.type: application ayarını yapmak, Rayfin veritabanı erişimini uygulama kimliğine değiştirmez.

Hedef kitle bildirimleri, kaynak belirtetörleri, izinler ve yerel geliştirme davranışı için bkz. Fonksiyonları dış kaynaklara bağla.

Uygulamayı yerel olarak çalıştırma

Uygulamanın kök klasöründen giriş yapın:

cd my-app
npx rayfin login

Frontend’i ve yerel Functions ana bilgisayarını başlatın:

npm run dev

İşlevlerin etkin olduğu bir projede, npm run dev, rayfin dev öğesine eşlenir. Bu komut şemayı uygular, yerel fonksiyon ana bilgisayarını başlatır ve Vite geliştirme sunucusunu başlatır. Terminalde yazdırılmış yerel URL'yi açın ve uygulamayı geliştirip hata ayıklaırken terminali çalışır hale getirin.

Sadece fonksiyon sunucularını başlatmak için, örneğin ön yüzü ayrı çalıştırdığınızda, aşağıdaki komutu kullanın:

cd my-app
npx rayfin dev 

Fabric'e dağıt

Uygulamanın verilerini, statik sitesini ve fonksiyonlarını dağıtın:


npx rayfin up --workspace <workspace-name>

<WORKSPACE> öğesini hedef Fabric çalışma alanının adıyla değiştirin.

Mevcut bir uygulamaya fonksiyon ekle

Mevcut bir Fabric uygulamasının kökünden, özelliği etkinleştirin ve fonksiyon projesini bir kez başlatın:


npx rayfin functions init

Başlatmadan sonra, fonksiyon uygulamalarını 'ye rayfin/functions/src/function_app.tsekleyin.

Limitations

  • Fonksiyon sahipliği: Sadece kullanıcı veri fonksiyon öğesinin sahibi Fonksiyon kodunu değiştirebilir ve yayımlayabilir.
  • Yayın bekleme süresi: Yayın yaptıktan sonra en az iki dakika bekleyin ve tekrar yayınlayın. Bu bekleme süresi, Fonksiyonlar tarayıcı içi portalından, kullanıcı veri fonksiyonları Visual Studio Code uzantısından, Git içe aktarma eyleminden veya dağıtım boru hatlarından yayın yaparken geçerlidir.
  • Dağıtım paket boyutu: Functions ZIP dosyası 30 MB'yi geçemez.
  • İstek yükü boyutu: Kullanıcı veri fonksiyonları hizmeti, tüm istek parametreleri için toplam 4 MB maksimum bir miktar belgeler. Bu sınırın Rayfin Fonksiyonları için geçerli olması bekleniyor, ancak henüz doğrulanmadı.
  • Yürütme zaman aşımı: Bir fonksiyon 240 saniyeye kadar çalışabilir.
  • Çağrı günlüğünün tutulması: Tarihsel çağrı günlükleri varsayılan olarak 30 gün boyunca saklanır.
  • Uygulama kimliği: Uygulama kimliği şu anda BaaS öğesinin sahibidir.

Bölgesel erişilebilirlik gereksinimleri ve kullanıcı veri fonksiyonlarının sınırlamaları hakkında daha fazla bilgi için bkz. Fabric kullanıcı veri fonksiyonlarının hizmet detayları ve sınırlamaları.