Freigeben über


Herstellen einer Verbindung mit einer Datenbank mit Azure Static Web Apps (Vorschau)

Mit dem Datenbankverbindungsfeature von Azure Static Web Apps können Sie von Ihrer statischen Web-App aus auf eine Datenbank zugreifen, ohne benutzerdefinierten serverseitigen Code zu schreiben.

Nachdem Sie eine Verbindung zwischen Ihrer Webanwendung und der Datenbank hergestellt haben, können Sie Daten mit vollständiger Unterstützung für CRUD-Vorgänge, integrierte Autorisierung und Beziehungen bearbeiten.

Basierend auf dem Daten-API-Generator empfängt Azure Static Web Apps REST- und GraphQL-Anforderungen und konvertiert diese in Datenbankabfragen.

Features, die von Datenbankverbindungen unterstützt werden, schließen die folgenden ein:

Funktion Beschreibung
Integrierte Sicherheit Vorhandene Integration mit dem Authentifizierungs- und Autorisierungssicherheitsmodell von Azure Static Web Apps. Dieselbe rollenbasierte Sicherheit, die für sichere Routen verwendet wird, ist für API-Endpunkte verfügbar.
Vollständig CRUD-basierte Vorgänge In den Tutorials für Azure Cosmos DB, Azure SQL, MySQL oder PostgreSQL finden Sie ein Beispiel zum Bearbeiten von Daten in Ihrer Anwendung.
Unterstützt SQL und NoSQL Sie können relationale Datenbanken und Dokumentdatenbanken als Datenbank Ihrer Anwendung verwenden.
Serverlose Architektur Verbindungen werden (während der Vorschau) von null auf einen Worker skaliert.
Datenbankbeziehungen Ausschließlich über den GraphQL-Endpunkt unterstützt
CLI-Unterstützung Entwickeln Sie lokal mit der Static Web Apps-CLI. Verwenden Sie die Option --data-api-location, um Anforderungen an Daten-APIs in der Entwicklung genauso wie in der Cloud zu verarbeiten.

Unterstützte Datenbanken

Die folgende Tabelle stellt die Unterstützung für verschiedene relationale Datenbanken und NoSQL-Datenbanken dar.

Name Typ Beschreibung REST GraphQL
Azure Cosmos DB Standard Global verteilte Datenbankplattform für NoSQL-Datenbanken und relationale Datenbanken in beliebiger Größenordnung

Zusätzlich zur Standardkonfiguration ist für GraphQL-Endpunkte eine gql-Schemadatei erforderlich.
Azure SQL Standard Familie verwalteter, sicherer und intelligenter Produkte, die die SQL Server-Datenbank-Engine in der Azure-Cloud verwenden
Azure Database for MySQL Flex Dienst für relationale Datenbanken in der Microsoft-Cloud, der auf der MySQL Community Edition basiert
Azure-Datenbank für PostgreSQL Flex Vollständig verwaltete Database-as-a-Service-Instanz von PostgreSQL, die unternehmenskritische Workloads mit vorhersehbarer Leistung und dynamischer Skalierbarkeit verarbeitet
Azure Database for PostgreSQL (Single) Single Vollständig verwaltete PostgreSQL-Datenbank

Sie können die folgenden Verbindungstypen für den Datenbankzugriff verwenden:

  • Verbindungszeichenfolge
  • Dem Benutzer zugewiesene Managed Identity
  • Systemseitig zugewiesene verwaltete Identität

Endpoint location

Der Zugriff auf Datenendpunkte ist außerhalb des Pfads /data-api verfügbar.

In der folgenden Tabelle wird veranschaulicht, wie Anforderungen an verschiedene Teile einer statischen Web-App weitergeleitet werden:

Pfad Beschreibung
example.com/api/* API-Funktionen
example.com/data-api/* Datenbankverbindungsendpunkte, die REST- und GraphQL-Anforderungen unterstützen
example.com/* Statischer Inhalt

Wenn Sie Datenbankverbindungen auf Ihrer Website konfigurieren, können Sie das REST- oder GraphQL-Suffix der /data-api/*-Route konfigurieren. Das Präfix /data-api ist eine Konvention von Static Web Apps und kann nicht geändert werden.

Konfiguration

Es gibt zwei Schritte zum Konfigurieren einer Datenbankverbindung in Static Web Apps. Sie müssen Ihre Datenbank mit Ihrer statischen Web-App im Azure-Portal verbinden und die Konfigurationsdatei für Ihre Datenbankverbindungen aktualisieren.

Weitere Informationen finden Sie unter Konfiguration der Datenbankverbindung in Azure Static Web Apps.

Lokale Entwicklung

Die Azure Static Web Apps-CLI (SWA-CLI) schließt die Unterstützung für das Arbeiten mit Datenbankverbindungen während der lokalen Entwicklung ein.

Die CLI aktiviert den lokalen /data-api-Endpunkt und leitet Anforderung von Port 4280 für den Datenbankzugriff an den entsprechenden Port weiter.

Dieser Beispielbefehl startet die SWA-CLI mit einer Datenbankverbindung:

swa start ./src --data-api-location swa-db-connections

Dieser Befehl startet die SWA-CLI im src-Verzeichnis. Die Option --data-api-location teilt der CLI mit, dass ein Ordner mit dem Namen swa-db-connections die Datei staticwebapp.database.config.json enthält.

Hinweis

Wenn Sie in der Entwicklung eine Verbindungszeichenfolge zur Authentifizierung verwenden, verwenden Sie die env()-Funktion, um eine Verbindungszeichenfolge aus einer Umgebungsvariable zu lesen. Die an die env-Funktion übergebene Zeichenfolge muss von Anführungszeichen umschlossen sein.

Rollenbasierte Sicherheit

Wenn Sie eine Entität in der Datei staticwebapp.database.config.json definieren, können Sie eine Liste der Rollen angeben, die für den Zugriff auf einen Entitätsendpunkt erforderlich sind.

Das folgende Fragment der Konfiguration erfordert die Rolle Administrator, um auf alle Aktionen (create, read, update, delete) für die Entität Orders zuzugreifen.

{
...
"entities": { 
  "Orders": { 
    "source": "dbo.Orders", 
    "permissions": [ 
      { 
        "actions": ["*"], 
        "role": "admin" 
      }
    ]
 }
}
...
}

Wenn Sie Aufrufe an einen Endpunkt ausführen, der eine Rolle erfordert, sind die folgenden Bedingungen erforderlich:

  1. Der aktuelle Benutzer muss authentifiziert sein.

  2. Der aktuelle Benutzer muss Mitglied der erforderlichen Rolle sein.

  3. Die REST- oder GraphQL-Anforderung muss einen Header mit dem X-MS-API-ROLE-Schlüssel und einen Wert des Rollennamens enthalten, der den in den Konfigurationsregeln der Entität aufgeführten Namen entspricht.

    Beispiel: Das folgende Codeschnipsel veranschaulicht, wie die Rolle Administrator in einem Anforderungsheader übergeben wird.

    {
      method: "POST",
      headers: { 
        "Content-Type": "application/json",
        "X-MS-API-ROLE": "admin"
      },
      body: JSON.stringify(requestPayload)
    }
    

Einschränkungen

  • Datenbanken müssen über die Infrastruktur von Azure zugreifbar sein.
  • Während der Public Preview skalieren Datenbankverbindungen von null auf einen Datenbankworker.

Nächste Schritte