다음을 통해 공유


데이터 API 작성기 구성 스키마 참조

데이터 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')"
  }
}