Конфигурация подключения к базе данных в Статические веб-приложения Azure (предварительная версия)

Подключения к базе данных в статических веб-приложениях Azure работают с различными базами данных Azure.

При подключении базы данных к статическому веб-приложению необходимо настроить брандмауэр базы данных для приема сетевого доступа от рабочих процессов Статические веб-приложения, разрешая доступ к сети из ресурсов Azure. Разрешение определенных IP-адресов Статические веб-приложения не поддерживается.

Если вы используете тип аутентификации Managed Identity, необходимо настроить профиль Managed Identity статического веб-приложения для доступа к базе данных.

Используйте эту таблицу для получения сведений о настройке брандмауэра и Managed Identity для базы данных.

Имя Тип Брандмауэр Управляемый идентификатор
Azure Cosmos DB Стандарт Настроить брандмауэр Настройка управляемой идентификации
Azure SQL Стандарт Настройте брандмауэр Настройка управляемой идентичности
База данных Azure для MySQL Flex Настройте брандмауэр Не поддерживается
База данных Azure для PostgreSQL Flex Настроить брандмауэр Не поддерживается
База данных Azure для PostgreSQL (Отдельный сервер) Один Настроить брандмауэр Настройка управляемой идентификации

Конфигурация

Вы определяете поведение во время выполнения подключения к базе данных в файле staticwebapp.database.config.json. Перед связыванием базы данных со статическим веб-приложением необходимо создать этот файл в репозитории. По соглашению этот файл существует в папке swa-db-connections в корне репозитория, но при желании его можно переместить.

Целью файла конфигурации является:

  • Сопоставьте пути от конечной точки /data-api с таблицами или сущностями базы данных
  • Предоставьте конечные точки REST или GraphQL (или оба варианта)
  • Определить правила безопасности сущностей
  • Управление параметрами конфигурации разработки

Если вы используете Azure Cosmos DB с GraphQL, необходимо также предоставить gql файл схемы.

Примечание

Для подключений к базе данных Статические веб-приложения требуется папка, содержащая файлы конфигурации. Эта папка должна содержать файл конфигурации staticwebapp.database.config.json для всех типов баз данных. Для баз данных Cosmos DB для NoSQL также требуется файл схемы staticwebapp.database.schema.gql.

По соглашению эта папка называется swa-db-connections и помещается в корневой каталог репозитория. Это соглашение можно переопределить с помощью custom-configuration-folder.

Образец файла конфигурации

В следующем примере файла конфигурации показано, как подключиться к базе данных SQL Azure и публиковать конечные точки REST и GraphQL. Полные сведения о файле конфигурации и его поддерживаемых функциях см. в документации 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"
        }
      ]
    }
  }
}
Свойство Описание
$schema Версия Database API builder, используемая Статические веб-приложения Azure для интерпретации файла конфигурации.
data-source Параметры конфигурации, относящиеся к целевой базе данных. Свойство database-type принимает mssql, postgresqlcosmosdb_nosqlили mysql.

Строка подключения перезаписывается при развертывании, когда база данных подключена к ресурсу Статические веб-приложения. Во время локальной разработки строка подключения, определенная в файле конфигурации, используется для подключения к базе данных.
runtime Раздел, определяющий предоставляемые эндпоинты. Свойства rest и graphql управляют фрагментом URL-адреса, используемым соответствующим протоколом API для доступа. Раздел host конфигурации определяет параметры, относящиеся к среде разработки. Убедитесь, что массив origins содержит ваш адрес localhost и порт. Host.mode перезаписывается production при подключении базы данных к ресурсу Статические веб-приложения.
entities Раздел, который сопоставляет путь URL-адреса к сущностям и таблицам базы данных. Те же правила проверки подлинности на основе ролей , используемые для защиты путей, также защищают сущности базы данных и могут использоваться для определения разрешений для каждой сущности. Объект сущностей также указывает связи между сущностями.

Создать файл конфигурации

Статические веб-приложения CLI позволяет создать заглушку файла конфигурации.

Важно

Чтобы повысить безопасность развертываний из Статические веб-приложения CLI, было введено обратно несовместимое изменение, из-за которого необходимо обновить Статические веб-приложения CLI до последней версии (2.0.2) до 15 января 2025 года.

Используйте swa db init --database-type <YOUR_DATABASE_TYPE> для создания файла конфигурации. По умолчанию интерфейс командной строки создает новую staticwebapp.database.config.json в папке с именем swa-db-connections.

Поддерживаемые типы баз данных включают:

  • mssql
  • postgresql
  • cosmosdb_nosql
  • mysql

Папка пользовательской конфигурации

Имя папки по умолчанию для файла staticwebapp.database.config.json — swa-db-connections. Если вы хотите использовать другую папку, необходимо обновить файл рабочего процесса, чтобы сообщить среде выполнения статических веб-приложений, где найти файл конфигурации. Свойство data_api_location позволяет определить расположение папки конфигурации.

Примечание

Папка, содержащая файл staticwebapp.database.config.json , должна находиться в корне репозитория статических веб-приложений.

В следующем коде показано, как использовать папку с именем db-config для файла конфигурации базы данных.

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

Настройте подключение к базе данных

Статические веб-приложения Azure должны иметь сетевой доступ к вашей базе данных, чтобы подключения к базе данных работали. Кроме того, чтобы использовать базу данных Azure для локальной разработки, необходимо настроить базу данных, чтобы разрешить запросы с собственного IP-адреса. Ниже приведены универсальные шаги, которые применяются ко всем базам данных. Инструкции по типу базы данных см. по приведенным выше ссылкам.

  • Перейдите в базу данных на портале Azure.
  • Откройте вкладку «Сетевые настройки».
  • В разделе правил брандмауэра выберите Добавить IPv4-адрес клиента. Этот шаг гарантирует, что вы сможете использовать эту базу данных для локальной разработки.
  • Установите флажок «Разрешить службам и ресурсам Azure доступ к этому серверу». Этот шаг гарантирует, что развернутый ресурс Статические веб-приложения может получить доступ к базе данных.
  • Выберите Сохранить.

Подключить базу данных

Связывание базы данных со статическим веб-приложением устанавливает подключение к рабочей среде между веб-сайтом и базой данных при публикации в Azure.

  1. Откройте статическое веб-приложение в портале Azure.

  2. В разделе "Параметры" выберите "Подключение к базе данных".

  3. В разделе «Производство» выберите ссылку «Связать существующую базу данных».

  4. В окне «Ссылка на существующую базу данных» введите следующие значения:

    Свойство Значение
    Тип базы данных Выберите тип базы данных из раскрывающегося списка.
    Подписка Выберите подписку Azure в раскрывающемся списке.
    Имя ресурса Выберите имя сервера базы данных с требуемой базой данных.
    Имя базы данных Выберите имя базы данных, которую вы хотите связать с вашим статическим веб-приложением.
    Тип аутентификации Выберите тип подключения, необходимый для подключения к базе данных.

Добавьте базу данных в статическое веб-приложение с помощью одной из следующих баз данных:

Кроме того, вы можете узнать, как использовать Data API builder с Статические веб-приложения Azure.