Dela via


Konfiguration av databasanslutning i Azure Static Web Apps (förhandsversion)

Azure Static Web Apps-databasanslutningar fungerar med olika Azure-databaser.

När du ansluter en databas till din statiska webbapp måste du konfigurera databasens brandvägg för att acceptera nätverksåtkomst från Static Web Apps-arbetarna genom att tillåta nätverksåtkomst från Azure-resurser. Det går inte att tillåta specifika IP-adresser för Static Web Apps.

Om du använder autentiseringstypen Hanterad identitet måste du konfigurera den statiska webbappens profil för hanterad identitet för att få åtkomst till databasen.

Använd den här tabellen om du vill ha mer information om konfiguration av brandvägg och hanterad identitet för databasen.

Namn Type Brandvägg Hanterad identitet
Azure Cosmos DB Standard Konfigurera brandväggen Konfigurera hanterad identitet
Azure SQL Standard Konfigurera brandväggen Konfigurera hanterad identitet
Azure Database for MySQL Sladd Konfigurera brandväggen Stöds inte
Azure Database for PostgreSQL Sladd Konfigurera brandväggen Stöds inte
Azure Database for PostgreSQL (enkel) Enstaka Konfigurera brandväggen Konfigurera hanterad identitet

Konfiguration

Du definierar körningsbeteendet för databasanslutningen staticwebapp.database.config.json i filen. Innan du länkar en databas till din statiska webbapp måste du skapa den här filen på lagringsplatsen. Enligt konventionen finns den här filen i mappen swa-db-connections i roten på lagringsplatsen, men du kan flytta den om du vill.

Syftet med konfigurationsfilen är att:

  • Mappa sökvägar från /data-api slutpunkten till dina databastabeller eller entiteter
  • Exponera REST- eller GraphQL-slutpunkter (eller båda)
  • Definiera entitetssäkerhetsregler
  • Kontrollera konfigurationsinställningar för utveckling

Om du använder Azure Cosmos DB med GraphQL måste du också ange en gql schemafil.

Kommentar

Statiska Web Apps-databasanslutningar kräver en mapp som innehåller konfigurationsfilerna. Den här mappen måste innehålla staticwebapp.database.config.json konfigurationsfilen för alla databastyper. För Cosmos DB för NoSQL-databaser krävs också en staticwebapp.database.schema.gql-schemafil .

Enligt konventionen heter den här mappen swa-db-connections och placeras i roten på lagringsplatsen. Den här konventionen kan åsidosättas med en anpassad konfigurationsmapp.

Exempelkonfigurationsfil

Följande exempelkonfigurationsfil visar hur du ansluter till en Azure SQL-databas och exponerar både REST- och GraphQL-slutpunkter. Fullständig information om konfigurationsfilen och dess funktioner som stöds finns i dokumentationen för Data API Builder.

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
  "data-source": {
    "database-type": "mssql",
    "options": {
      "set-session-context": false 
    },
    "connection-string": "@env('DATABASE_CONNECTION_STRING')"
  },
  "runtime": {
    "rest": {
      "enabled": true,
      "path": "/rest"
    },
    "graphql": {
      "allow-introspection": true,
      "enabled": true,
      "path": "/graphql"
    },
    "host": {
      "mode": "production",
      "cors": {
        "origins": ["http://localhost:4280"],
        "allow-credentials": false
      },
      "authentication": {
        "provider": "StaticWebApps"
      }
    }
  },
  "entities": {
    "Person": {
      "source": "dbo.MyTestPersonTable",
      "permissions": [
        {
          "actions": ["create", "read", "update", "delete"],
          "role": "anonymous"
        }
      ]
    }
  }
}
Property beskrivning
$schema Den version av Database API Builder som används av Azure Static Web Apps för att tolka konfigurationsfilen.
data-source Konfigurationsinställningar som är specifika för måldatabasen. Egenskapen database-type accepterar mssql, postgresql, cosmosdb_nosqleller mysql.

