Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Functies zijn TypeScript-functies die op de server binnen je Fabric-app draaien. Gebruik functies voor logica die niet in de browser mogen draaien, zoals werken met geheimen, toegang krijgen tot bevoorrechte gegevens en het aanroepen van downstream-diensten met de app-identiteit.
Elke functie wordt geregistreerd met een naam en wordt blootgesteld als een aanroepbaar HTTP-eindpunt. Je React-frontend roept de functie aan via de getypeerde Rayfin-client, dus je hoeft geen verzoeken, routing of tokenbehandeling te implementeren.
Opmerking
De commando's in dit artikel gebruiken een previewversie van de Rayfin CLI.
Wanneer een functie te gebruiken
Gebruik een rayfin-functie om:
- Roep een externe API aan met een applicatietoken. Voorbeelden zijn Azure AI Foundry, Azure DevOps, Fabric, Azure Storage en Azure Key Vault.
- Lees of schrijf in de database van de app met door de server afgedwongen beveiliging op rijniveau.
- Houd API-sleutels, model-implementatienamen en andere geheimen buiten de clientcode.
- Voer orkestratie uit, zoals fan-out-aanroepen, aggregatie of AI-prompts, dicht bij de gegevens.
Prerequisites
Installeer of maak voordat je begint de volgende bronnen:
- Node.js 20 of hoger en npm.
- Een Fabric-app-skelet gegenereerd met de Rayfin CLI.
- Azure Functions Core Tools, die de lokale Functions-host gebruikt voor debugging.
Install Azure Functions Core Tools versie 4:
npm install --global azure-functions-core-tools@4
Maak een app met functies
Maak een app-structuur en initialiseer het Functions-project:
npm create @microsoft/rayfin@latest
cd my-app
npx rayfin functions init
Het rayfin functions init commando voegt het functions-project, de TypeScript-configuratie en een starter-functiebestand toe aan de bestaande app.
Bouw de app met GitHub Copilot
De steiger bevat de instructies en vaardigheden van GitHub Copilot die nodig zijn om met het project te werken. Open het project in Visual Studio Code en beschrijf de app die je wilt bouwen in GitHub Copilot Chat.
Gebruik bijvoorbeeld de volgende prompt om een AI-pull request review-assistent te bouwen:
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 de benodigde bestanden en componenten genereren en bijwerken. Je kunt de agent ook vragen de app te draaien, lokale functies te debuggen en de app te deployen.
Begrijp de projectindeling
Met het initialisatiecommando voor functies werkt u rayfin/rayfin.yml bij en maakt u rayfin/functions. Een typische app met functies heeft de volgende structuur:
my-app/
├── rayfin/
│ ├── rayfin.yml
│ ├── data/
│ │ ├── TripPlan.ts
│ │ └── schema.ts
│ └── functions/
│ ├── package.json
│ ├── tsconfig.json
│ └── src/
│ ├── function_app.ts
│ └── types.ts
└── src/
└── services/
De bestanden dienen de volgende doelen:
| Pad | Purpose |
|---|---|
rayfin/rayfin.yml |
Configuratie van authenticatie, data, functies en statische hostingservices. |
rayfin/data/ |
Bevat de datamodellen en schema-exports van de app. |
rayfin/functions/package.json |
Definieert afhankelijkheden en bouwt scripts voor het Functions-project. |
rayfin/functions/tsconfig.json |
Configureert de TypeScript-build voor functies. |
rayfin/functions/src/function_app.ts |
Bevat je functie-implementaties. |
rayfin/functions/src/types.ts |
Bevat de gegenereerde AppFunctionsSchema types. Bewerk dit bestand niet handmatig. |
src/ |
Bevat de React-frontend en alle gedeelde domeintypen of wrappers. |
Wanneer je functies inschakelt, rayfin/rayfin.yml bevat de functies-service:
services:
functions:
enabled: true
auth:
type: application
buildCommand: npm run build
Applicatie-authenticatie
Geactiveerde functies vereisen expliciete applicatieauthenticatie in rayfin/rayfin.yml:
services:
functions:
enabled: true
auth:
type: application
buildCommand: npm run build
Nieuwe Functions steigers verzamelen auth.type: application.
Uitgeschakelde functies kunnen auth weglaten. Als je echter levert auth, moet dit het volgende bevatten:
auth:
type: application
Een volledige npx rayfin up en de normale npx rayfin dev flow valideren deze instelling voordat projectinstellingen worden toegepast op de Fabric- of Docker-backend.
Voer een volledige npx rayfin up test uit om de YAML-authenticatiemodus toe te passen op een bestaande externe app.
Authenticatiepaden die door geïmplementeerde Functions worden gebruikt
Uitgerolde functies gebruiken twee aparte authenticatiepaden:
| Toegangspad | Credential | Identiteit en machtigingen |
|---|---|---|
Externe verbindingen via ctx.Tokens.* |
Door het platform verstrekte resourcetoken | Applicatie-identiteit en de bijbehorende rechten op de externe bron |
Rayfin DB via ctx.getDataClient() |
Rayfin-token van Invocation | De identiteit en rechten van de beller in de Rayfin-database |
Voor huidige Fabric-apps is de applicatieidentiteit de eigenaar van het BaaS-item.
Externe verbindingen gebruiken daarom de rechten van de item-eigenaar, niet die van de app-gebruiker die de functie aanroept. Verleen de app-identiteit de machtigingen die vereist zijn door elke externe resource en API die door de Functions-code wordt aangeroepen.
Het declareren van een audience of het deployen van Functions geeft de app-identiteit geen rechten aan een externe bron.
App-aanmelden en autorisatie om een functie aan te roepen staan los van de toegang van de app-identiteit tot externe bronnen.
Rayfin DB-toegang gebruikt altijd het Rayfin-token en behoudt de identiteit en databaserechten van de aanroeper. Met de instelling services.functions.auth.type: application wordt de toegang tot de Rayfin-database niet overgeschakeld naar de applicatieidentiteit.
Voor audience-declaraties, resource tokens, permissies en lokaal ontwikkelingsgedrag, zie Connect Functions to external resources.
De app lokaal uitvoeren
Log in vanuit de rootmap van de app:
cd my-app
npx rayfin login
Start de frontend en de lokale functiehost:
npm run dev
In een project met functies ingeschakeld, wordt npm run dev toegewezen aan rayfin dev. Dit commando past het schema toe, start de host van lokale functies en start de Vite-ontwikkelserver. Open de lokale URL die in de terminal is afgedrukt en houd de terminal draaiende terwijl je de app ontwikkelt en debuggt.
Om alleen de functions host te starten, bijvoorbeeld wanneer je de frontend apart uitvoert, gebruik dan in plaats daarvan het volgende commando:
cd my-app
npx rayfin dev
Implementeren in Fabric
Rol de data, statische site en functies van de app uit:
npx rayfin up --workspace <workspace-name>
Vervang <WORKSPACE> door de naam van de doel-Fabric-werkruimte.
Voeg functies toe aan een bestaande app
Vanaf de wortel van een bestaande Fabric-app, schakel de functie in en initialiseer het functieproject één keer:
npx rayfin functions init
Voeg na initialisatie functie-implementaties toe aan rayfin/functions/src/function_app.ts.
Limitations
- Functie-eigendom: Alleen de eigenaar van het gebruikersgegevensfunctie-item kan de Functions-code wijzigen en publiceren.
- Publicatie-cooldown: Wacht minstens twee minuten na publicatie voordat je opnieuw publiceert. Deze afkoelperiode geldt wanneer je publiceert vanuit de browserportal van Functions, de Visual Studio Code-extensie voor gebruikersgegevensfuncties, de Git-importactie of implementatiepijplijnen.
- Grootte van het deploymentpakket: Het Functions ZIP-bestand mag niet groter zijn dan 30 MB.
- Grootte van de aanvraagpayload: De service voor gebruikersgegevensfuncties vermeldt een maximum van 4 MB voor alle aanvraagparameters samen. Deze limiet wordt verwacht van toepassing op Rayfin-functies, maar is nog niet geverifieerd.
- Uitvoeringstimeout: Een functie kan tot 240 seconden draaien.
- Invocation log retentie: Historische invocationlogs worden standaard 30 dagen bewaard.
- Applicatie-identiteit: De applicatie-identiteit is momenteel de eigenaar van het BaaS-item.
Voor regionale beschikbaarheidsvereisten en meer details over de beperkingen van gebruikersgegevensfuncties, zie Servicedetails en beperkingen van Fabric-gebruikersgegevensfuncties.