ランタイムの動作を決定する構成設定。
ページ設定
| 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 | Unauthenticated |
認証プロバイダー |
| 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 |
グローバル キャッシュの有効期間 (秒) |
| runtime.cache.level-2.enabled | false |
分散レベル 2 キャッシュをグローバルに有効にする |
| runtime.cache.level-2.provider | "redis" |
レベル 2 キャッシュの分散キャッシュ プロバイダー |
| runtime.cache.level-2.connection-string | null |
レベル 2 キャッシュ プロバイダーの接続文字列 |
| runtime.cache.level-2.partition | null |
分散キャッシュ領域を分離するためのオプションのパーティション名 |
圧縮設定
| Property | Default | Description |
|---|---|---|
| runtime.compression.level | optimal |
HTTP 応答圧縮レベル (optimal、 fastest、または none) |
テレメトリ設定
MCP の設定
| Property | Default | Description |
|---|---|---|
| runtime.mcp.enabled | true |
MCP エンドポイントをグローバルに有効または無効にします |
| runtime.mcp.path | "/mcp" |
MCP エンドポイントのベース パス |
| runtime.mcp.description | null |
初期化中に MCP クライアントに送信されるサーバーの説明 |
| runtime.mcp.dml-tools | true |
すべての DML ツール、またはツールごとのコントロールのオブジェクトを有効または無効にします。 |
| runtime.mcp.dml-tools.describe-entities | true |
describe_entities ツールを有効にします |
| runtime.mcp.dml-tools.create-record | true |
create_record ツールを有効にします |
| runtime.mcp.dml-tools.read-records | true |
read_records ツールを有効にします |
| runtime.mcp.dml-tools.update-record | true |
update_record ツールを有効にします |
| runtime.mcp.dml-tools.delete-record | true |
delete_record ツールを有効にします |
| runtime.mcp.dml-tools.execute-entity | true |
execute_entity ツールを有効にします |
| runtime.mcp.dml-tools.aggregate-records | true |
aggregate_records ツール (ブール値またはクエリ タイムアウトを含むオブジェクト) を有効にします。 |
書式の概要
{
"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: "Unauthenticated"),
"jwt": {
"audience": "<string>",
"issuer": "<string>"
}
}
}
},
"compression": {
"level": <"optimal"> (default) | <"fastest"> | <"none">
},
"cache": {
"enabled": <true>|<false> (default: `false`),
"ttl-seconds": <integer> (default: `5`),
"level-2": {
"enabled": <true>|<false> (default: `false`),
"provider": <"redis">,
"connection-string": <string>,
"partition": <string>
}
},
"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`)
},
"azure-log-analytics": {
"enabled": <true>|<false> (default: `false`),
"dab-identifier": <string> (default: "DabLogs"),
"flush-interval-seconds": <integer> (default: `5`),
"auth": {
"custom-table-name": <string>,
"dcr-immutable-id": <string>,
"dce-endpoint": <string>
}
},
"file": {
"enabled": <true>|<false> (default: `false`),
"path": <string> (default: "/logs/dab-log.txt"),
"rolling-interval": <string> (default: "Day"),
"retained-file-count-limit": <integer> (default: `1`),
"file-size-limit-bytes": <integer> (default: `1048576`)
},
"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`)
},
"mcp": {
"enabled": <true>|<false> (default: `true`),
"path": <string> (default: `"/mcp"`),
"description": <string>,
"dml-tools": <true>|<false> | {
"describe-entities": <true>|<false> (default: `true`),
"create-record": <true>|<false> (default: `true`),
"read-records": <true>|<false> (default: `true`),
"update-record": <true>|<false> (default: `true`),
"delete-record": <true>|<false> (default: `true`),
"execute-entity": <true>|<false> (default: `true`),
"aggregate-records": <true>|<false> | {
"enabled": <true>|<false> (default: `true`),
"query-timeout": <integer> (default: `30`)
}
}
}
}
}
モード (ホスト ランタイム)
| 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> | <false> (default)
}
}
}
}
}
例: 複数の変異
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>
}
}
}
例: 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> | <false> (default),
"origins": ["<array-of-strings>"]
}
}
}
}
Note
ワイルドカード * は、 originsの値として有効です。
プロバイダー (認証ホスト ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
enum (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator) |
❌ いいえ | Unauthenticated |
認証方法を選択します。 各プロバイダーは、ID を異なる方法で検証します。 詳細なセットアップについては、次の表のハウツー ガイドを参照してください。
Note
このセクションで説明する Data API Builder 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。
プロバイダーの概要
| プロバイダー | 利用シーン | ID ソース | ハウツー ガイド |
|---|---|---|---|
Unauthenticated |
DAB は信頼されたフロントエンドの背後に配置されます (既定) | なし - すべての要求が次のように実行されます。 anonymous |
認証されていないプロバイダーを構成する |
AppService |
Azure でホストされるアプリ (EasyAuth) |
X-MS-CLIENT-PRINCIPAL ヘッダー |
App Service 認証を構成する |
EntraID |
Microsoft Entra ID (Azure AD) | JWT ベアラー トークン | Entra ID 認証を構成する |
Custom |
サードパーティ IDP (Okta、Auth0) | JWT ベアラー トークン | カスタム JWT 認証を構成する |
Simulator |
ローカル テストのみ | シミュレート済み | シミュレーター認証の構成 |
Note
EntraId プロバイダーは、以前は AzureAd という名前でした。 古い名前は互換性のために引き続き機能します。
認証されていない (既定)
Unauthenticatedが設定されている (またはプロバイダーが指定されていない) 場合、DAB は JWT を検査または検証しません。 すべての要求は、 anonymous ロールとして実行されます。 Azure API Management やアプリケーション ゲートウェイなどのフロントエンド サービスは、要求が DAB に到達する前に認証またはアクセス ポリシーを処理できますが、DAB は引き続き anonymousとしてのみ承認します。
Important
Unauthenticatedがアクティブな場合、エンティティのアクセス許可で定義されているauthenticatedロールとカスタム ロールはアクティブになりません。 構成にこれらのロールが含まれている場合、DAB は起動時に警告を出力します。
{
"host": {
"authentication": {
"provider": "Unauthenticated"
}
}
}
AppService
Azure App Service EasyAuth によって挿入された ID ヘッダーを信頼します。
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
EntraID
Microsoft Entra ID によって発行された JWT トークンを検証します。
{
"host": {
"authentication": {
"provider": "EntraId",
"jwt": {
"audience": "<application-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
Custom
サード パーティの ID プロバイダーからの JWT トークンを検証します。
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<api-audience>",
"issuer": "https://<your-idp-domain>/"
}
}
}
}
シミュレーター
ローカル開発とテストの認証をシミュレートします。
{
"host": {
"authentication": {
"provider": "Simulator"
}
}
}
Important
Simulator プロバイダーは、runtime.host.modeがdevelopmentされている場合にのみ機能します。 シミュレーターが実稼働モードで構成されている場合、DAB の起動に失敗します。
ロールの選択
Simulator を除くすべてのプロバイダーについて、 X-MS-API-ROLE ヘッダーは、認証されたユーザーの要求から使用するロールを選択します。 省略した場合、要求は Authenticated システム ロールを使用します。 ロールの評価の詳細については、「 承認とロール」を参照してください。
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 |
*audienceオブジェクトが存在する場合は、issuerとjwtの両方が必要です。 プロバイダーがjwt、EntraID、またはAzureADされている場合は、Custom オブジェクト自体が必要です。
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 {
...
}
}
}
圧縮 (ランタイム)
Note
このセクションで説明する Data API Builder 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
compression |
オブジェクト | ❌ いいえ | - |
HTTP 応答の圧縮構成。 有効にすると、DAB は応答本文を圧縮してペイロード サイズを小さくし、転送速度を向上させます。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.compression |
level |
文字列 | ❌ いいえ | "optimal" |
でサポートされている値 level
| Value | Description | 圧縮の節約 | パフォーマンスへの影響 |
|---|---|---|---|
optimal |
バランス比と速度 (既定) | Gzip: 90.5%/ Brotli: 92.2% | 中程度の CPU 使用率、わずかな待機時間の増加 |
fastest |
比率よりも速度に優先順位を付ける | Gzip: 89.8%/ Brotli: 91.1% | CPU 使用率が低く、待ち時間が最小限 |
none |
圧縮なし | 0% (ベースライン: 12,673 バイト) | None |
クライアント HTTP ヘッダー
圧縮は、クライアントの Accept-Encoding ヘッダーによって呼び出されます。 サポートされているアルゴリズムは Gzip と Brotli です。
level設定では、クライアントとサーバーの両方で複数のアルゴリズムがサポートされている場合に、圧縮戦略が構成されます。
サポートされているヘッダー
| HTTP ヘッダー | 使用されるアルゴリズム |
|---|---|
Accept-Encoding: gzip |
Gzip |
Accept-Encoding: br |
Brotli |
Format
{
"runtime": {
"compression": {
"level": <"optimal"> (default) | <"fastest"> | <"none">
}
}
}
Example
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
キャッシュ (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
cache |
オブジェクト | ❌ いいえ | - |
グローバル キャッシュの構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ いいえ | False |
runtime.cache |
ttl-seconds |
整数 | ❌ いいえ | 5 |
runtime.cache |
level-2 |
オブジェクト | ❌ いいえ | - |
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.cache.level-2 |
enabled |
boolean | ❌ いいえ | False |
runtime.cache.level-2 |
provider |
文字列 | ❌ いいえ | redis |
runtime.cache.level-2 |
connection-string |
文字列 | ❌ いいえ | None |
runtime.cache.level-2 |
partition |
文字列 | ❌ いいえ | None |
Tip
エンティティ レベルの cache.ttl-seconds プロパティの既定値は、このグローバル値です。
Tip
エンド ツー エンドのセットアップ、キャッシュ レベルの動作、Redis の例については、「 レベル 2 キャッシュの実装」を参照してください。
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level-2": {
"enabled": <boolean>,
"provider": "redis",
"connection-string": <string>,
"partition": <string>
}
}
}
}
Important
グローバル enabled が falseされている場合、個々のエンティティ レベルの enabled は関係ありません。
level-2.enabledがtrueされると、DAB はローカルのメモリ内キャッシュに加えて、構成済みの分散キャッシュ プロバイダーを使用します。 キャッシュ レベル L1L2 構成されたエンティティは、データベースに移動する前に、まずローカル キャッシュ、次に分散キャッシュをチェックします。
テレメトリ (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
オブジェクト | ❌ いいえ | - |
グローバル テレメトリの構成。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
辞書 | ❌ いいえ | None |
runtime.telemetry |
application-insights |
オブジェクト | ❌ いいえ | - |
runtime.telemetry |
open-telemetry |
オブジェクト | ❌ いいえ | - |
runtime.telemetry |
azure-log-analytics |
オブジェクト | ❌ いいえ | - |
runtime.telemetry |
file |
オブジェクト | ❌ いいえ | - |
名前空間ごとのログの詳細度を構成します。 この構成は、標準の .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 | ❌ いいえ | true |
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) は、デバッグが簡単で簡単ですが、効率は低くなります。
Azure Log Analytics (テレメトリ)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
azure-log-analytics |
オブジェクト | ❌ いいえ | - |
データ収集エンドポイントを使用して Azure Log Analytics へのログ記録を構成します。 有効にすると、DAB は構成可能な間隔でテレメトリ データをバッチで送信します。
Note
このセクションで説明する Data API Builder 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics |
enabled |
boolean | ❌ いいえ | false |
runtime.telemetry.azure-log-analytics |
dab-identifier |
文字列 | ❌ いいえ | "DabLogs" |
runtime.telemetry.azure-log-analytics |
flush-interval-seconds |
整数 | ❌ いいえ | 5 |
runtime.telemetry.azure-log-analytics |
auth |
オブジェクト | ✔️ はい* | - |
*
auth は、 enabled が trueされるときに必要です。
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics.auth |
custom-table-name |
文字列 | ✔️ はい* | null |
runtime.telemetry.azure-log-analytics.auth |
dcr-immutable-id |
文字列 | ✔️ はい* | null |
runtime.telemetry.azure-log-analytics.auth |
dce-endpoint |
文字列 | ✔️ はい* | null |
* enabled が trueされている場合は必須です。
-
dab-identifier—データ API ビルダーから取得されるログを区別するために Log Analytics に渡されるラベル。 -
flush-interval-seconds—テレメトリ データのバッチを送信するまでの時間間隔 (秒)。 -
custom-table-name—データが格納されている Azure Log Analytics のカスタム テーブルの名前。 -
dcr-immutable-id— データの収集方法を定義するデータ収集規則の不変 ID。 -
dce-endpoint—テレメトリ データの送信に使用されるデータ収集エンドポイント URL。
Format
{
"runtime": {
"telemetry": {
"azure-log-analytics": {
"enabled": <true> | <false> (default),
"dab-identifier": <string> (default: "DabLogs"),
"flush-interval-seconds": <integer> (default: 5),
"auth": {
"custom-table-name": "<string>",
"dcr-immutable-id": "<string>",
"dce-endpoint": "<string>"
}
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"azure-log-analytics": {
"enabled": true,
"dab-identifier": "MyDabInstance",
"flush-interval-seconds": 10,
"auth": {
"custom-table-name": "DabTelemetry_CL",
"dcr-immutable-id": "dcr-abc123def456",
"dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
}
}
}
}
}
ファイル (テレメトリ)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
file |
オブジェクト | ❌ いいえ | - |
ローカル ファイルへのテレメトリ ログの書き込みを構成します。 有効にすると、DAB は構成可能なローリング間隔とサイズ制限を使用して、指定されたファイル パスに構造化ログ出力を書き込みます。
Note
このセクションで説明する Data API Builder 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.telemetry.file |
enabled |
boolean | ❌ いいえ | false |
runtime.telemetry.file |
path |
文字列 | ✔️ はい* | "/logs/dab-log.txt" |
runtime.telemetry.file |
rolling-interval |
列挙型 | ❌ いいえ | "Day" |
runtime.telemetry.file |
retained-file-count-limit |
整数 | ❌ いいえ | 1 |
runtime.telemetry.file |
file-size-limit-bytes |
整数 | ❌ いいえ | 1048576 |
*
path は、 enabled が trueされるときに必要です。
ローリング間隔の値
| Value | Description |
|---|---|
Minute |
1 分ごとに新しいログ ファイル |
Hour |
1 時間ごとに新しいログ ファイル |
Day |
毎日新しいログ ファイル (既定) |
Month |
毎月の新しいログ ファイル |
Year |
毎年新しいログ ファイル |
Infinite |
新しいファイルにロールしない |
Format
{
"runtime": {
"telemetry": {
"file": {
"enabled": <true> | <false> (default),
"path": <string> (default: "/logs/dab-log.txt"),
"rolling-interval": <"Day"> (default) | <"Minute"> | <"Hour"> | <"Month"> | <"Year"> | <"Infinite">,
"retained-file-count-limit": <integer> (default: 1),
"file-size-limit-bytes": <integer> (default: 1048576)
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"file": {
"enabled": true,
"path": "/var/log/dab/dab-telemetry.txt",
"rolling-interval": "Hour",
"retained-file-count-limit": 24,
"file-size-limit-bytes": 5242880
}
}
}
}
MCP (ランタイム)
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime |
mcp |
オブジェクト | ❌ いいえ | - |
データベース エンティティを AI エージェント用の MCP ツールとして公開する SQL モデル コンテキスト プロトコル (MCP) サーバーを構成します。
Note
このセクションで説明する Data API Builder 2.0 の機能は現在プレビュー段階であり、一般公開前に変更される可能性があります。 詳細については、「 バージョン 2.0 の新機能」を参照してください。
入れ子になったプロパティ
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.mcp |
enabled |
boolean | ❌ いいえ | true |
runtime.mcp |
path |
文字列 | ❌ いいえ | "/mcp" |
runtime.mcp |
description |
文字列 | ❌ いいえ | null |
runtime.mcp |
dml-tools |
boolean または object | ❌ いいえ | true |
dml-tools プロパティは、すべてのツールを有効または無効にするブール値、または個々のツールを制御するオブジェクトを受け取ります。
| Parent | Property | タイプ | Required | Default |
|---|---|---|---|---|
runtime.mcp.dml-tools |
describe-entities |
boolean | ❌ いいえ | true |
runtime.mcp.dml-tools |
create-record |
boolean | ❌ いいえ | true |
runtime.mcp.dml-tools |
read-records |
boolean | ❌ いいえ | true |
runtime.mcp.dml-tools |
update-record |
boolean | ❌ いいえ | true |
runtime.mcp.dml-tools |
delete-record |
boolean | ❌ いいえ | true |
runtime.mcp.dml-tools |
execute-entity |
boolean | ❌ いいえ | true |
runtime.mcp.dml-tools |
aggregate-records |
boolean または object | ❌ いいえ | true |
aggregate-records ツールは、ブール値またはより多くの設定を持つオブジェクトを受け入れます。
| Parent | Property | タイプ | Required | Default | 範囲 |
|---|---|---|---|---|---|
runtime.mcp.dml-tools.aggregate-records |
enabled |
boolean | ❌ いいえ | true |
|
runtime.mcp.dml-tools.aggregate-records |
query-timeout |
整数 | ❌ いいえ | 30 |
1 ~ 600 秒 |
Format
{
"runtime": {
"mcp": {
"enabled": <true> (default) | <false>,
"path": <string> (default: "/mcp"),
"description": <string>,
"dml-tools": {
"describe-entities": <true> | <false>,
"create-record": <true> | <false>,
"read-records": <true> | <false>,
"update-record": <true> | <false>,
"delete-record": <true> | <false>,
"execute-entity": <true> | <false>,
"aggregate-records": {
"enabled": <true> | <false>,
"query-timeout": <integer; default: 30>
}
}
}
}
}
Example
{
"runtime": {
"mcp": {
"enabled": true,
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": {
"enabled": true,
"query-timeout": 30
}
}
}
}
}
すべての DML ツールを一度に有効または無効にするには、 "dml-tools" を true または false に設定します。
ランタイム レベルでツールを無効にすると、ツールは MCP tools/list 応答に表示されないため、エンティティ レベルのアクセス許可に関係なく呼び出すことはできません。 個々の DML ツールの詳細については、「 データ操作言語 (DML) ツール」を参照してください。
CLI を使用する
dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true
正常性 (ランタイム)
| 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
}
}