Delen via


Configuratie van databaseverbinding in Azure Static Web Apps (preview)

Databaseverbindingen van Azure Static Web Apps werken met verschillende Azure-databases.

Wanneer u een database verbindt met uw statische web-app, moet u de firewall van uw database configureren om netwerktoegang van de Static Web Apps-werknemers te accepteren door netwerktoegang vanuit Azure-resources toe te staan. Het toestaan van specifieke STATIC Web Apps-IP-adressen wordt niet ondersteund.

Als u het verificatietype Beheerde identiteit gebruikt, moet u het beheerde identiteitsprofiel van uw statische web-app configureren voor toegang tot uw database.

Gebruik deze tabel voor meer informatie over de configuratie van firewall en beheerde identiteit voor uw database.

Name Type Firewall Beheerde identiteit
Azure Cosmos DB Standaard Firewall configureren Beheerde identiteit configureren
Azure SQL Standaard Firewall configureren Beheerde identiteit configureren
Azure Database for MySQL Buigen Firewall configureren Niet ondersteund
Azure Database for PostgreSQL Buigen Firewall configureren Niet ondersteund
Azure Database for PostgreSQL (één) Eén Firewall configureren Beheerde identiteit configureren

Configuratie

U definieert het runtimegedrag van de databaseverbinding in het staticwebapp.database.config.json bestand. Voordat u een database koppelt aan uw statische web-app, moet u dit bestand in uw opslagplaats maken. Dit bestand bestaat standaard in de map swa-db-connections in de hoofdmap van uw opslagplaats, maar u kunt het desgewenst verplaatsen .

Het doel van het configuratiebestand is het volgende:

  • Paden van het /data-api eindpunt toewijzen aan uw databasetabellen of -entiteiten
  • REST- of GraphQL-eindpunten beschikbaar maken (of beide)
  • Entiteitsbeveiligingsregels definiëren
  • Configuratie-instellingen voor ontwikkeling beheren

Als u Azure Cosmos DB met GraphQL gebruikt, moet u ook een gql schemabestand opgeven.

Notitie

Voor statische Web Apps-databaseverbindingen is een map met de configuratiebestanden vereist. Deze map moet het staticwebapp.database.config.json configuratiebestand voor alle databasetypen bevatten. Voor Cosmos DB for NoSQL-databases is ook een staticwebapp.database.schema.gql-schemabestand vereist.

Deze map heet standaard swa-db-connections en wordt in de hoofdmap van de opslagplaats geplaatst. Deze conventie kan worden overschreven met een aangepaste configuratiemap.

Voorbeeldconfiguratiebestand

In het volgende voorbeeldconfiguratiebestand ziet u hoe u verbinding maakt met een Azure SQL-database en hoe u zowel REST- als GraphQL-eindpunten beschikbaar maakt. Raadpleeg de documentatie van Data API Builder voor meer informatie over het configuratiebestand en de ondersteunde functies.

{
  "$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"
        }
      ]
    }
  }
}
Eigenschappen Beschrijving
$schema De versie van de database-API-opbouwfunctie die door Azure Static Web Apps wordt gebruikt om het configuratiebestand te interpreteren.
data-source Configuratie-instellingen die specifiek zijn voor de doeldatabase. De database-type eigenschap accepteertmssql, postgresql, of cosmosdb_nosqlmysql.

De verbindingsreeks wordt overschreven bij de implementatie wanneer een database is verbonden met uw Static Web Apps-resource. Tijdens de lokale ontwikkeling wordt de verbindingsreeks gedefinieerd in het configuratiebestand, gebruikt om verbinding te maken met de database.
runtime Sectie waarin de weergegeven eindpunten worden gedefinieerd. De rest en graphql eigenschappen bepalen het URL-fragment dat wordt gebruikt voor toegang tot het respectieve API-protocol. In de host configuratiesectie worden instellingen gedefinieerd die specifiek zijn voor uw ontwikkelomgeving. Zorg ervoor dat de origins matrix uw localhost-adres en -poort bevat. De host.mode wordt overschreven production wanneer een database is verbonden met uw Static Web Apps-resource.
entities Sectie waarmee HET URL-pad wordt toegewezen aan databaseentiteiten en -tabellen. Dezelfde op rollen gebaseerde verificatieregels die worden gebruikt om paden te beveiligen, beveiligen ook databaseentiteiten en kunnen worden gebruikt om machtigingen voor elke entiteit te definiëren. Het object entiteiten geeft ook de relaties tussen entiteiten aan.

