Brug funktioner i Fabric-apps

Funktioner er TypeScript-funktioner, der kører på serveren inde i din Fabric-app. Brug funktioner til logik, der ikke må køre i browseren, såsom at arbejde med hemmeligheder, tilgå privilegerede data og kalde downstream-tjenester med appens identitet.

Hver funktion registreres med et navn og eksponeres som et kaldbart HTTP-endpoint. Din React-frontend kalder funktionen gennem den typede Rayfin-klient, så du behøver ikke implementere forespørgsler, routing eller tokenhåndtering.

Bemærk

Kommandoerne i denne artikel bruger en forhåndsversion af Rayfin CLI.

Hvornår skal man bruge en funktion

Brug en rayfin-funktion til at:

  • Kald et eksternt API med et applikationstok. Eksempler inkluderer Azure AI Foundry, Azure DevOps, Fabric, Azure Storage og Azure Key Vault.
  • Læs eller skriv appens database med server-håndhævet række-niveau sikkerhed.
  • Hold API-nøgler, modeludsendelsesnavne og andre hemmeligheder ude af klientkoden.
  • Kør orkestrering, såsom fan-out calls, aggregation eller AI-prompting, tæt på dataene.

Forudsætninger

Før du begynder, skal du installere eller oprette følgende ressourcer:

  • Node.js 20 år eller senere og npm.
  • Et Fabric-app-scaffold oprettet med Rayfin CLI.
  • Azure Functions Core Tools, som den lokale Functions-vært bruger til fejlfinding.

Install Azure Functions Core Tools version 4:

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

Opret en app med funktioner

Stillads en app og initialiser dens funktioner-projekt:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

Kommandoen rayfin functions init tilføjer funktionsprojektet, dens TypeScript-konfiguration og en startfunktionfil til den eksisterende app.

Byg appen med GitHub Copilot

Stilladset inkluderer GitHub Copilot-instruktioner og færdigheder, der er nødvendige for at arbejde med projektet. Åbn projektet i Visual Studio Code, og beskriv den app, du vil bygge, i GitHub Copilot Chat.

For eksempel kan du bruge følgende prompt til at bygge en AI-pull request-gennemgangsassistent:

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 kan generere og opdatere de nødvendige filer og komponenter. Du kan også bede agenten om at køre appen, fejlfinde funktioner lokalt og deploye appen.

Forstå projektets layout

Funktionens initialiseringskommando opdaterer rayfin/rayfin.yml og opretter rayfin/functions. En typisk app med funktioner har følgende struktur:

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

Filerne tjener følgende formål:

Sti Formål
rayfin/rayfin.yml Konfigurerer autentificering, data, funktioner og statiske hostingtjenester.
rayfin/data/ Indeholder appens datamodeller og skema-eksport.
rayfin/functions/package.json Definerer afhængigheder og bygger scripts til funktionsprojektet.
rayfin/functions/tsconfig.json Konfigurerer TypeScript-buildet til funktioner.
rayfin/functions/src/function_app.ts Indeholder dine funktionsimplementeringer.
rayfin/functions/src/types.ts Indeholder de genererede AppFunctionsSchema typer. Rediger ikke denne fil manuelt.
src/ Indeholder React-frontenden og eventuelle delte domænetyper eller wrappers.

Når du aktiverer funktioner, rayfin/rayfin.yml inkluderer funktionstjenesten:

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

Applikationsautentificering

Aktiverede funktioner kræver eksplicit applikationsautentificering i rayfin/rayfin.yml:

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

Nye Functions stiller stilladser op .auth.type: application

Deaktiverede funktioner kan udelade auth. Men hvis du leverer auth, skal det inkludere:

auth:
  type: application

En fuld npx rayfin up og normal npx rayfin dev flow validerer denne indstilling, før projektindstillinger anvendes på enten Fabric- eller Docker-backend.

