Használd a funkciókat a Fabric alkalmazásokban

A függvények olyan TypeScript függvények, amelyek a Fabric alkalmazáson belüli szerveren futnak. Használj olyan logikai funkciókat, amelyek nem futhatnak a böngészőben, például titkokkal való munkavégzést, jogosultságos adatok elérését, és az alkalmazás identitásával történő lefelé irányuló szolgáltatások hívását.

Minden függvény névvel van regisztrálva, és hívható HTTP végpontként van elérhető. A React frontend a gépelt Rayfin kliensen keresztül hívja a függvényt, így nem kell kéréseket, útvonalat vagy token kezelést végrehajtani.

Megjegyzés:

A cikkben szereplő parancsok a Rayfin CLI előzetesített verzióját használják.

Mikor kell függvényt használni

Használj egy Rayfin funkciót a következőkért:

  • Hívj egy külső API-t egy alkalmazástokennel. Példák az Azure AI Foundry, Azure DevOps, Fabric, Azure Storage és Azure Key Vault.
  • Olvassa vagy írja az alkalmazás adatbázisát a kiszolgáló által kikényszerített sorszintű hozzáférés-vezérléssel.
  • Tartsd ki az API kulcsokat, modelltelepítési neveket és más titkokat a kliens kódból.
  • Végezzen orchesztrációt, például fan-out hívásokat, aggregációt vagy MI-utasításadást az adatok közelében.

Prerequisites

Mielőtt elkezdenéd, telepítsd vagy hozd létre az alábbi erőforrásokat:

  • Node.js 20 vagy újabb, valamint npm.
  • Egy Fabric alkalmazás állvány, amelyet a Rayfin CLI-vel készítettek.
  • Azure Functions Core Tools, amelyet a helyi függvénygazda hibakereséshez használ.

Install Azure Functions Core Tools version 4:

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

Hozzon létre egy alkalmazást funkciókkal

Építsd fel egy alkalmazást és inicializáld a funkciókat, projekt:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

A rayfin functions init parancs hozzáadja a függvényprojektet, annak TypeScript konfigurációját és egy kezdő funkciófájlt a meglévő alkalmazáshoz.

Építsd az alkalmazást a GitHub Copilot-szal

A váz tartalmazza a GitHub Copilot utasításait és a projekthez szükséges készségeket. Nyisd meg a projektet a Visual Studio Code-ban, és írd le az alkalmazást, amit a GitHub Copilot Chat-ben szeretnél létrehozni.

Például az alábbi promptot használd AI pull request review assistant építéséhez:

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.

A GitHub Copilot képes generálni és frissíteni a szükséges fájlokat és komponenseket. Megkérheted az ügynököt is, hogy futtasson az alkalmazás, helyben debugozza a funkciókat, és telepítse az alkalmazást.

Ismerd meg a projekt elrendezését

A függvények inicializálási parancsa frissíti a rayfin/rayfin.yml elemet, és létrehozza a rayfin/functions elemet. Egy tipikus funkciókkal rendelkező alkalmazás a következő szerkezettel rendelkezik:

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

A fájlok a következő célokat szolgálják:

Path Alkalmazás célja
rayfin/rayfin.yml Konfigurálja a hitelesítést, az adatokat, a függvényeket és a statikus tárhelyszolgáltatásokat.
rayfin/data/ Tartalmazza az alkalmazás adatmodelljeit és séma exportjait.
rayfin/functions/package.json Függségeket definiál és szkripteket épít a függvényprojekthez.
rayfin/functions/tsconfig.json Konfigurálja a függvényekhez használt TypeScript-buildet.
rayfin/functions/src/function_app.ts Tartalmazza a funkcióimplementációidat.
rayfin/functions/src/types.ts Tartalmazza a generált AppFunctionsSchema típusokat. Ne szerkessze manuálisan a fájlt.
src/ Tartalmazza a React frontendjét, valamint a megosztott domain típusokat vagy wrappereket.

Ha engedélyezed a függvényeket, rayfin/rayfin.yml tartalmazza a függvényszolgáltatást:

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

Alkalmazáshitelesítés

Az engedélyezett függvények explicit alkalmazáshitelesítést igényelnek a következőkben rayfin/rayfin.yml:

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

Új funkciók állványok .auth.type: application

A letiltott funkciók kihagyhatják auth. Ha viszont biztosítod auth, annak tartalmaznia kell:

auth:
  type: application

A teljes npx rayfin up és a normál npx rayfin dev folyamat validálja ezt a beállítást, mielőtt a projektbeállításokat alkalmaznánk a Fabric vagy a Docker háttérrendszerre.