Configuratiebestand genereren

Met de Static Web Apps CLI kunt u een stub voor een configuratiebestand genereren.

Belangrijk

Om de beveiliging van implementaties van de Static Web Apps CLI te verbeteren, is er een belangrijke wijziging geïntroduceerd waarvoor u moet upgraden naar de nieuwste versie (2.0.2) van de Static Web Apps CLI op 15 januari 2025.

Gebruik het swa db init --database-type <YOUR_DATABASE_TYPE> bestand om een configuratiebestand te genereren. De CLI maakt standaard een nieuwe staticwebapp.database.config.json in een map met de naam swa-db-connections.

Ondersteunde databasetypen zijn onder andere:

  • mssql
  • postgresql
  • cosmosdb_nosql
  • mysql

Aangepaste configuratiemap

De standaardmapnaam voor het staticwebapp.database.config.json-bestand is swa-db-connections. Als u een andere map wilt gebruiken, moet u uw werkstroombestand bijwerken om de runtime van statische web-apps te laten weten waar u het configuratiebestand kunt vinden. Met data_api_location de eigenschap kunt u de locatie van uw configuratiemap definiëren.

Notitie

De map met het staticwebapp.database.config.json-bestand moet zich in de hoofdmap van de opslagplaats voor statische web-apps bevinden.

De volgende code laat zien hoe u een map met de naam db-config gebruikt voor het databaseconfiguratiebestand.

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

Databaseconnectiviteit configureren

Azure Static Web Apps moet netwerktoegang tot uw database hebben om databaseverbindingen te laten werken. Als u een Azure-database wilt gebruiken voor lokale ontwikkeling, moet u uw database configureren om aanvragen van uw eigen IP-adres toe te staan. Hier volgen algemene stappen die van toepassing zijn op alle databases. Raadpleeg de bovenstaande koppelingen voor specifieke stappen voor uw databasetype.

  • Ga naar uw database in Azure Portal.
  • Ga naar het tabblad Netwerken.
  • Selecteer in de sectie Firewallregels het IPv4-adres van de client toevoegen. Deze stap zorgt ervoor dat u deze database kunt gebruiken voor uw lokale ontwikkeling.
  • Schakel het selectievakje Azure-services en -resources toegang tot deze server in. Deze stap zorgt ervoor dat uw geïmplementeerde Static Web Apps-resource toegang heeft tot uw database.
  • Selecteer Opslaan.

Een database verbinden

Als u een database koppelt aan uw statische web-app, wordt de productieverbinding tussen uw website en database tot stand gebracht wanneer deze wordt gepubliceerd naar Azure.

  1. Open uw statische web-app in Azure Portal.

  2. Selecteer databaseverbinding in de sectie Instellingen.

  3. Selecteer in de sectie Productie de koppeling bestaande databasekoppeling .

  4. Voer in het venster Bestaande database koppelen de volgende waarden in:

    Eigenschappen Weergegeven als
    Databasetype Selecteer uw databasetype in de vervolgkeuzelijst.
    Abonnement Selecteer uw Azure-abonnement in de vervolgkeuzelijst.
    Resourcenaam Selecteer de naam van de databaseserver met de gewenste database.
    Databasenaam Selecteer de naam van de database die u wilt koppelen aan uw statische web-app.
    Verificatietype Selecteer het verbindingstype dat is vereist om verbinding te maken met uw database.

Voeg een database toe aan uw statische web-app met behulp van een van de volgende databases:

Daarnaast vindt u meer informatie over het gebruik van de data-API-opbouwfunctie met Azure Static Web Apps.