Bruk funksjoner i Fabric-apper

Funksjoner er TypeScript-funksjoner som kjører på serveren inne i Fabric-appen din. Bruk funksjoner for logikk som ikke må kjøre i nettleseren, som å jobbe med hemmeligheter, få tilgang til privilegerte data og kalle nedstrømstjenester med appens identitet.

Hver funksjon registreres med et navn og eksponeres som et kallbart HTTP-endepunkt. React-frontenden din kaller funksjonen gjennom den typede Rayfin-klienten, så du trenger ikke implementere forespørsler, ruting eller tokenhåndtering.

Notat

Kommandoene i denne artikkelen bruker en forhåndsversjon av Rayfin CLI.

Når man skal bruke en funksjon

Bruk en rayfin-funksjon til å:

  • Kall et eksternt API med en applikasjonstoken. Eksempler inkluderer Azure AI Foundry, Azure DevOps, Fabric, Azure Storage og Azure Key Vault.
  • Les eller skriv appens database med server-håndhevet rad-nivå sikkerhet.
  • Hold API-nøkler, modelldistribusjonsnavn og andre hemmeligheter utenfor klientkoden.
  • Kjør orkestrering, som fan-out calls, aggregering eller AI-prompting, nær dataene.

Forutsetninger

Før du begynner, installer eller opprett følgende ressurser:

  • Node.js 20 år eller senere og NPM.
  • Et Fabric-app-stillas laget med Rayfin CLI.
  • Azure Functions Core Tools, som de lokale funksjonene hoster bruker til feilsøking.

Install Azure Functions Core Tools version 4:

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

Lag en app med funksjoner

En app og initialisere dens funksjoner-prosjekt:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

Kommandoen rayfin functions init legger til funksjonsprosjektet, sin TypeScript-konfigurasjon og en startfunksjonsfil til den eksisterende appen.

Bygg appen med GitHub Copilot

Stillaset inkluderer instruksjonene og ferdighetene til GitHub Copilot som trengs for å jobbe med prosjektet. Åpne prosjektet i Visual Studio Code, og beskriv appen du vil bygge i GitHub Copilot Chat.

For eksempel, bruk følgende prompt for å bygge en AI-assistent for gjennomgang av pull request:

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 oppdatere nødvendige filer og komponenter. Du kan også be agenten kjøre appen, feilsøke funksjoner lokalt og distribuere appen.

Forstå prosjektoppsettet

Funksjonsinitialiseringskommandoen oppdaterer rayfin/rayfin.yml og oppretter rayfin/functions. En typisk app med funksjoner 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/

Filene tjener følgende formål:

Bane Formål
rayfin/rayfin.yml Konfigurerer autentisering, data, funksjoner og statiske hostingtjenester.
rayfin/data/ Inneholder appens datamodeller og skjema-eksport.
rayfin/functions/package.json Definerer avhengigheter og bygger skript for funksjonsprosjektet.
rayfin/functions/tsconfig.json Konfigurerer TypeScript-bygget for funksjoner.
rayfin/functions/src/function_app.ts Inneholder funksjonsimplementasjonene dine.
rayfin/functions/src/types.ts Inneholder de genererte AppFunctionsSchema typene. Ikke rediger denne filen manuelt.
src/ Inneholder React-frontenden og eventuelle delte domenetyper eller wrappere.

Når du aktiverer funksjoner, rayfin/rayfin.yml inkluderer funksjonstjenesten:

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

Applikasjonsautentisering

Aktiverte funksjoner krever eksplisitt applikasjonsautentisering i rayfin/rayfin.yml:

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

Nye funksjoner stillaser setter auth.type: application.

Deaktiverte funksjoner kan utelate auth. Men hvis du leverer auth, må det inkludere:

auth:
  type: application

En full npx rayfin up og normal npx rayfin dev flow validerer denne innstillingen før du anvender prosjektinnstillinger på enten Fabric- eller Docker-backend.

Kjør en full npx rayfin up for å anvende YAML-autentiseringsmodus på en eksisterende fjernapplikasjon.

