Konfiguracja połączenia bazy danych w usłudze Azure Static Web Apps (wersja zapoznawcza)

Połączenia bazy danych usługi Azure Static Web Apps działają z różnymi bazami danych platformy Azure.

Podczas łączenia bazy danych ze statyczną aplikacją internetową należy skonfigurować zaporę bazy danych tak, aby akceptowała dostęp sieciowy z procesów roboczych usługi Static Web Apps, zezwalając na dostęp sieciowy z zasobów platformy Azure. Zezwalanie na określone adresy IP usługi Static Web Apps nie jest obsługiwane.

Jeśli używasz typu uwierzytelniania tożsamości zarządzanej, musisz skonfigurować profil tożsamości zarządzanej statycznej aplikacji internetowej w celu uzyskania dostępu do bazy danych.

Ta tabela zawiera szczegółowe informacje o konfiguracji zapory i tożsamości zarządzanej dla bazy danych.

Imię i nazwisko Typ Zapora sieciowa Tożsamość zarządzana
Azure Cosmos DB Standard Skonfiguruj zaporę Skonfiguruj tożsamość zarządzaną
Azure SQL Standard Skonfiguruj zaporę Skonfiguruj tożsamość zarządzaną
Azure Database for MySQL Elastyczność Skonfiguruj zaporę Nie jest obsługiwane
Azure Database for PostgreSQL Elastyczność Konfiguracja zapory Nieobsługiwany
Azure Database for PostgreSQL (single) Pojedynczy Skonfiguruj zaporę Skonfiguruj tożsamość zarządzaną

Konfiguracja

Należy zdefiniować zachowanie w czasie wykonywania połączenia bazy danych w pliku staticwebapp.database.config.json. Przed połączeniem bazy danych ze statyczną aplikacją internetową należy utworzyć ten plik w repozytorium. Zgodnie z konwencją ten plik istnieje w folderze swa-db-connections w katalogu głównym repozytorium, ale możesz przenieść go, jeśli chcesz.

Celem pliku konfiguracji jest:

  • Mapuj ścieżki z punktu końcowego /data-api do tabel lub encji bazy danych
  • Udostępnianie punktów końcowych REST lub GraphQL (lub obu tych punktów)
  • Definiuj reguły zabezpieczeń encji
  • Kontrolowanie ustawień konfiguracji programistycznej

Jeśli używasz usługi Azure Cosmos DB z językiem GraphQL, musisz również podać gqlplik schematu.

Uwaga

Połączenia bazy danych usługi Static Web Apps wymagają folderu zawierającego pliki konfiguracji. Ten katalog musi zawierać plik konfiguracji staticwebapp.database.config.json dla wszystkich typów baz danych. W przypadku baz danych Cosmos DB for NoSQL wymagany jest również plik schematu staticwebapp.database.schema.gql.

Zgodnie z konwencją ten folder ma nazwę swa-db-connections i znajduje się w katalogu głównym repozytorium. Tę konwencję można nadpisać za pomocą folderu custom-configuration-folder.

Przykładowy plik konfiguracji

Poniższy przykładowy plik konfiguracji przedstawia sposób nawiązywania połączenia z bazą danych Azure SQL Database i uwidaczniania punktów końcowych REST i GraphQL. Aby uzyskać szczegółowe informacje na temat pliku konfiguracji i obsługiwanych przez niego funkcji, zapoznaj się z dokumentacją narzędzia 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"
        }
      ]
    }
  }
}
Właściwość Opis
$schema Wersja konstruktora interfejsu API bazy danych używana przez usługę Azure Static Web Apps do interpretowania pliku konfiguracji.
data-source Ustawienia konfiguracji specyficzne dla docelowej bazy danych. Właściwość database-type akceptuje mssql, postgresql, cosmosdb_nosql lub mysql.

Parametry połączenia są zastępowane podczas wdrażania, gdy baza danych jest połączona z zasobem usługi Static Web Apps. Podczas pracy w lokalnym środowisku deweloperskim parametry połączenia zdefiniowane w pliku konfiguracji są używane do nawiązywania połączenia z bazą danych.
runtime Sekcja definiująca udostępnione endpointy. Właściwości rest i graphql kontrolują fragment adresu URL używany do uzyskiwania dostępu do odpowiednich protokołów API. Sekcja host konfiguracji definiuje ustawienia specyficzne dla środowiska deweloperskiego. Upewnij się, że tablica origins zawiera adres localhost i port. Tryb host.mode jest nadpisywany wartością production, gdy baza danych jest połączona z zasobem usługi Static Web Apps.
entities Sekcja, która mapuje ścieżkę adresu URL na encje i tabele bazy danych. Te same reguły uwierzytelniania oparte na rolach używane do zabezpieczania ścieżek również zabezpieczają jednostki bazy danych i mogą służyć do definiowania uprawnień dla każdej jednostki. Obiekt encji określa również relacje między encjami.

