Používejte funkce ve Fabric aplikacích

Funkce jsou TypeScript funkce, které běží na serveru uvnitř vaší Fabric aplikace. Používejte funkce pro logiku, která nesmí běžet v prohlížeči, například pro práci s tajnými klíči, přístup k privilegovaným datům a volání navazujících služeb pomocí identity aplikace.

Každá funkce je registrována jménem a je vystavena jako volatelný HTTP endpoint. Frontend v Reactu volá funkci přes typovaného klienta Rayfin, takže nemusíte implementovat požadavky, směrování ani manipulaci s tokeny.

Poznámka:

Příkazy v tomto článku používají náhledovou verzi CLI Rayfin.

Kdy použít funkci

Použijte funkci Rayfin pro:

  • Zavolejte externí API pomocí aplikačního tokenu. Příklady zahrnují Azure AI Foundry, Azure DevOps, Fabric, Azure Storage a Azure Key Vault.
  • Čtěte nebo zapisujte databázi aplikace s bezpečností na úrovni řádků vynucenou serverem.
  • Udržujte API klíče, názvy modelových nasazení a další tajemství mimo klientský kód.
  • Provádějte orchestraci, například paralelní volání, agregaci nebo zadávání pokynů AI, v blízkosti dat.

Předpoklady

Než začnete, nainstalujte nebo vytvořte následující zdroje:

  • Node.js 20 nebo novější a npm.
  • Kostra aplikace Fabric vytvořená pomocí Rayfin CLI.
  • Azure Functions Core Tools, které lokální hostitel funkcí používá pro ladění.

Nainstalujte Azure Functions Core Tools verze 4:

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

Vytvořte aplikaci s funkcemi

Vytvořte aplikaci a inicializujte její projekt Functions:

npm create @microsoft/rayfin@latest

cd my-app

npx rayfin functions init

Příkaz rayfin functions init přidává projekt funkcí, jeho konfiguraci TypeScript a soubor startovní funkce do stávající aplikace.

Vytvořte aplikaci pomocí GitHub Copilot

Šablona obsahuje pokyny a dovednosti pro GitHub Copilot potřebné k práci s projektem. Otevřete projekt ve Visual Studio Code a popište aplikaci, kterou chcete postavit v GitHub Copilot Chat.

Například použijte následující výzvu k vytvoření AI asistenta pro přezkoumání 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 dokáže generovat a aktualizovat potřebné soubory a komponenty. Můžete také požádat agenta, aby aplikaci spustil, ladil funkce lokálně a aplikaci nasadil.

Pochopte uspořádání projektu

Příkaz pro inicializaci funkcí aktualizuje rayfin/rayfin.yml a vytváří rayfin/functions. Typická aplikace s funkcemi má následující strukturu:

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

Soubory slouží následujícím účelům:

Cesta Purpose
rayfin/rayfin.yml Konfiguruje autentizaci, data, funkce a statické hostingové služby.
rayfin/data/ Obsahuje datové modely aplikace a exporty schémat.
rayfin/functions/package.json Definuje závislosti a sestavuje skripty pro projekt funkcí.
rayfin/functions/tsconfig.json Konfiguruje sestavení TypeScriptu pro funkce.
rayfin/functions/src/function_app.ts Obsahuje implementace funkcí.
rayfin/functions/src/types.ts Obsahuje generované typy AppFunctionsSchema . Tento soubor ručně neupravujte.
src/ Obsahuje frontend Reactu a všechny sdílené doménové typy nebo obaly.

Když povolíte funkce, zahrnuje rayfin/rayfin.yml službu funkcí:

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

Ověřování aplikací

Povolené funkce vyžadují explicitní autentizaci aplikací v rayfin/rayfin.yml:

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

Nové funkce vygenerují sadu auth.type: application.

Deaktivované funkce nemusí obsahovat auth. Pokud však dodáváte auth, musí to zahrnovat:

auth:
  type: application

Kompletní npx rayfin up a normální npx rayfin dev postup ověřují toto nastavení před aplikací projektových nastavení na backend Fabric nebo Docker.