Futtasson le egy teljes npx rayfin up parancsot, hogy a YAML-hitelesítési módot alkalmazza egy meglévő távoli alkalmazásra.

A telepített funkciók által használt hitelesítési útvonalak

A telepített függvények két külön hitelesítési útvonalat használnak:

Elérési út Credential Identitás és engedélyek
Külső kapcsolatok ezen keresztül: ctx.Tokens.* Platform által biztosított erőforrás token Alkalmazás identitása és engedélyei a külső erőforráson
Rayfin DB-n keresztül ctx.getDataClient() Az Invocation Rayfin tokenje A hívó személyazonossága és jogosultságai a Rayfin DB-ben

A jelenlegi Fabric alkalmazásoknál az alkalmazás identitása a BaaS elem tulajdonosa.

A külső kapcsolatok tehát az item tulajdonosának jogosultságait használják, nem pedig az alkalmazás felhasználójának engedélyeit, aki a funkciót hívja. Add meg az alkalmazásidentitásnak a Functions-kód által meghívott összes külső erőforrás és API által megkövetelt engedélyeket.

A közönség kijelölése vagy a funkciók telepítése nem ad az alkalmazás identitásának jogosítását egy külső erőforráshoz.

Az alkalmazás bejelentkezése és a függvény meghívásának engedélyezése különálló az alkalmazás identitásának külső erőforrásokhoz való hozzáférésétől.

A Rayfin adatbázis-hozzáférés mindig a Rayfin tokent használja, és megőrzi a hívó személyazonosságát és adatbázis-jogosultságát. A beállítás services.functions.auth.type: application nem kapcsolja át a Rayfin DB hozzáférését az alkalmazás identitására.

A közönség deklarációihoz, erőforrás-tokenekhez, jogosultságokhoz és helyi fejlesztési viselkedéshez lásd: Kapcsold össze a funkciókat külső erőforrásokhoz.

Az alkalmazás helyi futtatása

Az alkalmazás gyökérmappájából jelentkezz be:

cd my-app
npx rayfin login

Indítsd el a frontendet és a helyi függvények hosztolását:

npm run dev

Függvényekkel rendelkező projektben a npm run dev a rayfin dev elemre képeződik le. Ez a parancs alkalmazza a sémát, elindítja a helyi függvény hosztet, és elindítja a Vite fejlesztő szervert. Nyisd meg a terminálban kiírt helyi URL-címet, és hagyd futni a terminált, miközben fejleszted és hibakeresed az alkalmazást.

Ha csak a függvényházi szervert szeretnéd elindítani, például amikor külön futtatod a frontendet, használd helyette a következő parancsot:

cd my-app
npx rayfin dev 

Üzembe helyezés a Fabricben

Telepítsd az alkalmazás adatait, statikus oldalát és funkcióit:


npx rayfin up --workspace <workspace-name>

Cseréld <WORKSPACE> le a cél Fabric munkaterület nevét.

Funkciók hozzáadása egy meglévő alkalmazáshoz

Egy meglévő Fabric alkalmazás gyökéréből engedd be a funkciót, és inicializáld a függvényprojekteket egyszer:


npx rayfin functions init

Inicializálás után adjunk hozzá függvényimplementációkat a -höz rayfin/functions/src/function_app.ts.

Limitations

  • Funkció tulajdonjoga: Csak a felhasználói adat funkció elem tulajdonosa módosíthatja és publikálhatja a Funkciók kódját.
  • Közzétételi várakozási idő: Várj legalább két percet a közzététel után, mielőtt újra közzétennél valamit. Ez a várakozási idő akkor érvényes, ha a közzététel a Functions böngészőbeli portáljáról, a felhasználóiadat-függvények Visual Studio Code-bővítményéből, a Git-importálási műveletből vagy a telepítési folyamatokból történik.
  • Telepítési csomagméret: A Functions ZIP fájl nem haladhatja meg a 30 MB-ot.
  • A kérés hasznos adatmennyisége: A felhasználói adatfüggvények szolgáltatása 4 MB-os maximális méretet ad meg az összes kérési paraméter együttes méretére. Ez a korlát várhatóan vonatkozik a Rayfin függvényekre, de még nem ellenőrizték.
  • Végrehajtási időtúllépés: Egy függvény akár 240 másodpercig is futhat.
  • Hívásnapló megőrzése: A történelmi hívási naplók alapértelmezés szerint 30 napig maradnak meg.
  • Alkalmazás identitás: Az alkalmazás identitása jelenleg a BaaS elem tulajdonosa.

A regionális elérhetőségi követelményekért és további részletekért a felhasználói adat-függvények korlátairól lásd: Szolgáltatás részletei és korlátai a Fabric felhasználói adat függvényeiben.