Kør en fuld npx rayfin up test for at anvende YAML-autentificeringstilstanden på en eksisterende fjernapplikation.

Autentificeringsstier brugt af implementerede Functions

Deployerede funktioner bruger to separate autentificeringsstier:

Adgangssti Legitimationsoplysninger Identitet og tilladelser
Eksterne forbindelser gennem ctx.Tokens.* Platformleveret ressourcetoken Applikationsidentitet og dens tilladelser på den eksterne ressource
Rayfin DB gennem ctx.getDataClient() Invocations Rayfin-token Opkalderens identitet og tilladelser på Rayfin-databasen

For nuværende Fabric-apps er applikationsidentiteten ejeren af BaaS-elementet.

Eksterne forbindelser bruger derfor elementejerens tilladelser, ikke app-brugerens tilladelser, der kalder funktionen. Giv appens identitet de tilladelser, der kræves af hver ekstern ressource og API, der kaldes af Functions-koden.

Deklaration af et publikum eller implementering af Functions giver ikke appens identitetsrettigheder til en ekstern ressource.

App-login og autorisation til at påkalde en funktion er adskilt fra app-identitetens adgang til eksterne ressourcer.

Rayfin databaseadgang bruger altid Rayfin-tokenet og bevarer kalderens identitet og databaserettigheder. Indstillingen services.functions.auth.type: application skifter ikke Rayfin DB-adgang til applikationsidentiteten.

For audience-deklarationer, ressourcetokens, tilladelser og lokal udviklingsadfærd, se Connect Functions to external resources.

Kør appen lokalt

Fra appens rodmappe skal du logge ind:

cd my-app
npx rayfin login

Start frontend, og den lokale funktionær host:

npm run dev

I et funktionsaktiveret projekt npm run dev afbildes til rayfin dev. Denne kommando anvender skemaet, starter den lokale funktionshost og starter Vite-udviklingsserveren. Åbn den lokale URL, der er udskrevet i terminalen, og hold terminalen kørende, mens du udvikler og fejlsøger appen.

For kun at starte funktionsværten, for eksempel når du kører frontenden separat, brug i stedet følgende kommando:

cd my-app
npx rayfin dev 

Deploy to Fabric

Udrul appens data, statiske site og funktioner:


npx rayfin up --workspace <workspace-name>

Erstat <WORKSPACE> med navnet på det målte Fabric-arbejdsområde.

Tilføj funktioner til en eksisterende app

Fra roden af en eksisterende Fabric-app, aktiver funktionen og initialiser funktionsprojektet én gang:


npx rayfin functions init

Efter initialiseringen tilføjes funktionsimplementeringer til rayfin/functions/src/function_app.ts.

Begrænsninger

  • Funktionsejerskab: Kun ejeren af brugerdata-funktionselementet kan ændre og offentliggøre Functions-koden.
  • Udgivelsescooldown: Vent mindst to minutter efter udgivelse, før du udgiver igen. Denne cooldown gælder, når man publicerer fra Functions in-browser portalen, brugerdatafunktionernes Visual Studio Code-udvidelse, Git-importhandlingen eller deployment-pipelines.
  • Udrulningspakkestørrelse: Functions ZIP-filen må ikke overstige 30 MB.
  • Anmodningspayload-størrelse: User Data Functions Service dokumenterer maksimalt 4 MB for alle anmodningsparametre tilsammen. Denne grænse forventes at gælde for Rayfin-funktioner, men er ikke blevet bekræftet.
  • Udførelsestimeout: En funktion kan køre i op til 240 sekunder.
  • Opbevaring af påkaldelseslogfiler: Historiske påkaldelseslogfiler opbevares som standard i 30 dage.
  • Applikationsidentitet: Applikationsidentiteten er i øjeblikket ejer af BaaS-elementet.

For regionale tilgængelighedskrav og flere detaljer om begrænsninger for brugerdatafunktioner, se Servicedetaljer og begrænsninger for Fabric brugerdatafunktioner.