このガイドでは、コンテナー イメージを構築または管理せずに、コードベースのデプロイ モデルを使用してデータ API ビルダー (DAB) をAzure App Serviceにデプロイする方法について説明します。 App Service には、TLS、カスタム ドメイン、スケーリング、監視、およびMicrosoft Entra認証の組み込みサポートが用意されています。
Tip
環境でコンテナーを使用している場合は、「deploy to Azure Container Apps または Deploy to Azure Kubernetes Service を参照してください。
前提条件
- アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
- データ API ビルダー CLI。 CLI をインストールします。
- Azure CLI。 Azure CLI のインストールを実行します。
- .NET 8 以降がローカルにインストールされています。
- Azure からアドレス指定可能な既存のサポートされているデータベース。
構成ファイルをビルドする
既存のデータベースに接続する DAB 構成ファイルをビルドします。
ローカル コンピューターに空のディレクトリを作成して、構成ファイルとデプロイ成果物を格納します。
dab initを使用して、新しい基本構成ファイルを初期化します。@env()関数を使用してDATABASE_CONNECTION_STRING環境変数を参照し、資格情報が構成ファイルに格納されないようにします。dab init --database-type "<database-type>" --connection-string "@env('DATABASE_CONNECTION_STRING')"Important
<database-type>をサポートされているデータベースの種類 (mssql、postgresql、mysql、cosmosdb_nosqlなど) に置き換えます。 一部のデータベースの種類では、初期化時に追加の構成設定が必要です。構成に少なくとも 1 つのデータベース エンティティを追加します。 エンティティを構成するには、
dab addコマンドを使用します。 エンティティに必要な回数ごとにdab addを繰り返します。dab add "<entity-name>" --source "<schema>.<table>" --permissions "anonymous:*"dab-config.json ファイルの内容を開いて確認します。 次のことを確認します。
-
data-source.connection-stringを使用します@env('DATABASE_CONNECTION_STRING') - エンティティとアクセス許可が正しい
Important
リテラル接続文字列やシークレットを
dab-config.jsonに埋め込まない。 実行時に環境変数から値が解決されるように、@env()関数を使用します。-
ローカル ツール マニフェストを作成する
ローカル .NET ツール マニフェストを使用して、配置パッケージにプロジェクトの依存関係として DAB を含めます。 この方法では、App Service 内にグローバルにインストールされたツールに依存することを回避できます。
プロジェクト ディレクトリに.NETローカル ツール マニフェストを作成します。
dotnet new tool-manifestデータ API ビルダーをローカル ツールとしてインストールします。
dotnet tool install microsoft.dataapibuilder --prereleaseマニフェストが
.config/dotnet-tools.jsonに存在するかどうかを確認します。Note
--prereleaseフラグは、最新の Data API ビルダープレリリース バージョンをインストールします。 フラグを削除して、最新の安定版リリースをインストールしてください。
ローカルでテストする
Azureにデプロイする前に、ランタイムが開始され、エンドポイントが動作することを確認します。
接続文字列をローカル環境変数として設定します。
$env:DATABASE_CONNECTION_STRING = "<your-connection-string>"DAB ランタイムをローカルで起動します。
dab startSwagger UI に移動するか、
/api/<entity-name>への要求を行って、REST エンドポイントをテストします。/graphqlで GraphQL エンドポイントをテストします。すべてのエンドポイントを確認した後、ランタイムを停止します。
App Service リソースを作成する
App Service で DAB をホストするために必要なAzure リソースを作成します。
新しいリソース グループを作成する。 このガイドでは、このリソース グループをすべての新しいリソースに使用します。
az group create \ --name <resource-group-name> \ --location <location>Tip
リソース グループ に msdocs-dab-appservice という名前を付ける方法を検討してください。
アプリサービスプランを作成する。
az appservice plan create \ --name <plan-name> \ --resource-group <resource-group-name> \ --sku B1 \ --is-linuxNote
このガイドでは、Linux 上の B1 (Basic) レベルを使用します。
.NET 8 ランタイムを使用して Web アプリを作成します。
az webapp create \ --name <app-name> \ --resource-group <resource-group-name> \ --plan <plan-name> \ --runtime "DOTNETCORE:8.0"Tip
az webapp list-runtimes --os linuxを使用して、プランで使用可能なランタイムを検証します。
App Service の設定を構成する
App Service で DAB を実行するために必要な環境変数とスタートアップ コマンドを構成します。
App Service の認証プロバイダーを構成します。 この設定は、ID 情報に対して App Service の組み込み認証 (Easy Auth) を信頼するように DAB に指示します。
dab configure --runtime.host.authentication.provider AppServiceApp Service アプリケーション設定としてデータベース接続文字列を設定します。
az webapp config appsettings set \ --name <app-name> \ --resource-group <resource-group-name> \ --settings DATABASE_CONNECTION_STRING="<your-connection-string>"Tip
シークレットを含まない接続文字列を使用します。 代わりに、マネージド ID とMicrosoft Entra認証を使用して、データベースと App Service の間のアクセスを管理します。 詳細については、 マネージド ID を使用する Azure サービスに関するページを参照してください。
ローカル ツール マニフェストを復元し、DAB を起動するスタートアップ スクリプトを作成します。 プロジェクト ディレクトリに
startup.shという名前のファイルを作成します。#!/bin/sh dotnet tool restore dotnet tool run dab startImportant
startup.shが CRLF ではなく LF (Unix) 行末を使用していることを確認します。 Windowsエディターは既定で CRLF で保存できます。これにより、Linux App Service ホストでスクリプトが失敗します。App Service でスタートアップ コマンドを設定します。
az webapp config set \ --name <app-name> \ --resource-group <resource-group-name> \ --startup-file "startup.sh"
App Service にデプロイする
プロジェクト ファイルをパッケージ化し、ZIP デプロイを使用して App Service にデプロイします。
プロジェクト ファイルを含む配置パッケージを作成します。 少なくとも、以下を含めます。
dab-config.json.config/dotnet-tools.jsonstartup.sh
Compress-Archive -Path dab-config.json, .config, startup.sh -DestinationPath deploy.zip -ForceImportant
ZIP には、ルート レベルのファイルが含まれている必要があります。 ファイルを含む親フォルダーを zip 圧縮しないでください。 アーカイブ ルートには、
dab-config.json、.config/、およびstartup.shを直接含める必要があります。APP Service に ZIP パッケージをデプロイします。
az webapp deploy \ --resource-group <resource-group-name> \ --name <app-name> \ --src-path deploy.zip \ --type zip
デプロイメントを確認する
デプロイ後、App Service で DAB が正常に開始されることを確認します。
App Service URL を開きます。
https://<app-name>.azurewebsites.netヘルスエンドポイントを確認します。
https://<app-name>.azurewebsites.net/healthローカルでテストしたのと同じエンティティ パスを使用して、REST エンドポイントと GraphQL エンドポイントをテストします。 デプロイされたアプリは同じ
dab-config.jsonを使用するため、エンドポイントの動作はローカル ランタイムと一致する必要があります。エンドポイントで予期しないエラーが返された場合は、アプリケーションのログ記録を有効にしてログを確認します。
az webapp log config \ --name <app-name> \ --resource-group <resource-group-name> \ --application-logging filesystem \ --level information az webapp log tail \ --name <app-name> \ --resource-group <resource-group-name>
認証の構成 (省略可能)
運用環境で使用するMicrosoft Entra IDを使用して App Service エンドポイントを保護します。
詳細な手順については、「 App Service 認証の構成」を参照してください。
Important
AppServiceのdab-config.json認証プロバイダーは、App Service 認証によって挿入されたヘッダーを信頼します。 運用環境でこのプロバイダーを使用する場合は、App Service 認証が有効になっていることを確認します。 詳細については、「 Easy Auth (App Service)」を参照してください。
Note
App Service 認証は、エンドポイントへのイングレスを保護します。 DAB エンティティのアクセス許可は、ランタイムが許可する操作を引き続き制御します。 ロールベースのアクセスが必要な場合は、 anonymous:*ではなく特定のロールを使用するようにエンティティのアクセス許可を更新します。
リソースをクリーンアップする
サンプル アプリケーションまたはリソースが不要になったら、対応するデプロイとすべてのリソースを削除します。
az group delete \
--name <resource-group-name> \
--yes \
--no-wait