Anslutningssträng skrivs över vid distribution när en databas är ansluten till din Static Web Apps-resurs. Under den lokala utvecklingen är det anslutningssträng som definierats i konfigurationsfilen vad som används för att ansluta till databasen.
runtime Avsnitt som definierar de exponerade slutpunkterna. Egenskaperna rest och graphql styr DET URL-fragment som används för att komma åt respektive API-protokoll. Konfigurationsavsnittet host definierar inställningar som är specifika för din utvecklingsmiljö. Kontrollera att matrisen origins innehåller din localhost-adress och port. Host.mode skrivs över till production när en databas är ansluten till din Static Web Apps-resurs.
entities Avsnitt som mappar URL-sökvägen till databasentiteter och tabeller. Samma rollbaserade autentiseringsregler som används för att skydda sökvägar skyddar även databasentiteter och kan användas för att definiera behörigheter för varje entitet. Entitetsobjektet anger också relationerna mellan entiteter.

Generera konfigurationsfil

Med Static Web Apps CLI kan du generera en konfigurationsfil.

Viktigt!

För att förbättra säkerheten för distributioner från Static Web Apps CLI infördes en icke-bakåtkompatibel ändring som kräver att du uppgraderar till den senaste versionen (2.0.2) av Static Web Apps CLI senast den 15 januari 2025.

Använd för swa db init --database-type <YOUR_DATABASE_TYPE> att generera en konfigurationsfil. Som standard skapar CLI en ny staticwebapp.database.config.json i en mapp med namnet swa-db-connections.

Databastyper som stöds är:

  • mssql
  • postgresql
  • cosmosdb_nosql
  • mysql

Anpassad konfigurationsmapp

Standardmappnamnet för staticwebapp.database.config.json-filen är swa-db-connections. Om du vill använda en annan mapp måste du uppdatera arbetsflödesfilen för att tala om för den statiska webbappen var du hittar konfigurationsfilen. Med data_api_location egenskapen kan du definiera platsen för konfigurationsmappen.

Kommentar

Mappen som innehåller staticwebapp.database.config.json-filen måste finnas i roten på lagringsplatsen för statiska webbappar.

Följande kod visar hur du använder en mapp med namnet db-config för databaskonfigurationsfilen.

app_location: "/src"
api_location: "api"
output_location: "/dist"
data_api_location: "db-config" # Folder holding the staticwebapp.database.config.json file

Konfigurera databasanslutning

Azure Static Web Apps måste ha nätverksåtkomst till databasen för att databasanslutningar ska fungera. Om du vill använda en Azure-databas för lokal utveckling måste du dessutom konfigurera databasen så att den tillåter begäranden från din egen IP-adress. Följande är allmänna steg som gäller för alla databaser. Specifika steg för din databastyp finns i länkarna ovan.

  • Gå till databasen i Azure Portal.
  • Gå till fliken Nätverk.
  • Under avsnittet Brandväggsregler väljer du Lägg till din klient-IPv4-adress. Det här steget säkerställer att du kan använda den här databasen för din lokala utveckling.
  • Markera kryssrutan Tillåt Azure-tjänster och resurser att komma åt den här servern . Det här steget säkerställer att din distribuerade Static Web Apps-resurs kan komma åt databasen.
  • Välj Spara.

Ansluta en databas

När du länkar en databas till din statiska webbapp upprättas produktionsanslutningen mellan webbplatsen och databasen när den publiceras till Azure.

  1. Öppna din statiska webbapp i Azure Portal.

  2. I avsnittet Inställningar väljer du Databasanslutning.

  3. Under avsnittet Produktion väljer du länken Länka befintlig databas .

  4. I fönstret Länka befintlig databas anger du följande värden:

    Property Värde
    Databastyp Välj din databastyp i listrutan.
    Prenumeration Välj din Azure-prenumeration i listrutan.
    Resursnamn Välj det databasservernamn som har önskad databas.
    Databasnamn Välj namnet på den databas som du vill länka till din statiska webbapp.
    Autentiseringstyp Välj den anslutningstyp som krävs för att ansluta till databasen.

Lägg till en databas i din statiska webbapp med någon av följande databaser:

Dessutom kan du lära dig hur du använder data-API-byggaren med Azure Static Web Apps.