Configuração de conexão de banco de dados nos Aplicativos Web Estáticos do Azure (visualização)

As conexões de base de dados do Azure Static Web Apps funcionam com várias bases de dados do Azure.

Ao ligar uma base de dados à sua aplicação Web estática, é necessário configurar a firewall da base de dados para aceitar o acesso à rede dos trabalhadores do Aplicações Web Estáticas, permitindo o acesso à rede a partir dos recursos do Azure. Não há suporte para permitir endereços IP específicos de Aplicativos Web estáticos.

Se você estiver usando o tipo de autenticação de Identidade Gerenciada, precisará configurar o perfil de Identidade Gerenciada do seu aplicativo Web estático para acessar seu banco de dados.

Use esta tabela para obter detalhes sobre firewall e configuração de Identidade Gerenciada para seu banco de dados.

Nome Tipo Barreira de Fogo Identidade gerida
Azure Cosmos DB Standard Configurar o firewall Configurar Identidade Gerida
SQL do Azure Standard Configurar firewall Configurar Identidade Gerida
Base de Dados do Azure para MySQL Flex Configurar o firewall Não é suportado
Base de Dados do Azure para PostgreSQL Flex Configurar firewall Sem suporte
Base de Dados do Azure para PostgreSQL (único) Único Configurar firewall Configurar Identidade Gerida

Configuração

Você define o comportamento de tempo de execução da conexão de banco de dados no staticwebapp.database.config.json arquivo. Antes de vincular uma base de dados à sua aplicação Web estática, precisa de criar este ficheiro no repositório. Por convenção, este arquivo existe na pasta swa-db-connections na raiz do repositório, mas pode realocá-lo se pretender.

O objetivo do arquivo de configuração é:

  • Mapeie caminhos do ponto final /data-api para as suas tabelas ou entidades da base de dados
  • Expor endpoints REST ou GraphQL (ou ambos)
  • Definir regras de segurança de entidade
  • Definições de configuração de desenvolvimento de controlo

Se você estiver usando o Azure Cosmos DB com o GraphQL, também precisará fornecer um gql arquivo de esquema.

Nota

As conexões de banco de dados do Aplicações Web Estáticas exigem uma pasta que contenha os ficheiros de configuração. Esta pasta deve conter o arquivo de configuração staticwebapp.database.config.json para todos os tipos de banco de dados. Para bases de dados Cosmos DB para NoSQL, também é necessário um ficheiro de esquema staticwebapp.database.schema.gql.

Por convenção, essa pasta é chamada swa-db-connections e colocada na raiz do repositório. Esta convenção pode ser ignorada com uma custom-configuration-folder.

Arquivo de configuração de exemplo

O arquivo de configuração de exemplo a seguir mostra como se conectar a um banco de dados SQL do Azure e expor os pontos de extremidade REST e GraphQL. Para obter detalhes completos sobre o ficheiro de configuração e as funcionalidades suportadas, consulte a documentação do 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"
        }
      ]
    }
  }
}
Propriedade Descrição
$schema A versão do builder de API de Base de Dados usada pelas Aplicações Web Estáticas do Azure para interpretar o ficheiro de configuração.
data-source Definições de configuração específicas para a base de dados de destino. A database-type propriedade aceita mssql, postgresql, cosmosdb_nosql, ou mysql.

A cadeia de conexão é substituída na implantação quando um banco de dados é conectado ao recurso Aplicações Web Estáticas. Durante o desenvolvimento local, a string de ligação definida no ficheiro de configuração é o que é usado para se ligar à base de dados.
runtime Secção que define os endpoints expostos. As propriedades rest e graphql controlam o fragmento de URL usado para aceder ao respetivo protocolo de API. A host seção de configuração define configurações específicas para seu ambiente de desenvolvimento. Certifique-se de que o array inclua o endereço localhost e a porta origins. O host.mode é substituído para production quando um banco de dados é ligado ao recurso Aplicações Web Estáticas.
entities Seção que mapeia o caminho da URL para entidades e tabelas do banco de dados. As mesmas regras de autenticação baseadas em função usadas para proteger caminhos também protegem entidades de banco de dados e podem ser usadas para definir permissões para cada entidade. O objeto entities também especifica as relações entre entidades.

