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 DB、 Azure SQL、 MySQL、または 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 エンティティのすべてのアクション (read、update、delete、) にアクセスする必要があります。
{
...
"entities": {
"Orders": {
"source": "dbo.Orders",
"permissions": [
{
"actions": ["*"],
"role": "admin"
}
]
}
}
...
}
ロールを必要とするエンドポイントを呼び出す場合は、次の条件が必要です。
現在のユーザーを認証する必要があります。
現在のユーザーは、必要なロールのメンバーである必要があります。
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 のデータベース ワーカーに拡張されます。