Partilhar via


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

As conexões de banco de dados de aplicativos Web estáticos do Azure funcionam com vários bancos de dados do Azure.

Ao conectar um banco de dados ao seu aplicativo Web estático, você precisa configurar o firewall do banco de dados para aceitar o acesso à rede dos trabalhadores dos Aplicativos Web Estáticos, 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 Firewall Identidade Gerida
BD do Cosmos para o Azure Standard Configurar a firewall Configurar identidade gerenciada
SQL do Azure Standard Configurar a firewall Configurar identidade gerenciada
Base de Dados do Azure para MySQL Flexível Configurar a firewall Não suportado
Base de Dados do Azure para PostgreSQL Flexível Configurar a firewall Não suportado
Banco de Dados do Azure para PostgreSQL (único) Única Configurar a firewall Configurar identidade gerenciada

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 um banco de dados ao seu aplicativo Web estático, você precisa criar esse arquivo no repositório. Por convenção, esse arquivo existe na pasta swa-db-connections na raiz do repositório, mas você pode realocá-lo se desejar.

O objetivo do arquivo de configuração é:

  • Mapeie caminhos fora do /data-api ponto de extremidade para suas tabelas ou entidades de banco de dados
  • Expor pontos de extremidade REST ou GraphQL (ou ambos)
  • Definir regras de segurança de entidade
  • Controlar definições de configuração de desenvolvimento

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 de aplicativos Web estáticos exigem uma pasta que contenha os arquivos 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 bancos de dados Cosmos DB para NoSQL, um arquivo de esquema staticwebapp.database.schema.gql também é necessário.

Por convenção, essa pasta é chamada swa-db-connections e colocada na raiz do repositório. Esta convenção pode ser substituída por uma pasta de configuração personalizada.

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 arquivo de configuração e seus recursos suportados, 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"
        }
      ]
    }
  }
}
Property Description
$schema A versão do construtor de API de Banco de Dados usada pelos Aplicativos Web Estáticos do Azure para interpretar o arquivo de configuração.
data-source Definições de configuração específicas para o banco 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 Static Web Apps. Durante o desenvolvimento local, a cadeia de conexão definida no arquivo de configuração é o que é usado para se conectar ao banco de dados.
runtime Secção que define os pontos finais expostos. As rest propriedades e graphql controlam o fragmento de URL usado para acessar o 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 a matriz inclua o endereço e a origins porta localhost. O host.mode é substituído quando production um banco de dados é conectado ao recurso Static Web Apps.
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 arquivo de configuração

A CLI de aplicativos Web estáticos permite gerar um stub de arquivo de configuração.

Importante

Para melhorar a segurança das implantações da CLI de Aplicativos Web Estáticos, foi introduzida uma alteração significativa que exige que você atualize para a versão mais recente (2.0.2) da CLI de Aplicativos Web Estáticos até 15 de janeiro de 2025.

Use o swa db init --database-type <YOUR_DATABASE_TYPE> para gerar um arquivo 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 tempo de execução de aplicativos Web estáticos onde encontrar seu arquivo de configuração. A data_api_location propriedade permite que você defina o local 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 estático de aplicativos Web.

O código a seguir mostra como usar uma pasta chamada db-config para o arquivo de configuração do banco 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 do banco de dados

Os Aplicativos Web Estáticos do Azure devem ter acesso de rede ao seu banco de dados para que as conexões de banco de dados funcionem. Além disso, para usar um banco de dados do Azure para desenvolvimento local, você precisa configurar seu banco de dados para permitir solicitações de seu próprio endereço IP. A seguir estão as etapas genéricas que se aplicam a todos os bancos de dados. Para obter etapas específicas para seu tipo de banco de dados, consulte os links acima.

  • Vá para seu banco de dados no portal do Azure.
  • Vá para a guia Rede.
  • Na seção Regras de firewall, selecione Adicionar o endereço IPv4 do cliente. Esta etapa garante que você possa usar esse banco de dados para seu desenvolvimento local.
  • Marque a caixa de seleção Permitir que os serviços e recursos do Azure acessem este servidor . Esta etapa garante que o recurso Static Web Apps implantado possa acessar seu banco de dados.
  • Selecione Guardar.

Conectar um banco 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 seção Configurações, selecione Conexão de banco de dados.

  3. Na seção Produção, selecione o link Vincular banco de dados existente.

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

    Property valor
    Tipo de banco de dados Selecione o tipo de banco de dados na lista suspensa.
    Subscrição Selecione sua assinatura do Azure na lista suspensa.
    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 do banco de dados que você deseja vincular ao seu aplicativo Web estático.
    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, você pode aprender sobre como usar o construtor de API de Dados com os Aplicativos Web Estáticos do Azure.