Gerar ficheiro de configuração

A Aplicações Web Estáticas CLI permite gerar um stub de ficheiro de configuração.

Importante

Para melhorar a segurança das implantações a partir da Aplicações Web Estáticas CLI, foi introduzida uma alteração significativa que exige que tem de atualizar para a versão mais recente (2.0.2) da Aplicações Web Estáticas CLI até 15 de janeiro de 2025.

Use o swa db init --database-type <YOUR_DATABASE_TYPE> para gerar um ficheiro de configuração. Por padrão, a CLI cria um novo staticwebapp.database.config.json em uma pasta chamada swa-db-connections.

Os tipos de banco de dados suportados incluem:

  • mssql
  • postgresql
  • cosmosdb_nosql
  • mysql

Pasta de configuração personalizada

O nome da pasta padrão para o arquivo staticwebapp.database.config.json é swa-db-connections. Se você quiser usar uma pasta diferente, precisará atualizar seu arquivo de fluxo de trabalho para informar ao runtime do Static Web Apps onde encontrar seu arquivo de configuração. A propriedade data_api_location permite-lhe definir a localização da sua pasta de configuração.

Nota

A pasta que contém o arquivo staticwebapp.database.config.json deve estar na raiz do repositório da aplicação Web estática.

O código a seguir mostra como usar uma pasta chamada db-config para o ficheiro de configuração da base de dados.

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

Configurar a conectividade à base de dados

As Aplicações Web Estáticas do Azure devem ter acesso de rede à sua base de dados para que as ligações à base de dados funcionem. Além disso, para usar uma base de dados do Azure para desenvolvimento local, precisa de configurar a sua base de dados para permitir pedidos a partir do seu próprio endereço IP. A seguir estão as etapas genéricas que se aplicam a todos os bancos de dados. Para passos específicos para o seu tipo de base de dados, consulte os links acima.

  • Vá para seu banco de dados no portal do Azure.
  • Aceda ao separador Rede.
  • Na seção Regras de firewall, selecione Adicionar o endereço IPv4 do cliente. Esta etapa garante que possa utilizar esta base de dados para o seu desenvolvimento local.
  • Marque a caixa de seleção Permitir que os serviços e recursos do Azure acedam a este servidor. Esta etapa garante que o recurso Aplicações Web Estáticas implantado possa acessar seu banco de dados.
  • Selecione Guardar.

Conectar uma base de dados

Vincular um banco de dados ao seu aplicativo Web estático estabelece a conexão de produção entre seu site e o banco de dados quando publicado no Azure.

  1. Abra seu aplicativo Web estático no portal do Azure.

  2. Na secção Definições, selecione Ligação à base de dados.

  3. Na secção Produção, selecione a ligação Ligar base de dados existente.

  4. Na janela Vincular base de dados existente, insira os seguintes valores:

    Propriedade Valor
    Tipo de base de dados Selecione o tipo de base de dados na lista pendente.
    Subscrição Selecione a sua subscrição do Azure na lista pendente.
    Nome do Recurso Selecione o nome do servidor de banco de dados que tem o banco de dados desejado.
    Nome da base de dados Selecione o nome da base de dados que pretende associar à sua aplicação Web estática.
    Tipo de Autenticação Selecione o tipo de conexão necessário para se conectar ao seu banco de dados.

Adicione um banco de dados ao seu aplicativo Web estático usando um dos seguintes bancos de dados:

Além disso, pode aprender sobre como usar o construtor de API de Dados com o Aplicações Web Estáticas do Azure.