次の方法で共有


Runtime

ランタイムの動作を決定する構成設定。

ページ設定

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 応答圧縮レベル (optimalfastest、または none)

テレメトリ設定

Property Default Description
runtime.telemetry.application-insights.connection-string null Application Insights 接続文字列
runtime.telemetry.application-insights.enabled true 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.open-telemetry.enabled true OpenTelemetry を有効または無効にします
runtime.telemetry.azure-log-analytics.enabled false Azure Log Analytics を有効または無効にする
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" Azure Log Analytics での DAB の識別子
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 ログ バッチ プッシュの間隔 (秒)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Azure Log Analytics のカスタム テーブル名
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null データ収集規則の変更できない ID
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null データ収集エンドポイントの URL
runtime.telemetry.file.enabled 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 ローリング前の最大ファイル サイズ (バイト単位)
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)

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-introspectionfalse に設定します。
  • 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

プロパティのメモ

  • グローバル enabledfalseされている場合、個々のエンティティ レベルの 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中は無視されます。 その結果、INSERTdefault()されている場合、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.modedevelopmentされている場合にのみ機能します。 シミュレーターが実稼働モードで構成されている場合、DAB の起動に失敗します。

ロールの選択

Simulator を除くすべてのプロバイダーについて、 X-MS-API-ROLE ヘッダーは、認証されたユーザーの要求から使用するロールを選択します。 省略した場合、要求は Authenticated システム ロールを使用します。 ロールの評価の詳細については、「 承認とロール」を参照してください。

JWT (認証ホスト ランタイム)

Parent Property タイプ Required Default
runtime.host.authentication jwt オブジェクト ❌ いいえ -

グローバル JSON Web トークン (JWT) の構成。

Data API Builder での JSON Web トークンのサポートの図。

入れ子になったプロパティ

Parent Property タイプ Required Default
runtime.host.authentication.jwt audience 文字列 ✔️ はい* None
runtime.host.authentication.jwt issuer 文字列 ✔️ はい* None

*audienceオブジェクトが存在する場合は、issuerjwtの両方が必要です。 プロバイダーがjwtEntraID、または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-relativetrueされている場合、改ページ位置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

グローバル enabledfalseされている場合、個々のエンティティ レベルの enabled は関係ありません。

level-2.enabledtrueされると、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 は、 enabledtrueされるときに必要です。

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

* enabledtrueされている場合は必須です。

  • 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 は、 enabledtrueされるときに必要です。

ローリング間隔の値

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

グローバル enabledfalseされている場合、個々のエンティティ レベルの enabled は関係ありません。

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}