ランタイムの動作を決定する構成設定。
ページ設定
| Property | Default | Description |
|---|---|---|
| runtime.pagination.max ページ サイズ | ページあたりの最大レコード数を定義します | |
| runtime.pagination.default-page-size | 応答ごとに既定のレコードを設定します |
REST の設定
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
REST エンドポイントのベース パス |
| runtime.rest.enabled | true |
すべてのエンティティに対する REST 要求の有効化または無効化を許可します |
| runtime.rest.request-body-strict | true |
true の場合、要求本文の余分なフィールドを許可しない |
GraphQL の設定
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
基になる GraphQL スキーマのクエリを実行できます |
| runtime.graphql.path | "/graphql" |
GraphQL エンドポイントのベース パス |
| runtime.graphql.enabled | true |
すべてのエンティティに対する GraphQL 要求の有効化または無効化を許可します |
| runtime.graphql.depth-limit | null |
GraphQL クエリの最大許容深度 |
| runtime.graphql.multiple-mutations.create.enabled | false |
すべてのエンティティに対して複数の変更を作成できます |
ホストの設定
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
1 つの結果で許容されるデータベース応答の最大サイズ (MB) |
| runtime.host.mode | "production" |
実行中のモード。 "production" または "development" |
CORS の設定
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
許可されている CORS の配信元 |
| runtime.host.cors.allow-credentials | false |
Access-Control-Allow-Credentials ヘッダーの値を設定します |
認証設定
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | null |
認証プロバイダー |
| runtime.host.authentication.jwt.audience | null |
JWT 対象ユーザー |
| runtime.host.authentication.jwt.issuer | null |
JWT 発行者 |
キャッシュ設定
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
応答をグローバルにキャッシュできるようにします |
| runtime.cache.ttl-seconds | 5 |
グローバル キャッシュの有効期間 (秒) |
テレメトリ設定
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Application Insights 接続文字列 |
| runtime.telemetry.application-insights.enabled | false |
Application Insights テレメトリを有効または無効にする |
| runtime.telemetry.open-telemetry.endpoint | null |
OpenTelemetry コレクターの URL |
| runtime.telemetry.open-telemetry.headers | {} |
OpenTelemetry エクスポート ヘッダー |
| runtime.telemetry.open-telemetry.service-name | "dab" |
OpenTelemetry サービス名 |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
OpenTelemetry プロトコル ("grpc" または "httpprotobuf") |
| runtime.telemetry.open-telemetry.enabled | true |
OpenTelemetry を有効または無効にします |
| runtime.telemetry.log-level.namespace | null |
名前空間固有のログ レベルのオーバーライド |
| runtime.health.enabled | true |
正常性チェック エンドポイントをグローバルに有効または無効にします |
| runtime.health.roles | null |
包括的な正常性エンドポイントに対して許可されているロール |
| runtime.health.cache-ttl-seconds | 5 |
正常性チェック レポートのキャッシュ エントリの有効期間 (秒) |
| runtime.health.max-query-parallelism | 4 |
最大同時正常性チェック クエリ (範囲: 1 から 8) |
書式の概要
{
"runtime": {
"pagination": {
"max-page-size": <integer|null> (default: `100000`),
"default-page-size": <integer|null> (default: `100`)
},
"rest": {
"path": <string> (default: "/api"),
"enabled": <true>|<false>,
"request-body-strict": <true>|<false> (default: `true`)
},
"graphql": {
"path": <string> (default: "/graphql"),
"enabled": <true>|<false>,
"allow-introspection": <true>|<false>,
"depth-limit": <integer|null> (default: `null`),
"multiple-mutations": {
"create": {
"enabled": <true>|<false> (default: `false`)
}
}
},
"host": {
"mode": <"production"> (default) | <"development">,
"max-response-size-mb": <integer|null> (default: `158`),
"cors": {
"origins": [ "<string>" ],
"allow-credentials": <true>|<false> (default: `false`)
},
"authentication": {
"provider": <string> (default: "AppService"),
"jwt": {
"audience": "<string>",
"issuer": "<string>"
}
}
}
},
"cache": {
"enabled": <true>|<false> (default: `false`),
"ttl-seconds": <integer> (default: `5`)
},
"telemetry": {
"application-insights": {
"connection-string": "<string>",
"enabled": <true>|<false> (default: `true`)
},
"open-telemetry": {
"endpoint": "<string>",
"headers": "<string>",
"service-name": <string> (default: "dab"),
"exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
"enabled": <true>|<false> (default: `true`)
},
"log-level": {
// namespace keys
"<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
}
},
"health": {
"enabled": <true>|<false> (default: `true`),
"roles": [ "<string>" ],
"cache-ttl-seconds": <integer> (default: `5`),
"max-query-parallelism": <integer> (default: `4`)
}
}
モード (ホスト ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
host |
enum (production | development) |
❌ いいえ | production |
開発動作
- GraphQL テスト用に Nitro (以前のバナナ ケーキ ポップ) を有効にしました
- REST テスト用に Swagger UI を有効にしました
- 匿名の正常性チェックを有効にしました
- ログの詳細度の向上 (デバッグ)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
最大応答サイズ (ホスト ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
整数 | ❌ いいえ | 158 |
特定の結果の最大サイズ (メガバイト単位) を設定します。 応答が大きくなるとシステムに負荷がかかる可能性があるため、 max-response-size-mb は合計サイズ (行数とは異なる) を大文字にしてオーバーロードを防ぎます。これは、特にテキストや JSON などの大きな列では発生します。
| Value | Result |
|---|---|
| 設定されていません | 既定値を使用する |
null |
既定値を使用する |
integer |
任意の正の 32 ビット整数 |
<= 0 |
サポートされていません |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
オブジェクト | ❌ いいえ | - |
グローバル GraphQL 構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ いいえ | None |
runtime.graphql |
path |
文字列 | ❌ いいえ | "/graphql" |
runtime.graphql |
depth-limit |
整数 | ❌ いいえ | なし (無制限) |
runtime.graphql |
allow-introspection |
boolean | ❌ いいえ | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ いいえ | False |
プロパティのメモ
-
pathプロパティのサブパスは使用できません。 -
depth-limitを使用して、入れ子になったクエリを制約します。 - graphQL スキーマを非表示にするには、
allow-introspectionをfalseに設定します。 -
multiple-mutationsを使用して、1 つの変更に複数のエンティティを挿入します。
Format
{
"runtime": {
"graphql": {
"enabled": <true> (default) | <false>
"depth-limit": <integer|null> (default: `null`),
"path": <string> (default: /graphql),
"allow-introspection": <true> (default) | <false>,
"multiple-mutations": {
"create": {
"enabled": <true> (default) | <false>
}
}
}
}
例: 複数の変異
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
GraphQL の変更
mutation {
createUsers(input: [
{ name: "Alice", age: 30, isAdmin: true },
{ name: "Bob", age: 25, isAdmin: false },
{ name: "Charlie", age: 35, isAdmin: true }
]) {
id
name
age
isAdmin
}
}
REST (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
rest |
オブジェクト | ❌ いいえ | - |
グローバル REST 構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ いいえ | None |
runtime.rest |
path |
文字列 | ❌ いいえ | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ いいえ | True |
プロパティのメモ
- グローバル
enabledがfalseされている場合、個々のエンティティ レベルのenabledは関係ありません。 -
pathプロパティは、/api/dataなどのサブパス値をサポートしていません。 -
request-body-strictは、.NET POCO オブジェクトを簡略化するために導入されました。
request-body-strict |
Behavior |
|---|---|
true |
要求本文に追加のフィールドを指定すると、 BadRequest 例外が発生します。 |
false |
要求本文の追加のフィールドは無視されます。 |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Note
Static Web Apps (プレビュー) を使用してデータ API ビルダーをデプロイすると、Azure サービスによって、URL に別のサブパス /data-api が自動的に挿入されます。 この動作により、既存の静的 Web アプリ機能との互換性が確保されます。 結果のエンドポイントは /data-api/api/<entity>。 このメモは、静的 Web アプリにのみ関連します。
例: request-body-strict
-
default()値を持つ列は、ペイロード内の値がINSERTされている場合にのみ、null中は無視されます。 その結果、INSERTがdefault()されている場合、request-body-strict列に対する操作をtrueしても、明示的なnull値が得られません。 これを実現するには、UPDATE操作が必要です。 -
default()を持つ列は、ペイロード値に関係なく、UPDATE中は無視されません。 - 計算列は常に無視されます。
- 自動生成された列は常に無視されます。
サンプル テーブル
CREATE TABLE Users (
Id INT PRIMARY KEY IDENTITY, -- auto-generated column
Name NVARCHAR(50) NOT NULL,
Age INT DEFAULT 18, -- column with default
IsAdmin BIT DEFAULT 0, -- column with default
IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);
要求ペイロード
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
次の場合の挿入動作 request-body-strict = false
INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.
応答ペイロード
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
更新時の動作 request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
応答ペイロード
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (ホスト ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
オブジェクト | ❌ いいえ | - |
グローバル CORS 構成。
Tip
CORS は、"クロスオリジン リソース共有" の略です。これは、Web ページがサービスを提供したドメインとは異なるドメインに要求を行うことができるかどうかを制御するブラウザーセキュリティ機能です。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ いいえ | False |
runtime.host.cors |
origins |
文字列配列 | ❌ いいえ | None |
Note
allow-credentials プロパティは、Access-Control-Allow-Credentials CORS ヘッダーを設定します。
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> (default) | <false>,
"origins": ["<array-of-strings>"]
}
}
}
}
Note
ワイルドカード * は、 originsの値として有効です。
プロバイダー (認証ホスト ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
enum (AppService | EntraId | Custom | Simulator) |
❌ いいえ | AppService |
データ API ビルダーで使用される認証方法を定義します。
匿名専用 (認証プロバイダー)
{
"host": {
// omit the authentication section
}
}
dab-config.json ファイルから authentication セクション全体を省略すると、認証プロバイダーは使用されません。 この場合、データ API ビルダーは "認証なし" モードで動作します。 このモードでは、DAB はトークンや Authorization ヘッダーを検索しません。 この構成では、 X-MS-API-ROLE ヘッダーも無視されます。
[!注] エンジンに入ってくるすべての要求は自動的に行われ、すぐに
anonymousのシステム ロールが割り当てられます。 アクセス制御は、各エンティティに対して定義したアクセス許可によって排他的に処理されます。
エンティティのアクセス許可の例。
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
}
]
}
}
}
この例では、 authentication プロバイダーが構成されていないため、すべての受信要求は、 anonymous ユーザーからの要求と自動的に見なされます。
permissions エンティティのBook配列は、anonymous ロールにread操作を実行する機能を明示的に付与します。 他のアクション ( create、 update、 deleteなど) の実行や、 anonymous アクセス用に構成されていない他のエンティティへのアクセスの試行は拒否されます。
StaticWebApps (認証プロバイダー) [非推奨]
{
"host": {
"authentication": {
"provider": "StaticWebApps"
}
}
}
静的 Web Apps プレビュー機能 Data Connections は 2025 年 11 月に廃止されたため、このプロバイダーは非推奨です。 機能は維持されますが、Azure Static Web Apps での認証のレガシ実装用に設計されました。 開発者は、Azure の広範な "Easy Auth" プラットフォームとの長期的なサポートと一貫性を向上させるために、 AppService プロバイダーに移行する必要があります。
[!注] 移行は、構成ファイル内のプロバイダー名を変更するほど簡単ではありません。
StaticWebAppsプロバイダーとAppServiceプロバイダーは、ロールを処理するために、x-ms-client-principalヘッダー内のさまざまな JSON 構造を想定しています。
AppService (認証プロバイダー)
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
このプロバイダーは、Azure Container Apps などの Azure App Service でホストされているアプリケーション用です。 Azure ホスティング環境は認証を処理し、要求ヘッダーを介してユーザーの ID 情報をアプリケーションに渡します。 これは、Azure プラットフォームによって管理される、すぐに使用できるシンプルな認証ソリューションを必要とする開発者を対象としています。
このプロバイダーは、 Authorization ヘッダーからの JWT トークンを使用しません。 App Service プラットフォームによって挿入される特別なヘッダー ( X-MS-CLIENT-PRINCIPAL) に依存しています。 このヘッダーには、ユーザーの ID の詳細を含む base64 でエンコードされた JSON オブジェクトが含まれています。
匿名: AppService プロバイダーが構成されていても、 X-MS-CLIENT-PRINCIPAL ヘッダーなしで要求が到着した場合、要求は anonymous のシステム ロールに割り当てられます。
通常、 X-MS-CLIENT-PRINCIPAL ヘッダーからデコードされた JSON は次のようになります。
{
"auth_typ": "aad",
"claims": [
{"typ": "roles", "val": "admin"},
{"typ": "roles", "val": "contributor"}
],
"name_typ": "...",
"role_typ": "..."
}
ロールは、 claims 配列内に含まれています。
X-MS-API-ROLE ヘッダーについて
-
ロールと動作:
X-MS-API-ROLEヘッダーは、現在の要求に対してユーザーが想定するロールを指定するために使用されます。 このヘッダーの値は、claimsオブジェクトのX-MS-CLIENT-PRINCIPAL配列にあるロール値のいずれかと一致する必要があります。 -
必須ですか?: いいえ。
X-MS-API-ROLEヘッダーがない場合、要求はauthenticatedシステム ロールのコンテキストで処理されます。 つまり、ユーザーはログイン済みとして認識されますが、トークンから特定のアプリケーション定義ロールとして認識されることはありません。 -
一致時の動作:
X-MS-API-ROLEヘッダーが指定され、その値がクライアント プリンシパルのclaimsのロールと一致する場合、ユーザーはそのロールを要求に対して引き受けます。 -
不一致に対する動作:
X-MS-API-ROLEヘッダーが指定されていても、値がクライアント プリンシパルのどのロールとも一致しない場合、要求は403 Forbidden状態コードで拒否されます。 これにより、割り当てられていないロールをユーザーが要求できなくなります。
EntraId (認証プロバイダー)
{
"host": {
"authentication": {
"provider": "EntraId", // previously AzureAd
"jwt": {
"audience": "00001111-aaaa-2222-bbbb-3333cccc4444",
"issuer": "https://login.microsoftonline.com/98765f43-21ba-400c-a5de-1f2a3d4e5f6a/v2.0"
}
}
}
}
このプロバイダーは、Microsoft Entra のユーザー ID とアプリケーション ID を使用してエンドポイントをセキュリティで保護します。 ユーザーまたは他のサービスが Entra テナント内でセキュリティで保護されたアクセスを必要とする任意のサービスに最適です。
[!注]
EntraIdプロバイダーは、以前はAzureAdという名前でした。 古い名前は引き続き機能しますが、開発者は構成をAzureAdからEntraIdに移行することをお勧めします。
このプロバイダーは、Microsoft Entra によって発行された Authorization ヘッダーに標準の JWT ベアラー トークンが必要です。 トークンは、( audience 要求を使用して) 特定のアプリケーション用に構成する必要があります。 ユーザーまたはサービス プリンシパルのロールは、トークン内の要求に含まれている必要があります。 このコードでは、既定で roles 要求が検索されます。
匿名: EntraId プロバイダーが構成されていても、 Authorization ヘッダーなしで要求が到着した場合、要求は anonymous のシステム ロールに割り当てられます。
デコードされた JWT ペイロードは次のようになります。
{
"aud": "...", // Audience - your API
"iss": "https://login.microsoftonline.com/{tenant-id}/v2.0", // Issuer
"oid": "...", // User or principal object ID
"roles": [
"reader",
"writer"
],
// ... other claims
}
X-MS-API-ROLE ヘッダーについて
-
ロールと動作:
X-MS-API-ROLEヘッダーは、ユーザーが要求を想定するロールを指定するために使用されます。 このヘッダーの値は、JWT トークンのroles要求で見つかったロール値のいずれかと一致する必要があります。 -
必須ですか?: いいえ。
X-MS-API-ROLEヘッダーがない場合、要求はauthenticatedシステム ロールのコンテキストで処理されます。 つまり、ユーザーはログイン済みとして認識されますが、トークンから特定のアプリケーション定義ロールとして認識されることはありません。 -
一致時の動作:
X-MS-API-ROLEヘッダーが指定され、roles要求のロールと一致する場合、ユーザーのコンテキストはそのロールに設定されます。 -
不一致に対する動作:
X-MS-API-ROLEヘッダーが指定されていても、その値がroles要求のどのロールとも一致しない場合、要求は403 Forbidden状態コードで拒否されます。 これにより、割り当てられていないロールをユーザーが要求できなくなります。
カスタム (認証プロバイダー)
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<client-id-or-api-audience>",
"issuer": "https://<your-domain>/oauth2/default"
}
}
}
}
このプロバイダーは、JWT を発行するサードパーティの ID プロバイダー (Auth0、Okta、カスタム ID サーバーなど) と Data API Builder を統合する開発者向けです。 トークンの予想される audience と issuer を柔軟に構成できます。
Custom プロバイダーでは、Authorization ヘッダーに標準の JWT ベアラー トークンが必要です。
EntraId プロバイダーとの主な違いは、データ API ビルダーの構成ファイルで有効なissuerとaudienceを構成することです。 プロバイダーは、信頼された機関がトークンを発行したことを確認してトークンを検証します。 ユーザーのロールは、JWT ペイロード内の roles 要求に含まれている必要があります。
[!注] 場合によっては、サード パーティの ID プロバイダーによっては、開発者は、データ API ビルダーで想定される構造 (以下に示す) と一致するように JWT の構造を強制する必要があります。
匿名: Custom プロバイダーが構成されていても、 Authorization ヘッダーなしで要求が到着した場合、要求は anonymous のシステム ロールに割り当てられます。
custom プロバイダーのデコードされた JWT ペイロードは、次のようになります。
{
"aud": "my-api-audience", // Must match configuration
"iss": "https://my-custom-issuer.com/", // Must match configuration
"sub": "user-id",
"roles": [
"editor",
"viewer"
],
// ... other claims
}
X-MS-API-ROLE ヘッダーについて
-
ロールと動作:
X-MS-API-ROLEヘッダーは、EntraIdプロバイダーとまったく同じように機能します。 これにより、ユーザーは割り当てられたロールのいずれかを選択できます。 このヘッダーの値は、カスタム JWT トークンのroles要求のロールの 1 つと一致する必要があります。 -
必須ですか?: いいえ。
X-MS-API-ROLEヘッダーがない場合、ユーザーはauthenticatedシステム ロールとして扱われます。 -
一致時の動作:
X-MS-API-ROLEヘッダーの値が JWT のroles要求のロールと一致する場合、承認のためにユーザーのコンテキストがそのロールに設定されます。 -
不一致に対する動作:
X-MS-API-ROLEヘッダーの値がroles要求のどのロールとも一致しない場合、要求は403 Forbidden状態コードで拒否されます。 これにより、割り当てられていないロールをユーザーが要求できなくなります。
シミュレーター (認証プロバイダー)
このプロバイダーは、Entra Identity や EasyAuth などの完全な認証プロバイダーを設定しなくても、開発者が構成 (特に authorization ポリシー) を簡単にテストできるように設計されています。
authenticated ユーザーをシミュレートします。
Simulator プロバイダーは JWT トークンを使用しません。 認証はシミュレートされます。 このプロバイダーを使用する場合、すべての要求は認証されたユーザーから送信されたかのように扱われます。
X-MS-API-ROLE ヘッダーについて
-
ロールと動作:
X-MS-API-ROLEヘッダーは、Simulatorを使用するときにロールを指定する唯一の方法です。 ロールの一覧を持つトークンがないため、システムはこのヘッダーで送信されたロールを暗黙的に信頼します。 - 必須ですか?: いいえ。
-
不在時の動作:
X-MS-API-ROLEヘッダーがない場合、要求はauthenticatedシステム ロールのコンテキストで処理されます。 -
プレゼンスでの動作:
X-MS-API-ROLEヘッダーが存在する場合、要求はヘッダーの値で指定されたロールのコンテキストで処理されます。 要求リストに対する検証がないため、開発者はポリシーをテストするために必要なロールをシミュレートできます。
実稼働中のシミュレーター
authentication.providerがSimulatorされているときにruntime.host.modeがproductionに設定されている場合、Data API ビルダーは起動に失敗します。
"host": {
"mode": "production", // or "development"
"authentication": {
"provider": "Simulator"
}
}
JWT (認証ホスト ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
オブジェクト | ❌ いいえ | - |
グローバル JSON Web トークン (JWT) の構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
文字列 | ❌ いいえ | None |
runtime.host.authentication.jwt |
issuer |
文字列 | ❌ いいえ | None |
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
改ページ (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
オブジェクト | ❌ いいえ | - |
REST エンドポイントと GraphQL エンドポイントのグローバル改ページ制限。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ いいえ | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ いいえ | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ いいえ | false |
サポートされる最大ページ サイズの値
| Value | Result |
|---|---|
integer |
任意の正の 32 ビット整数がサポートされます。 |
0 |
サポートされていません。 |
-1 |
既定値は、サポートされている最大値です。 |
< -1 |
サポートされていません。 |
既定のページ サイズでサポートされる値
| Value | Result |
|---|---|
integer |
現在の max-page-sizeより小さい任意の正の整数。 |
0 |
サポートされていません。 |
-1 |
既定値は現在の max-page-size 設定です。 |
< -1 |
サポートされていません。 |
Next-link-relative の動作
next-link-relativeがtrueされている場合、改ページ位置nextLink値は絶対 URL ではなく相対 URL を使用します。
| Value | Example |
|---|---|
false (既定値) |
"nextLink": "https://localhost:5001/api/users?$after=..." |
true |
"nextLink": "/api/users?$after=..." |
Format
{
"runtime": {
"pagination": {
"max-page-size": <integer; default: 100000>,
"default-page-size": <integer; default: 100>,
"next-link-relative": <boolean; default: false>
}
}
}
Note
値が max-page-size より大きい場合、結果は max-page-size で上限が設定されます。
例: REST でのページング
Request
GET https://localhost:5001/api/users
応答ペイロード
{
"value": [
{
"Id": 1,
"Name": "Alice",
"Age": 30,
"IsAdmin": true,
"IsMinor": false
},
{
"Id": 2,
"Name": "Bob",
"Age": 17,
"IsAdmin": false,
"IsMinor": true
}
],
"nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}
要求の次のページ
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
例: GraphQL でのページング
要求ペイロード (クエリ)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
応答ペイロード
{
"data": {
"users": {
"items": [
{
"Id": 1,
"Name": "Alice",
"Age": 30,
"IsAdmin": true,
"IsMinor": false
},
{
"Id": 2,
"Name": "Bob",
"Age": 17,
"IsAdmin": false,
"IsMinor": true
}
],
"hasNextPage": true,
"endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}
}
}
要求の次のページ
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
例: 要求内の max-page-size にアクセスする
max-page-size (REST) または $limit (GraphQL) をfirstに設定して、-1値を使用します。
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
キャッシュ (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
cache |
オブジェクト | ❌ いいえ | - |
グローバル キャッシュの構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ いいえ | False |
runtime.cache |
ttl-seconds |
整数 | ❌ いいえ | 5 |
Tip
エンティティ レベルの cache.ttl-seconds プロパティの既定値は、このグローバル値です。
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>
}
}
}
Important
グローバル enabled が falseされている場合、個々のエンティティ レベルの enabled は関係ありません。
テレメトリ (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
オブジェクト | ❌ いいえ | - |
グローバル テレメトリの構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
辞書 | ❌ いいえ | None |
runtime.telemetry |
application-insights |
オブジェクト | ❌ いいえ | - |
runtime.telemetry |
open-telemetry |
オブジェクト | ❌ いいえ | - |
名前空間ごとのログの詳細度を構成します。 これは、標準の .NET ログ規則に従い、詳細な制御を可能にしますが、データ API ビルダーの内部に関する知識を前提としています。 データ API ビルダーはオープン ソースです。 https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level は、開発と運用の両方でホットリロードできます。 現在、運用環境でホット リロードをサポートする唯一のプロパティです。
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (テレメトリ)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
オブジェクト | ❌ いいえ | - |
Application Insights へのログ記録を構成します。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ いいえ | False |
runtime.telemetry.application-insights |
connection-string |
文字列 | ✔️ はい | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (テレメトリ)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
オブジェクト | ❌ いいえ | - |
テレメトリを開くログ記録を構成します。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ いいえ | true |
runtime.telemetry.open-telemetry |
endpoint |
文字列 | ✔️ はい | None |
runtime.telemetry.open-telemetry |
headers |
文字列 | ❌ いいえ | None |
runtime.telemetry.open-telemetry |
service-name |
文字列 | ❌ いいえ | "dab" |
runtime.telemetry.open-telemetry |
exporter-protocol |
enum (grpc | httpprotobuf) |
❌ いいえ | grpc |
複数のヘッダーは , (コンマ) で区切られます。
Format
{
"runtime": {
"telemetry": {
"open-telemetry": {
"enabled": <true> (default) | <false>,
"endpoint": <string>,
"headers": <string>,
"service-name": <string> (default: "dab"),
"exporter-protocol": <"grpc" (default) | "httpprotobuf">
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"open-telemetry": {
"enabled": true,
// a gRPC endpoint example
"endpoint": "http://localhost:4317",
// an HTTP/protobuf endpoint example
"endpoint": "http://localhost:4318/v1/metrics",
"headers": "api-key=key,other-config-value=value",
"service-name": "dab",
}
}
}
}
詳細については、 OTEL_EXPORTER_OTLP_HEADERSを参照してください。
Note
gRPC (4317) は高速であり、ストリーミングをサポートしますが、より多くのセットアップが必要です。 HTTP/protobuf (4318) は、デバッグが簡単で簡単ですが、効率は低くなります。
正常性 (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
health |
オブジェクト | ❌ いいえ | - |
グローバル 正常性チェック エンドポイント (/health) の構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default | 範囲/メモ |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ いいえ | true |
|
runtime.health |
roles |
文字列配列 | ✔️ はい* | null |
*実稼働モードで必須 |
runtime.health |
cache-ttl-seconds |
整数 | ❌ いいえ | 5 |
最小: 0 |
runtime.health |
max-query-parallelism |
整数 | ❌ いいえ | 4 |
最小: 1、最大: 8 (クランプ) |
開発中と運用環境での動作
| Condition | 開発動作 | 運用環境の動作 |
|---|---|---|
health.enabled = 偽 |
403 地位 |
403 地位 |
health.enabled = 真 |
ロールに依存 | ロールに依存 |
roles 省略または null |
正常性が表示される |
403 地位 |
現在のロールが roles |
403 地位 |
403 地位 |
の現在のロール roles |
正常性が表示される | 正常性が表示される |
roles 含む anonymous |
正常性が表示される | 正常性が表示される |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
グローバル enabled が falseされている場合、個々のエンティティ レベルの enabled は関係ありません。
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}