Wygeneruj plik konfiguracji

Narzędzie Static Web Apps CLI umożliwia wygenerowanie szkieletu pliku konfiguracji.

Ważne

Aby zwiększyć bezpieczeństwo wdrożeń z interfejsu Static Web Apps CLI, wprowadzono zmianę powodującą niezgodność, która wymaga uaktualnienia do najnowszej wersji (2.0.2) interfejsu wiersza polecenia usługi Static Web Apps do 15 stycznia 2025 r.

Użyj swa db init --database-type <YOUR_DATABASE_TYPE>, aby wygenerować plik konfiguracji. Domyślnie interfejs wiersza polecenia tworzy nowy staticwebapp.database.config.json w folderze o nazwie swa-db-connections.

Obsługiwane typy baz danych obejmują:

  • mssql
  • postgresql
  • cosmosdb_nosql
  • mysql

Katalog konfiguracji niestandardowej

Domyślną nazwą folderu dla pliku staticwebapp.database.config.json jest swa-db-connections. Jeśli chcesz użyć innego folderu, musisz zaktualizować plik przepływu pracy, aby poinformować środowisko uruchomieniowe statycznych aplikacji internetowych, gdzie można znaleźć plik konfiguracji. Właściwość data_api_location umożliwia zdefiniowanie lokalizacji folderu konfiguracji.

Uwaga

Folder zawierający plik staticwebapp.database.config.json musi znajdować się w katalogu głównym repozytorium statycznych aplikacji internetowych.

Poniższy kod pokazuje, jak używać folderu o nazwie db-config jako folderu dla pliku konfiguracji bazy danych.

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

Konfigurowanie łączności z bazą danych

Usługa Azure Static Web Apps musi mieć dostęp sieciowy do bazy danych, aby połączenia z bazą danych działały. Ponadto aby używać bazy danych platformy Azure do programowania lokalnego, należy skonfigurować bazę danych tak, aby zezwalała na żądania z własnego adresu IP. Poniżej przedstawiono ogólne kroki, które mają zastosowanie do wszystkich baz danych. Aby uzyskać szczegółowe instrukcje dotyczące typu bazy danych, zapoznaj się z powyższymi linkami.

  • Przejdź do bazy danych w witrynie Azure Portal.
  • Przejdź do karty Sieć.
  • W sekcji Reguły zapory wybierz pozycję Dodaj adres IPv4 klienta. Ten krok gwarantuje, że możesz użyć tej bazy danych na potrzeby lokalnego środowiska deweloperskiego.
  • Zaznacz pole wyboru Zezwalaj usługom i zasobom platformy Azure na dostęp do tego serwera. Ten krok gwarantuje, że wdrożony zasób usługi Static Web Apps może uzyskać dostęp do bazy danych.
  • Wybierz pozycję Zapisz.

Połącz bazę danych

Połączenie bazy danych ze statyczną aplikacją internetową powoduje nawiązanie połączenia produkcyjnego między witryną internetową a bazą danych po opublikowaniu na platformie Azure.

  1. Otwórz statyczną aplikację internetową w witrynie Azure Portal.

  2. W sekcji Ustawienia wybierz pozycję Połączenie z bazą danych.

  3. W sekcji Produkcja wybierz link Połącz istniejącą bazę danych.

  4. W oknie Połącz istniejącą bazę danych wprowadź następujące wartości:

    Właściwość Wartość
    Typ bazy danych Wybierz typ bazy danych z listy rozwijanej.
    Subskrypcja Wybierz subskrypcję platformy Azure z listy rozwijanej.
    Nazwa zasobu Wybierz nazwę serwera bazy danych, na którym znajduje się żądana baza danych.
    Nazwa bazy danych Wybierz nazwę bazy danych, którą chcesz połączyć ze statyczną aplikacją internetową.
    Typ uwierzytelniania Wybierz typ połączenia wymagany do nawiązania połączenia z bazą danych.

Dodaj bazę danych do statycznej aplikacji internetowej przy użyciu jednej z następujących baz danych:

Ponadto możesz dowiedzieć się, jak używać konstruktora interfejsu API danych z usługą Azure Static Web Apps.