次の方法で共有


Azure Static Web Apps を使用したデータベースへの接続 (プレビュー)

Important

提供終了の通知: 静的 Web アプリのデータベース接続は、2025 年 11 月 30 日に終了します。 中断を避けるために今すぐ移行します。

Azure Static Web Apps データベース接続機能を使用すると、カスタム サーバー側コードを記述することなく、静的 Web アプリからデータベースにアクセスできます。

Web アプリケーションとデータベース間の接続を作成したら、CRUD 操作、組み込み承認、およびリレーションシップを完全にサポートしてデータを操作できます。

データ API ビルダーに基づいて、Azure Static Web Apps は REST 要求と GraphQL 要求を受け取り、データベース クエリに変換します。

データベース接続でサポートされる機能は次のとおりです。

特徴 Description
統合セキュリティ Azure Static Web Apps 認証および承認セキュリティ モデルとの組み込みの統合。 API エンドポイントでは、ルートのセキュリティ保護に使用されるのと同じロールベースのセキュリティを使用できます。
完全な CRUD ベースの操作 アプリケーション内のデータを操作する方法の例については、 Azure Cosmos DBAzure SQLMySQL、または PostgreSQL のチュートリアルを参照してください。
SQL と NoSQL をサポート リレーショナル データベースとドキュメント データベースをアプリケーションのデータベースとして使用できます。
サーバーレス アーキテクチャ 接続は 0 から 1 ワーカーに拡張されます (プレビュー中)。
データベースリレーションシップ GraphQL エンドポイント経由でのみサポートされます。
CLI のサポート 静的 Web Apps CLI を使用してローカルで開発します。 --data-api-location オプションを使用して、クラウドで処理されるのと同じように、開発中のデータ API への要求を処理します。

サポートされるデータベース

次の表は、さまざまなリレーショナル データベースと NoSQL データベースのサポートを示しています。

名前 タイプ Description REST GraphQL
Azure Cosmos DB Standard 任意の規模の NoSQL データベースとリレーショナル データベースの両方のグローバル分散データベース プラットフォーム。

標準構成に加えて、GraphQL エンドポイントにはgqlスキーマ ファイルが必要です。
Azure SQL Standard Azure クラウドで SQL Server データベース エンジンを使用する、マネージドでセキュリティで保護されたインテリジェントな製品のファミリ。
Azure Database for MySQL Flex MySQL Community Edition に基づく Microsoft クラウドのリレーショナル データベース サービス
Azure Database for PostgreSQL Flex(フレックス) 予測可能なパフォーマンスと動的なスケーラビリティを備えたミッション クリティカルなワークロードを処理する、サービスとしてのフル マネージド PostgreSQL データベース。
Azure Database for PostgreSQL (単一) シングル フル マネージド PostgreSQL データベース。

データベース アクセスには、次の接続の種類を使用できます。

  • 接続文字列
  • ユーザー割り当てマネージド ID
  • システム割り当てマネージド ID

エンドポイントの場所

データ エンドポイントには、/data-api パス経由でアクセスできます。

次の表は、要求が静的 Web アプリのさまざまな部分にどのようにルーティングされるかを示しています。

経路 Description
example.com/api/* API 関数
example.com/data-api/* REST 要求と GraphQL 要求をサポートするデータベース接続エンドポイント。
example.com/* 静的コンテンツ

Web サイトでデータベース接続を構成するときに、 /data-api/* ルートの REST または GraphQL サフィックスを構成できます。 /data-api プレフィックスは静的 Web Apps の規則であり、変更することはできません。

コンフィギュレーション

Static Web Apps でデータベース接続を構成するには、2 つの手順があります。 Azure portal で静的 Web アプリにデータベースを接続し、データベース接続構成ファイルを更新する必要があります。

詳細については、 Azure Static Web Apps でのデータベース接続の構成 に関するページを参照してください。

ローカル開発

Azure Static Web Apps CLI (SWA CLI) には、ローカル開発中にデータベース接続を操作するためのサポートが含まれています。

CLI はローカル /data-api エンドポイントをアクティブ化し、ポート 4280 からデータベース アクセス用の適切なポートに要求をプロキシします。

データベース接続で SWA CLI を起動するコマンドの例を次に示します。

swa start ./src --data-api-location swa-db-connections

このコマンドは 、src ディレクトリで SWA CLI を開始します。 --data-api-location オプションは、swa-db-connections という名前のフォルダーがstaticwebapp.database.config.jsonファイルを保持していることを CLI 指示します。

開発中に接続文字列を使用して認証する場合は、 env() 関数を使用して環境変数から接続文字列を読み取ります。 env関数に渡される文字列は引用符で囲む必要があります。

ロールベース セキュリティ

staticwebapp.database.config.json ファイルでエンティティを定義するときに、エンティティ エンドポイントへのアクセスに必要なロールの一覧を指定できます。

次の構成フラグメントでは、管理者ロールが create エンティティのすべてのアクション (readupdatedelete) にアクセスする必要があります。

{
...
"entities": { 
  "Orders": { 
    "source": "dbo.Orders", 
    "permissions": [ 
      { 
        "actions": ["*"], 
        "role": "admin" 
      }
    ]
 }
}
...
}

ロールを必要とするエンドポイントを呼び出す場合は、次の条件が必要です。

  1. 現在のユーザーを認証する必要があります。

  2. 現在のユーザーは、必要なロールのメンバーである必要があります。

  3. REST または GraphQL 要求には、 X-MS-API-ROLE のキーを持つヘッダーと、エンティティ構成規則に記載されているものと一致するロール名の値を含める必要があります。

    たとえば、次のスニペットは、要求ヘッダーで 管理者 ロールを渡す方法を示しています。

    {
      method: "POST",
      headers: { 
        "Content-Type": "application/json",
        "X-MS-API-ROLE": "admin"
      },
      body: JSON.stringify(requestPayload)
    }
    

Constraints

  • データベースには、Azure のインフラストラクチャからアクセスできる必要があります。
  • パブリック プレビュー中、データベース接続は 0 から 1 のデータベース ワーカーに拡張されます。

次のステップ