Azure Static Web Apps'te veritabanı bağlantısı yapılandırması (önizleme)

Azure Static Web Apps veritabanı bağlantıları çeşitli Azure veritabanlarıyla çalışır.

Bir veritabanını statik web uygulamanıza bağlarken, Azure kaynaklarından ağ erişimine izin vererek veritabanınızın güvenlik duvarını Static Web Apps çalışanlarından gelen ağ erişimine izin verecek şekilde yapılandırmanız gerekir. Belirli Statik Web Uygulamaları IP adreslerine izin verme desteklenmez.

Yönetilen Kimlik kimlik doğrulama türünü kullanıyorsanız, statik web uygulamanızın Yönetilen Kimlik profilini veritabanınıza erişecek şekilde yapılandırmanız gerekir.

Veritabanınız için güvenlik duvarı ve Yönetilen Kimlik yapılandırması hakkındaki ayrıntılar için bu tabloyu kullanın.

Ad Tür Güvenlik Duvarı Yönetilen Kimlik
Azure Cosmos DB Standart Güvenlik Duvarını Yapılandır Yönetilen Kimliği Yapılandırın
Azure SQL Standard Güvenlik Duvarını yapılandır Yönetilen Kimliği Yapılandır
MySQL için Azure Veritabanı Flex Güvenlik Duvarını Yapılandır Desteklenmiyor
PostgreSQL için Azure Veritabanı Esneklik Güvenlik Duvarını Yapılandır Desteklenmiyor
PostgreSQL için Azure Veritabanı (tek) Tekli Güvenlik Duvarını Yapılandır Yönetilen Kimliği Yapılandırın

Yapılandırma

staticwebapp.database.config.json dosyasında veritabanı bağlantısının çalışma zamanı davranışını tanımlarsınız. Veritabanını statik web uygulamanıza bağlamadan önce bu dosyayı deponuzda oluşturmanız gerekir. Geleneksel olarak, bu dosya deponuzun kökündeki swa-db-connections klasöründe bulunur, ancak isterseniz dosyayı yeniden yerleştirebilirsiniz.

Yapılandırma dosyasının amacı:

  • /data-api uç noktasından çıkan yolları veritabanı tablolarınızla veya varlıklarınızla eşleyin
  • REST veya GraphQL uç noktalarını (veya her ikisini birden) kullanıma sunma
  • Varlık güvenlik kurallarını tanımlama
  • Geliştirme yapılandırma ayarlarını denetleme

GraphQL ile Azure Cosmos DB kullanıyorsanız bir gql şema dosyası da sağlamanız gerekir.

Not:

Statik Web Apps veritabanı bağlantıları, yapılandırma dosyalarını içeren bir klasör gerektirir. Bu klasör, tüm veritabanı türleri için staticwebapp.database.config.json yapılandırma dosyasını içermelidir. NoSQL veritabanları için Cosmos DB için staticwebapp.database.schema.gql şema dosyası da gereklidir.

Kural gereği, bu klasör swa-db-connections olarak adlandırılır ve deponun köküne yerleştirilir. Bu kural bir custom-configuration-folder ile geçersiz kılınabilir.

Örnek yapılandırma dosyası

Aşağıdaki örnek yapılandırma dosyası, bir Azure SQL veritabanına nasıl bağlanabileceğinizi ve hem REST hem de GraphQL uç noktalarını nasıl kullanıma açabileceğinizi gösterir. Yapılandırma dosyası ve desteklenen özellikleri hakkında tüm ayrıntılar için Data API Builder belgelerine bakın.

{
  "$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"
        }
      ]
    }
  }
}
Özellik Açıklama
$schema Azure Static Web Apps tarafından yapılandırma dosyasını yorumlamak için kullanılan Database API builder sürümü.
data-source Hedef veritabanına özgü yapılandırma ayarları. database-type özelliği mssql, postgresql, cosmosdb_nosql veya mysql kabul eder.

Bir veritabanı Statik Web Apps kaynağınıza bağlandığında dağıtım sırasında bağlantı dizesinin üzerine yazılır. Yerel geliştirme sırasında, veritabanına bağlanmak için yapılandırma dosyasında tanımlanan bağlantı dizesi kullanılır.
runtime Kullanıma sunulan uç noktaları tanımlayan bölüm. rest ve graphql özellikleri, karşılık gelen API protokolüne erişmek için kullanılan URL parçasını denetler. Yapılandırma host bölümü, geliştirme ortamınıza özgü ayarları tanımlar. origins dizisinin localhost adresinizi ve bağlantı noktasını içerdiğinden emin olun. Bir veritabanı Statik Web Apps kaynağınıza bağlandığında host.mode, production olarak üzerine yazılır.
entities URL yolunu veritabanı varlıkları ve tablolarına eşleyen bölüm. Yolların güvenliğini sağlamak için kullanılan rol tabanlı kimlik doğrulama kuralları aynı zamanda veritabanı varlıklarının güvenliğini de sağlar ve her varlık için izinleri tanımlamak için kullanılabilir. Varlıklar nesnesi, varlıklar arasındaki ilişkileri de belirtir.

