次の方法で共有


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 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-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> (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

プロパティのメモ

  • グローバル 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>
    }
  }
}

Note

Static Web Apps (プレビュー) を使用してデータ API ビルダーをデプロイすると、Azure サービスによって、URL に別のサブパス /data-api が自動的に挿入されます。 この動作により、既存の静的 Web アプリ機能との互換性が確保されます。 結果のエンドポイントは /data-api/api/<entity>。 このメモは、静的 Web アプリにのみ関連します。

例: 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> (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操作を実行する機能を明示的に付与します。 他のアクション ( createupdatedeleteなど) の実行や、 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 を統合する開発者向けです。 トークンの予想される audienceissuer を柔軟に構成できます。

Custom プロバイダーでは、Authorization ヘッダーに標準の JWT ベアラー トークンが必要です。 EntraId プロバイダーとの主な違いは、データ API ビルダーの構成ファイルで有効なissueraudienceを構成することです。 プロバイダーは、信頼された機関がトークンを発行したことを確認してトークンを検証します。 ユーザーのロールは、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.providerSimulatorされているときにruntime.host.modeproductionに設定されている場合、Data API ビルダーは起動に失敗します。

"host": {
  "mode": "production", // or "development"
  "authentication": {
    "provider": "Simulator" 
  }
}

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

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 {
      ...
    }
  }
}

キャッシュ (ランタイム)

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

グローバル enabledfalseされている場合、個々のエンティティ レベルの 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

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

Example

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