데이터 API 작성기를 실행하려면 하나 이상의 구성 파일이 필요합니다. 이 JSON 기반 파일은 환경 설정에서 엔터티 정의에 이르기까지 API 설정을 정의합니다. 이 속성은 $schema 파일의 나머지 부분에 대해 스키마 유효성 검사를 사용하도록 설정하는 속성으로 시작합니다.
최상위 속성
| Property | Description |
|---|---|
| $schema | 이 구성에 대한 JSON 스키마의 URI입니다. |
| 데이터 원본 | 데이터베이스 연결 설정을 포함하는 개체입니다. |
| data-source-files | 다른 구성 파일 경로의 배열입니다. |
| runtime | 런타임 동작을 구성하는 개체입니다. |
| entities | REST 또는 GraphQL을 통해 노출되는 모든 엔터티를 정의하는 개체입니다. |
| autoentities | 일치하는 데이터베이스 개체를 엔터티로 자동으로 노출하는 패턴 기반 규칙을 정의하는 개체입니다(MSSQL만 해당). |
| azure-key-vault | 비밀 관리를 위한 Azure Key Vault 구성입니다. |
데이터 원본 속성
| Property | Description |
|---|---|
| 데이터 원본 | 데이터베이스 연결 설정을 포함하는 개체입니다. |
| data-source.database-type | 백 엔드에 사용되는 데이터베이스 형식(mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql). |
| data-source.connection-string | 선택한 데이터베이스 형식에 대한 연결 문자열입니다. |
| data-source.options | 데이터베이스별 옵션 및 고급 설정. |
| data-source.health | 데이터 원본에 대한 상태 검사 구성입니다. |
| data-source-files | 다른 구성 파일 경로의 배열입니다. |
런타임 속성
| Property | Description |
|---|---|
| runtime | 런타임 동작을 구성하는 개체입니다. |
| runtime.pagination | API 응답에 대한 페이지 매김 설정입니다. |
| runtime.rest | REST API 전역 구성. |
| runtime.graphql | GraphQL API 전역 구성. |
| runtime.cache | 전역 응답 캐싱 구성입니다. |
| runtime.compression | HTTP 응답 압축 구성. |
| runtime.mcp | MCP(모델 컨텍스트 프로토콜) 전역 구성. |
| runtime.telemetry | 원격 분석, 로깅 및 모니터링 구성. |
| runtime.health | 전역 상태 검사 구성. |
엔터티 속성
| Property | Description |
|---|---|
| entities | REST 또는 GraphQL을 통해 노출되는 모든 엔터티를 정의하는 개체입니다. |
| entities.entity-name.source | 엔터티에 대한 데이터베이스 원본 세부 정보입니다. |
| entities.entity-name.rest | 엔터티에 대한 REST API 구성입니다. |
| entities.entity-name.graphql | 엔터티에 대한 GraphQL API 구성입니다. |
| entities.entity-name.permissions | 엔터티에 대한 권한 및 액세스 제어입니다. |
| entities.entity-name.relationships | 다른 엔터티와의 관계입니다. |
| entities.entity-name.cache | 엔터티 수준 캐싱 구성입니다. |
| entities.entity-name.health | 엔터티 수준 상태 검사 구성입니다. |
| entities.entity-name.mcp | 엔터티 수준 MCP 구성. |
| entities.entity-name.fields | 필드 메타데이터, 별칭 및 기본 키 지정입니다. |
| entities.entity-name.description | 사람이 읽을 수 있는 엔터티 설명입니다. |
Schema
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
$schema |
string | ✔️ 예 | None |
각 구성 파일은 유효성 검사를 위해 JSON 스키마를 지정하는 속성으로 $schema 시작합니다.
Format
{
"$schema": <string>
}
Example
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json"
}
Tip
최신 스키마는 항상 .에서 https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json사용할 수 있습니다.
Versioning
스키마 파일은 특정 URL에서 사용할 수 있으므로 올바른 버전 또는 사용 가능한 최신 스키마를 사용할 수 있습니다.
https://github.com/Azure/data-api-builder/releases/download/<VERSION>-<suffix>/dab.draft.schema.json
VERSION-suffix 원하는 버전으로 바꿉 있습니다.
https://github.com/Azure/data-api-builder/releases/download/v0.3.7-alpha/dab.draft.schema.json
데이터 원본 파일
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
data-source-files |
문자열 배열 | ❌ 아니요 | None |
데이터 API 작성기에서는 최상위 파일 관리 설정으로 지정된 여러 구성 파일을 지원합니다 runtime . 모든 구성은 동일한 JSON 스키마를 공유하므로 runtime 오류 없이 모든 파일에서 설정을 허용합니다. 더 나은 조직을 위해 엔터티를 분할합니다.
Format
{
"data-source-files": [ "<string>" ]
}
여러 구성 규칙
- 모든 구성 파일에는
data-source속성이 포함되어야 합니다. - 모든 구성 파일에는 속성(또는
autoentities)이entities포함되어야 합니다. - 최상위 구성에는 다음이 포함되어
runtime야 합니다. - 자식 구성에는 포함
runtime할 수 있지만 데이터 API 작성기에서는 이를 무시합니다. - 자식 구성 파일에는 자체 자식 파일이 포함될 수 있습니다.
- 구성 파일은 하위 폴더로 구성할 수 있습니다.
- 엔터티 이름은 모든 구성 파일에서 고유해야 합니다.
- 서로 다른 구성 파일의 엔터티 간 관계는 지원되지 않습니다.
Examples
{
"data-source-files": [
"dab-config-2.json",
"my-folder/dab-config-3.json",
"my-folder/my-other-folder/dab-config-4.json"
]
}
자동 엔티티
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
autoentities |
객체 | ❌ 아니요 | None |
이 섹션에서는 autoentities 시작 시 일치하는 데이터베이스 개체를 DAB 엔터티로 자동으로 노출하는 패턴 기반 규칙을 정의합니다. 개체의 각 키는 패턴, 템플릿 및 사용 권한을 포함하는 명명된 정의입니다.
중요합니다
자동 엔터티에서는 현재 MSSQL 데이터 원본만 지원합니다.
autoentities 이 경우 섹션이 entities 더 이상 필요하지 않습니다. 구성 스키마는 둘 중 하나 autoentities 또는 entities 둘 다를 허용합니다. 둘 다 있는 경우 명시적으로 정의된 엔터티가 동일한 이름의 자동 엔터티 일치보다 우선합니다.
Format
{
"autoentities": {
"<definition-name>": {
"patterns": {
"include": [ "<string>" ],
"exclude": [ "<string>" ],
"name": "<string>"
},
"template": {
"mcp": { "dml-tools": <boolean> },
"rest": { "enabled": <boolean> },
"graphql": { "enabled": <boolean> },
"health": { "enabled": <boolean> },
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level": "<string>"
}
},
"permissions": [
{
"role": "<string>",
"actions": [ { "action": "<string>" } ]
}
]
}
}
}
속성
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
patterns |
객체 | ✔️ 예 | None | 포함, 제외 및 명명 규칙을 정의합니다. |
patterns.include |
문자열 배열 | ❌ 아니요 | ["%.%"] |
포함할 개체에 대한 MSSQL LIKE 패턴입니다. |
patterns.exclude |
문자열 배열 | ❌ 아니요 | null |
제외할 개체에 대한 MSSQL LIKE 패턴입니다. |
patterns.name |
string | ❌ 아니요 | "{object}" |
사용 하 여 {schema} 보간 패턴 및 {object}. |
template |
객체 | ❌ 아니요 | None | 일치하는 모든 엔터티에 적용되는 기본 구성입니다. |
template.mcp |
객체 | ❌ 아니요 | None | 일치하는 엔터티에 대한 MCP 설정입니다. |
template.mcp.dml-tools |
부울 | ❌ 아니요 | true |
MCP DML(데이터 조작 언어) 도구를 사용하도록 설정합니다. |
template.rest |
객체 | ❌ 아니요 | None | 일치하는 엔터티에 대한 REST 설정입니다. |
template.rest.enabled |
부울 | ❌ 아니요 | true |
REST 엔드포인트를 사용하도록 설정합니다. |
template.graphql |
객체 | ❌ 아니요 | None | 일치하는 엔터티에 대한 GraphQL 설정입니다. |
template.graphql.enabled |
부울 | ❌ 아니요 | true |
GraphQL을 사용하도록 설정합니다. |
template.health |
객체 | ❌ 아니요 | None | 일치하는 엔터티에 대한 상태 검사 설정입니다. |
template.health.enabled |
부울 | ❌ 아니요 | false |
상태 검사를 사용하도록 설정합니다. |
template.cache |
객체 | ❌ 아니요 | None | 일치하는 엔터티에 대한 캐시 설정입니다. |
template.cache.enabled |
부울 | ❌ 아니요 | false |
응답 캐싱을 사용하도록 설정합니다. |
template.cache.ttl-seconds |
정수 (integer) | ❌ 아니요 | null |
Time-to-Live(초)를 캐시합니다. |
template.cache.level |
string | ❌ 아니요 | "L1L2" |
캐시 수준입니다. |
permissions |
배열 | ❌ 아니요 | None | 일치하는 모든 엔터티에 적용된 권한입니다. |
Example
{
"autoentities": {
"my-def": {
"patterns": {
"include": [ "dbo.%" ],
"exclude": [ "dbo.internal%" ],
"name": "{schema}_{object}"
},
"template": {
"rest": { "enabled": true },
"graphql": { "enabled": true },
"cache": { "enabled": true, "ttl-seconds": 30, "level": "l1l2" }
},
"permissions": [
{ "role": "anonymous", "actions": [ { "action": "read" } ] }
]
}
}
}
이 구성을 사용하면 스키마의 dbo 모든 테이블과 뷰(일치하는 dbo.internal%테이블 제외)가 DAB 엔터티로 자동으로 노출됩니다. 각 엔터티는 패턴을 사용하여 {schema}_{object} 이름이 지정되고(예: dbo_ProductsREST 및 GraphQL을 사용하도록 설정), 30초 TTL(Time to Live)으로 캐싱을 사용하고, 역할에 대한 액세스 권한을 anonymous 부여합니다read.
Tip
CLI dab auto-config-simulate 에서 자동 엔티티 정의를 만들고 변경 내용을 커밋하기 전에 일치하는 개체를 미리 보는 데 사용합니다dab auto-config. 자세한 내용은 버전 2.0의 새로운 내용을 참조하세요.
Azure Key Vault (애저 키 볼트)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
$root |
azure-key-vault |
객체 | ❌ 아니요 | None |
비밀을 관리하기 위한 Azure Key Vault 통합을 구성합니다. 있는 경우 속성이 endpoint 필요합니다.
중첩 속성
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
azure-key-vault |
endpoint |
string | ✔️ 예 | None |
azure-key-vault |
retry-policy |
객체 | ❌ 아니요 | None |
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
azure-key-vault.retry-policy |
mode |
enum(fixed | exponential) |
❌ 아니요 | "exponential" |
azure-key-vault.retry-policy |
max-count |
정수 (integer) | ❌ 아니요 | 3 |
azure-key-vault.retry-policy |
delay-seconds |
정수 (integer) | ❌ 아니요 | 1 |
azure-key-vault.retry-policy |
max-delay-seconds |
정수 (integer) | ❌ 아니요 | 60 |
azure-key-vault.retry-policy |
network-timeout-seconds |
정수 (integer) | ❌ 아니요 | 60 |
Azure Key Vault에 저장된 비밀을 참조하려면 구성 값의 @akv() 함수를 사용합니다. 데이터 API 작성기에서는 구성된 엔드포인트를 사용하여 시작 시 이러한 참조를 확인합니다.
Format
{
"azure-key-vault": {
"endpoint": "<string>",
"retry-policy": {
"mode": <"exponential"> (default) | <"fixed">,
"max-count": <integer; default: 3>,
"delay-seconds": <integer; default: 1>,
"max-delay-seconds": <integer; default: 60>,
"network-timeout-seconds": <integer; default: 60>
}
}
}
Example
{
"azure-key-vault": {
"endpoint": "https://my-vault.vault.azure.net/",
"retry-policy": {
"mode": "exponential",
"max-count": 5,
"delay-seconds": 2,
"max-delay-seconds": 120,
"network-timeout-seconds": 90
}
},
"data-source": {
"database-type": "mssql",
"connection-string": "@akv('sql-connection-string')"
}
}