Yapılandırma dosyası oluşturun

Static Web Apps CLI, bir yapılandırma dosyası taslağı oluşturmanıza olanak tanır.

Önemli

Static Web Apps CLI'den yapılan dağıtımların güvenliğini artırmak için, 15 Ocak 2025'e kadar Static Web Apps CLI'nin en son sürümüne (2.0.2) yükseltmenizi gerektiren geriye dönük uyumsuzluk yaratan bir değişiklik kullanıma sunulmuştur.

Bir yapılandırma dosyası oluşturmak için swa db init --database-type <YOUR_DATABASE_TYPE> öğesini kullanın. Varsayılan olarak, CLI swa-db-connections adlı klasörde yeni staticwebapp.database.config.json oluşturur.

Desteklenen veritabanı türleri şunlardır:

  • mssql
  • postgresql
  • cosmosdb_nosql
  • mysql

Özel yapılandırma klasörü

staticwebapp.database.config.json dosyasının varsayılan klasör adı swa-db-connections’tır. Farklı bir klasör kullanmak isterseniz, Static Web Apps çalışma zamanına yapılandırma dosyanızı nerede bulacağını bildirmek için iş akışı dosyanızı güncelleştirmeniz gerekir. data_api_location özelliği, yapılandırma klasörünüzün konumunu tanımlamanızı sağlar.

Not:

staticwebapp.database.config.json dosyasını tutan klasör, statik web uygulamaları deponuzun kökünde olmalıdır.

Aşağıdaki kod, veritabanı yapılandırma dosyası için db-config adlı bir klasörün nasıl kullanılacağını gösterir.

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

Veritabanı bağlantısını yapılandırın

Veritabanı bağlantılarının çalışması için Azure Static Web Apps'in veritabanınıza ağ erişimi olmalıdır. Ayrıca, yerel geliştirme için bir Azure veritabanı kullanmak için veritabanınızı kendi IP adresinizden gelen isteklere izin verecek şekilde yapılandırmanız gerekir. Tüm veritabanları için geçerli olan genel adımlar aşağıdadır. Veritabanı türünüzle ilgili belirli adımlar için yukarıdaki bağlantılara bakın.

  • Azure portal içindeki veritabanınıza gidin.
  • Ağ sekmesine gidin.
  • Güvenlik duvarı kuralları bölümünde İstemci IPv4 adresinizi ekle'yi seçin. Bu adım, yerel geliştirmeniz için bu veritabanını kullanabilmenizi sağlar.
  • Azure hizmetlerinin ve kaynaklarının bu sunucuya erişmesine izin ver onay kutusunu seçin. Bu adım, dağıtılan Statik Web Uygulamaları kaynağınızın veritabanınıza erişmesini sağlar.
  • Kaydet'i seçin.

Bir veritabanı bağlayın

Veritabanını statik web uygulamanıza bağlamak, Azure'da yayımlandığında web siteniz ile veritabanınız arasında üretim bağlantısı kurar.

  1. Statik web uygulamanızı Azure portalında açın.

  2. Ayarlar bölümünde Veritabanı bağlantısı'nı seçin.

  3. Üretim bölümünün altında, Var olan veritabanını bağla bağlantısını seçin.

  4. Mevcut veritabanını bağla penceresinde aşağıdaki değerleri girin:

    Özellik Değer
    Veritabanı Türü Açılan listeden veritabanı türünüzü seçin.
    Abonelik Açılan listeden Azure aboneliğinizi seçin.
    Kaynak Adı İstediğiniz veritabanını içeren veritabanı sunucusu adını seçin.
    Veritabanı Adı Statik web uygulamanıza bağlamak istediğiniz veritabanının adını seçin.
    Kimlik Doğrulaması Türü Veritabanınıza bağlanmak için gereken bağlantı türünü seçin.

Aşağıdaki veritabanlarından birini kullanarak statik web uygulamanıza veritabanı ekleyin:

Buna ek olarak, Azure Static Web Apps ile Data API builder'ı nasıl kullanacağınızı da öğrenebilirsiniz.