Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les fonctions sont des fonctions TypeScript qui s’exécutent sur le serveur de votre application Fabric. Utilisez des fonctions logiques qui ne doivent pas s’exécuter dans le navigateur, comme travailler avec des secrets, accéder à des données privilégiées et appeler les services en aval avec l’identité de l’application.
Chaque fonction est enregistrée avec un nom et exposée comme un point de terminaison HTTP appelable. Votre frontend React appelle la fonction via le client Rayfin typé, vous n’avez donc pas besoin d’implémenter les requêtes, le routage ou la gestion des jetons.
Note
Les commandes de cet article utilisent une version preview de la CLI Rayfin.
Quand utiliser une fonction
Utiliser une fonction Rayfin pour :
- Appelez une API externe avec un jeton application. Parmi les exemples figurent Azure AI Foundry, Azure DevOps, Fabric, stockage Azure et Azure Key Vault.
- Lisez ou écrivez la base de données de l’application avec une sécurité au niveau des lignes imposée par le serveur.
- Gardez les clés API, les noms de déploiement des modèles et autres secrets hors du code client.
- Exécutez des orchestrations, comme des appels parallèles, l’agrégation ou des prompts d’IA, au plus près des données.
Prerequisites
Avant de commencer, installez ou créez les ressources suivantes :
- Node.js 20 ou version ultérieure et npm.
- Structure d’application Fabric créée avec l’interface de ligne de commande Rayfin.
- Azure Functions Core Tools, que l’hébergeur local des fonctions utilise pour le débogage.
Installer Azure Functions Core Tools version 4 :
npm install --global azure-functions-core-tools@4
Créez une application avec des fonctions
Créez une application et initialisez son projet Functions :
npm create @microsoft/rayfin@latest
cd my-app
npx rayfin functions init
La rayfin functions init commande ajoute le projet de fonctions, sa configuration TypeScript et un fichier de fonction de démarrage à l’application existante.
Construis l’application avec GitHub Copilot
Le squelette comprend les instructions et les compétences de GitHub Copilot nécessaires pour travailler sur le projet. Ouvre le projet dans Visual Studio Code et décris l’application que tu veux construire dans GitHub Copilot Chat.
Par exemple, utilisez l’invite suivante pour créer un assistant de révision des pull requests par IA :
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 peut générer et mettre à jour les fichiers et composants requis. Vous pouvez aussi demander à l’agent d’exécuter l’application, de déboguer les fonctions localement, puis de déployer l’application.
Comprendre la disposition du projet
La commande d’initialisation des fonctions met à jour rayfin/rayfin.yml et crée rayfin/functions. Une application typique avec des fonctions suit la structure suivante :
my-app/
├── rayfin/
│ ├── rayfin.yml
│ ├── data/
│ │ ├── TripPlan.ts
│ │ └── schema.ts
│ └── functions/
│ ├── package.json
│ ├── tsconfig.json
│ └── src/
│ ├── function_app.ts
│ └── types.ts
└── src/
└── services/
Les fichiers remplissent les objectifs suivants :
| Chemin | Purpose |
|---|---|
rayfin/rayfin.yml |
Configure l’authentification, les données, les fonctions et les services d’hébergement statique. |
rayfin/data/ |
Contient les modèles de données et les exportations de schéma de l’application. |
rayfin/functions/package.json |
Définit les dépendances et construit des scripts pour le projet de fonctions. |
rayfin/functions/tsconfig.json |
Configure la compilation TypeScript pour les fonctions. |
rayfin/functions/src/function_app.ts |
Contient vos implémentations de fonctions. |
rayfin/functions/src/types.ts |
Contient les types AppFunctionsSchema générés. Ne modifiez pas ce fichier manuellement. |
src/ |
Contient le frontend React ainsi que tous les types de domaines ou wrappers partagés. |
Lorsque vous activez des fonctions, rayfin/rayfin.yml inclut le service fonctions :
services:
functions:
enabled: true
auth:
type: application
buildCommand: npm run build
Authentification de l’application
Les fonctions activées nécessitent une authentification explicite de l’application dans rayfin/rayfin.yml:
services:
functions:
enabled: true
auth:
type: application
buildCommand: npm run build
Nouvelles fonctions échafaudages définissent auth.type: application.
Les fonctions désactivées peuvent omettre auth. Cependant, si vous fournissez auth, cela doit inclure :
auth:
type: application
Un npx rayfin up complet et le flux npx rayfin dev normal valident ce paramètre avant d’appliquer les paramètres du projet au backend Fabric ou Docker.
Effectuez un npx rayfin up complet pour appliquer le mode d’authentification YAML à une application distante existante.
Chemins d’authentification utilisés par les fonctions déployées
Les fonctions déployées utilisent deux voies d’authentification distinctes :
| Chemin d’accès | Credential | Identité et autorisations |
|---|---|---|
Connexions externes via ctx.Tokens.* |
Jeton de ressource fourni par la plateforme | Identité de l’application et ses autorisations sur la ressource externe |
Rayfin DB à ctx.getDataClient() |
Jeton Rayfin d’Invocation | Identité de l’appelant et permissions sur la base de données Rayfin |
Pour les applications Fabric actuelles, l’identité de l’application est le propriétaire de l’élément BaaS.
Les connexions externes utilisent donc les autorisations du propriétaire de l’objet, et non celles de l’utilisateur de l’application qui invoque la fonction. Accorder à l’identité de l’application les permissions requises par chaque ressource externe et API appelée par le code Functions.
Déclarer une audience ou déployer des fonctions ne donne pas les permissions d’identité de l’application à une ressource externe.
La connexion à l’application et l’autorisation d’invoquer une fonction sont distinctes de l’accès de l’identité de l’application aux ressources externes.
L’accès à la base de données Rayfin utilise toujours le jeton Rayfin et préserve l’identité de l’appelant ainsi que les permissions de la base de données. Le paramètre services.functions.auth.type: application ne bascule pas l’accès à la base de données Rayfin sur l’identité de l’application.
Pour les déclarations d’audience, les tokens de ressources, les permissions et le comportement de développement local, voir Connecter des fonctions à des ressources externes.
Exécutez l’application localement.
Depuis le dossier racine de l’application, connectez-vous :
cd my-app
npx rayfin login
Démarrez le frontend et l’hôte local des fonctions :
npm run dev
Dans un projet activé par des fonctions, npm run dev correspond à rayfin dev. Cette commande applique le schéma, lance l’hôte des fonctions locales et lance le serveur de développement Vite. Ouvrez l’URL locale imprimée dans le terminal, et laissez le terminal tourner pendant que vous développez et débogez l’application.
Pour ne démarrer que l’hôte des fonctions, par exemple lorsque vous exécutez la frontend séparément, utilisez la commande suivante :
cd my-app
npx rayfin dev
Déployer sur Fabric
Déployez les données, le site statique et les fonctions de l’application :
npx rayfin up --workspace <workspace-name>
Remplacez-le <WORKSPACE> par le nom de l’espace de travail Fabric cible.
Ajouter des fonctions à une application existante
À partir de la racine d’une application Fabric existante, activez la fonctionnalité et initialisez le projet de fonctions une fois :
npx rayfin functions init
Après l’initialisation, ajouter des implémentations de fonctions à rayfin/functions/src/function_app.ts.
Limitations
- Propriété des fonctions : Seul le propriétaire de l’élément de données utilisateur peut modifier et publier le code des fonctions.
- Délai d’attente entre deux publications : Attendez au moins deux minutes après avoir publié avant de publier à nouveau. Ce délai de recharge s’applique lors de la publication depuis le portail Fonctions dans le navigateur, l’extension Visual Studio Code des fonctions de données utilisateur, l’action d’importation Git, ou les pipelines de déploiement.
- Taille du package de déploiement : Le fichier ZIP Functions ne peut pas dépasser 30 Mo.
- Taille de la charge utile de la requête : Le service de fonctions de données utilisateur documente un maximum de 4 Mo pour tous les paramètres de requête combinés. Cette limite devrait s’appliquer aux fonctions Rayfin, mais elle n’a pas été vérifiée.
- Délai d’exécution : Une fonction peut fonctionner jusqu’à 240 secondes.
- Conservation des journaux d’invocation : Les journaux d’invocation historiques sont conservés par défaut pendant 30 jours.
- Identité de l’application : L’identité de l’application correspond actuellement au propriétaire de l’élément BaaS.
Pour les exigences de disponibilité régionale et plus de détails sur les limitations des fonctions de données utilisateur, voir Détails du service et limitations des fonctions de données utilisateur Fabric.