Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Używaj sekretów, aby zapewnić wrażliwą konfigurację, taką jak osobiste tokeny dostępu i klucze API, do swoich funkcji. Nigdy nie koduj na stałe wartości sekretów w kodzie źródłowym ani nie udostępniaj ich frontendowi. Odczytaj je w czasie wykonywania, wywołując ctx.getSecret().
Wymagania wstępne
- Aplikacja Fabric z zainicjalizowanymi funkcjami. Instrukcje konfiguracji znajdziesz w sekcji Używaj funkcji w Fabric Apps.
- Aplikacja została wdrożona co najmniej raz z
npx rayfin up.rayfin secret setirayfin secret listodnoszą się do aktywnego wdrożonego elementu i kończą się niepowodzeniem, jeśli nie istnieje zdalny punkt końcowy. - Tajna wartość wymagana przez twoją funkcję.
Ustaw tajne
Z rootu aplikacji włącz funkcję funkcji i ustaw sekret:
npx rayfin secret set API_KEY
Polecenie prosi o podanie wartości i maskuje wprowadzane dane. Aby zaktualizować istniejący sekret, uruchom to samo polecenie ponownie. Nowa wartość zastępuje istniejącą.
Ważna
Nie umieszczaj sekretnej wartości w poleceniu ani nie zapisuj jej w systemie kontroli wersji.
Lista tajemnic
Wymień skonfigurowane nazwy sekretów:
npx rayfin secret list
Polecenie wyświetla tajne nazwy i znaczniki czasu, ale nigdy nie pokazuje wartości tajnych.
Uzyskaj dostęp do sekretu z funkcji
Wywołaj ctx.getSecret('NAME'), aby pobrać sekret dla bieżącego wywołania. Metoda zwraca undefined, gdy wpis tajny nie jest skonfigurowany, więc jawnie obsłuż opcjonalne wpisy tajne lub podaj odpowiednią domyślną wartość niejawną.
Następująca funkcja pobiera plik z repozytorium GitHub. Publiczne repozytoria nie wymagają osobistego tokena dostępu (PAT). Dla prywatnych repozytoriów funkcja dodaje wpis GITHUB_PAT secret do żądania:
import {
UserDataFunctions,
type RayfinContext,
} from '@microsoft/fabric-user-data-functions';
const udf = new UserDataFunctions();
udf.func(
'getGitHubFile',
async (
owner: string,
repo: string,
path: string,
ref: string,
ctx: RayfinContext,
): Promise<string> => {
const pat = ctx.getSecret('GITHUB_PAT');
const headers: Record<string, string> = {
Accept: 'application/vnd.github.raw+json',
'User-Agent': 'rayfin-app',
};
if (pat) {
headers.Authorization = `Bearer ${pat}`;
}
const encodedPath = path
.split('/')
.map(encodeURIComponent)
.join('/');
const url =
`https://api.github.com/repos/${encodeURIComponent(owner)}/` +
`${encodeURIComponent(repo)}/contents/${encodedPath}` +
`?ref=${encodeURIComponent(ref || 'main')}`;
const response = await fetch(url, { headers });
if (!response.ok) {
throw new Error(`GitHub ${response.status}: ${await response.text()}`);
}
return response.text();
},
[],
);
Tablica pustych połączeń wskazuje, że funkcja nie deklaruje zewnętrznej grupy odbiorców zasobów. PAT to sekret, a nie token zasobów dostarczany przez platformę.
Konfiguruj sekrety według środowiska
Podaj tajne wartości w środowisku uruchomieniowym funkcji:
-
Rozwój lokalny: Dodaj sekretne wartości do
Valuessekcji .rayfin/functions/local.settings.jsonLokalny host Functions odczytuje wartości środowiska funkcji z tego pliku. - Fabric: Konfiguruj sekrety dla wdrożonego przedmiotu w portalu Fabric.
Używaj tej samej nazwy sekretu w każdym środowisku. Na przykład skonfiguruj GITHUB_PAT lokalnie i w usłudze Fabric, a następnie odczytaj je za pomocą ctx.getSecret('API_KEY') w obu środowiskach.
Ważna
Nie zatwierdzaj tajnych wartości w pliku rayfin/functions/local.settings.json ani w żadnym innym pliku w systemie kontroli wersji. Przechowuj w plikach, które zatwierdzasz, tylko nietajne przykłady lub elementy zastępcze.