Autentiseringsstier brukt av deployerte funksjoner

Deployerte funksjoner bruker to separate autentiseringsveier:

Adkomstvei Legitimasjon Identitet og tillatelser
Eksterne forbindelser gjennom ctx.Tokens.* Plattformbasert ressurstoken Applikasjonsidentitet og dens tillatelser på den eksterne ressursen
Rayfin DB gjennom ctx.getDataClient() Invocations Rayfin-token Innringerens identitet og tillatelser på Rayfin-databasen

For dagens Fabric-apper er applikasjonsidentiteten eieren av BaaS-elementet.

Eksterne tilkoblinger bruker derfor elementeierens tillatelser, ikke tillatelsene til appbrukeren som kaller funksjonen. Gi appens identitet de tillatelsene som kreves av alle eksterne ressurser og API-er som kalles av Functions-koden.

Å erklære et publikum eller distribuere Functions gir ikke appens identitetsrettigheter til en ekstern ressurs.

App-innlogging og autorisasjon for å starte en funksjon er adskilt fra appidentitetens tilgang til eksterne ressurser.

Rayfin DB-tilgang bruker alltid Rayfin-tokenet og bevarer anroperens identitet og databasetillatelser. Innstillingen services.functions.auth.type: application bytter ikke Rayfin DB-tilgang til applikasjonsidentiteten.

For audience-deklarasjoner, ressurstokens, tillatelser og lokal utviklingsatferd, se Connect Functions to external resources.

Kjør appen lokalt

Fra appens rotmappe, logg inn:

cd my-app
npx rayfin login

Start frontend og lokal funksjonsvert:

npm run dev

I et funksjonsaktivert prosjekt npm run dev avbildes til rayfin dev. Denne kommandoen anvender skjemaet, starter den lokale funksjonsverten og starter Vite-utviklingsserveren. Åpne den lokale URL-en som er skrevet ut i terminalen, og la terminalen gå mens du utvikler og feilsøker appen.

For å starte kun funksjonsverten, for eksempel når du kjører frontenden separat, bruk følgende kommando i stedet:

cd my-app
npx rayfin dev 

Deploy to Fabric

Distribuer appens data, statiske sted og funksjoner:


npx rayfin up --workspace <workspace-name>

Bytt <WORKSPACE> ut med navnet på målet Fabric-arbeidsområdet.

Legg til funksjoner i en eksisterende app

Fra roten av en eksisterende Fabric-app, aktiver funksjonen og initialiser funksjonsprosjektet én gang:


npx rayfin functions init

Etter initialisering, legg til funksjonsimplementasjoner i rayfin/functions/src/function_app.ts.

Begrensninger

  • Funksjonseierskap: Kun eieren av brukerdata-funksjonselementet kan endre og publisere Functions-koden.
  • Publiseringsnedkjøling: Vent minst to minutter etter publisering før du publiserer igjen. Denne nedkjølingen gjelder når man publiserer fra Functions sin nettleserportal, brukerdatafunksjonene Visual Studio Code-utvidelsen, Git-importhandlingen eller distribusjonspipelines.
  • Distribusjonspakkestørrelse: Functions ZIP-filen kan ikke overstige 30 MB.
  • Forespørselsnyttelaststørrelse: Brukerdatafunksjonene dokumenterer maksimalt 4 MB for alle forespørslingsparametere samlet. Denne grensen forventes å gjelde for Rayfin-funksjoner, men er ikke verifisert.
  • Utførelsestid: En funksjon kan kjøre i opptil 240 sekunder.
  • Oppbevaring av påkallingslogger: Historiske påkallingslogger beholdes som standard i 30 dager.
  • Applikasjonsidentitet: Applikasjonsidentiteten er for øyeblikket eier av BaaS-elementet.

For regionale tilgjengelighetskrav og mer informasjon om begrensninger for brukerdatafunksjoner, se Servicedetaljer og begrensninger for Fabric-brukerdatafunksjoner.