Spusťte úplný npx rayfin up, aby se na existující vzdálenou aplikaci použil režim ověřování YAML.

Autentizační cesty používané nasazenými funkcemi

Nasazené funkce používají dvě samostatné autentizační cesty:

Přístupová cesta Credential Identita a oprávnění
Externí spojení prostřednictvím ctx.Tokens.* Platformou poskytovaný token zdrojů Identita aplikace a její oprávnění na externím zdroji
Rayfin DB až po ctx.getDataClient() Rayfin token společnosti Invocation Identita volajícího a oprávnění v databázi Rayfin

U současných aplikací Fabric je identita aplikace vlastníkem položky BaaS.

Externí připojení proto používají oprávnění vlastníka položky, nikoli oprávnění uživatele aplikace, který funkci vyvolává. Udělit identitě aplikace oprávnění požadovaná všemi externími zdroji a API volanými v kódu Functions.

Deklarace publika nebo nasazení Functions neuděluje aplikaci oprávnění k identitě externího zdroje.

Přihlášení aplikací a autorizace k vyvolání funkce jsou oddělené od přístupu identity aplikace k externím zdrojům.

Přístup do databáze Rayfin vždy využívá token Rayfin a zachovává identitu volajícího i oprávnění k databázi. Nastavení services.functions.auth.type: application nepřepne přístup k databázi Rayfin na identitu aplikace.

Deklarace cílové skupiny, tokeny prostředků, oprávnění a chování při místním vývoji najdete v části Připojení funkcí k externím prostředkům.

Místní spuštění aplikace

Z kořenové složky aplikace se přihlaste:

cd my-app
npx rayfin login

Spusťte front-end a místního hostitele funkcí:

npm run dev

V projektu s podporou funkcí npm run dev odpovídá rayfin dev. Tento příkaz aplikuje schéma, spustí hostitele lokálních funkcí a spustí vývojový server Vite. Otevřete lokální URL vytištěnou v terminálu a nechte terminál běžet, zatímco vyvíjíte a ladíte aplikaci.

Pokud chcete spustit pouze hostitele funkcí, například když spouštěte frontend zvlášť, použijte místo toho následující příkaz:

cd my-app
npx rayfin dev 

Nasazení do Fabric

Nasaďte data aplikace, statický web a funkce:


npx rayfin up --workspace <workspace-name>

Nahraďte <WORKSPACE> to názvem cílového pracovního prostoru Fabric.

Přidejte funkce do existující aplikace

V kořenovém adresáři existující aplikace Fabric povolte tuto možnost a jednorázově inicializujte projekt služby Functions:


npx rayfin functions init

Po inicializaci přidejte implementace funkcí do rayfin/functions/src/function_app.ts.

Limitations

  • Vlastnictví funkce: Pouze vlastník položky uživatelských dat funkce může kód funkcí upravovat a publikovat.
  • Čekací doba mezi publikováním: Po publikování před dalším publikováním vyčkejte alespoň dvě minuty. Tato čekací doba platí při publikování z portálu Functions v prohlížeči, z rozšíření User Data Functions pro Visual Studio Code, pomocí akce importu z Gitu nebo z kanálů nasazení.
  • Velikost balíčku nasazení: Soubor Functions ZIP nesmí přesáhnout 30 MB.
  • Velikost datové části požadavku: V dokumentaci služby funkcí uživatelských dat je pro všechny parametry požadavku dohromady uveden maximální limit 4 MB. Tento limit by měl platit i pro Rayfinovy funkce, ale nebyl ověřen.
  • Časový limit vykonání: Funkce může běžet až 240 sekund.
  • Uchovávání záznamů v záznamech vyvolání: Historické záznamy vyvolání jsou ve výchozím nastavení uchovávány po dobu 30 dnů.
  • Identita aplikace: Identita aplikace je v současnosti vlastníkem položky BaaS.

Pro regionální požadavky na dostupnost a podrobnosti o omezeních funkcí uživatelských dat viz podrobnosti o službách a omezeních funkcí uživatelských dat Fabric.