Hallinnoi funktion salaisuuksia

Käytä salaisuuksia tarjotaksesi arkaluontoisia konfiguraatioita, kuten henkilökohtaisia pääsytunnuksia ja API-avaimia, toimintoihisi. Älä koskaan koodaa salaisia arvoja lähdekoodiin tai paljasta niitä frontendille. Lue ne ajonaikaisesti soittamalla ctx.getSecret().

Edellytykset

  • Fabric-sovellus, jossa toiminnot on alustettu. Asennusohjeet löydät kohdasta Use Functions in Fabric Apps.
  • Sovellus julkaistiin ainakin kerran .npx rayfin up rayfin secret set ja rayfin secret list kohdistaa aktiiviseen käyttöön otettuun kohteeseen ja epäonnistua, kun etäpäätepisteitä ei ole.
  • Salainen arvo, jota toimintosi vaatii.

Aseta salaisuus

Sovelluksen juuresta ota funktiotoiminto käyttöön ja aseta salaisuus:

npx rayfin secret set API_KEY

Komento pyytää arvoa ja peittää syötteesi. Päivittääksesi olemassa olevan salaisuuden, suorita sama komento uudelleen. Uusi arvo korvaa olemassa olevan arvon.

Tärkeää

Älä sisällytä komentoon salaista arvoa tai sitoa sitä lähdekoodin hallintaan.

Listan salaisuudet

Listaa konfiguroidut salaiset nimet:

npx rayfin secret list

Komento näyttää salaiset nimet ja aikaleimat, mutta ei koskaan näytä salaisia arvoja.

Pääsy salaisuuteen funktiosta

Soita ctx.getSecret('NAME') hakeaksesi salaisuuden nykyiselle kutsulle. Metodi palautuu undefined , kun salaisuutta ei ole konfiguroitu, joten käsittele valinnaiset salaisuudet eksplisiittisesti tai anna sopiva ei-salaisuusoletus.

Seuraava funktio hakee tiedoston GitHub-varastosta. Julkiset tietovarastot eivät vaadi henkilökohtaista pääsytunnusta (PAT). Yksityisissä arkistoissa funktio lisää GITHUB_PAT salaisuuden pyyntöön:

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();
  },
  [],
);

Tyhjä yhteystaulukko tarkoittaa, ettei funktio ilmoita ulkoista resurssiyleisöä. PAT on salaisuus, ei alustan tarjoama resurssitoken.

Määritä salaisuudet ympäristön mukaan

Anna salaiset arvot ympäristössä, jossa funktio suoritetaan:

  • Paikallinen kehitys: Lisää Values salaiset arvot osaan .rayfin/functions/local.settings.json Paikallinen Functions-isäntä lukee funktioympäristön arvot tästä tiedostosta.
  • Fabric: Määritä salaisuudet käyttöönotetulle kohteelle Fabric-portaalissa.

Käytä samaa salaista nimeä jokaisessa ympäristössä. Esimerkiksi konfiguroi GITHUB_PAT se paikallisesti ja Fabric-tilassa, ja lue se ctx.getSecret('API_KEY') molemmissa ympäristöissä.

Tärkeää

Älä sitoudu salaisia arvoja tiedostossa rayfin/functions/local.settings.json tai missään muussa tiedostossa lähdekoodin hallintaan. Tallenna vain ei-salaisia esimerkkejä tai paikkamerkkejä tiedostoihin, jotka olet sitoutunut.