다음을 통해 공유


데이터 API 작성기에서 환경 변수 대체에 사용 @env()

DAB(데이터 API 작성기)를 사용하면 로드 시 값을 대체하여 비밀(예: 데이터베이스 연결 문자열)을 dab-config.json에서 제외할 수 있습니다. 첫 번째 지원되는 메커니즘은 호스트 프로세스 환경 또는 로컬 @env() 파일에서 환경 변수를 확인하는 함수입니다.env.

참고 항목: the @akv() function.

수행되는 기능 @env()

문자열 값이 필요한 위치에 환경 변수에 대한 참조를 배치합니다.

{
  "data-source": {
    "connection-string": "@env('SQL_CONN_STRING')"
  }
}

구성 로드 시 DAB는 패턴에 대한 @env('VAR_NAME') 문자열 값을 검색하고 토큰을 환경 변수 VAR_NAME의 값으로 바꿉니다.

값의 출처

출처 Description
OS/프로세스 환경 DAB 프로세스가 시작될 때 표시되는 표준 환경 변수입니다.
.env 파일 구성 디렉터리에 있는 일반 텍스트 파일로, 로컬 개발 환경의 편의를 위해 NAME=VALUE 줄을 포함하고 있습니다.

비고

.env 파일은 둘 다 동일한 이름을 정의할 때 기존 프로세스/시스템 환경 변수를 재정의합니다. 개발을 위해 로컬 .env 파일을 제공하는 경우 해당 항목은 로컬 환경을 호출하지 않고 'var-name') 조회를 충족 @env(하는 데 사용됩니다.

예제 .env 파일:

SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key

지침:

  • .envdab-config.json와 인접하게 유지하세요 (또는 시작 프로세스에서 예상하는 위치로).
  • .env.gitignore에 추가합니다.
  • (지원되는 경우 확인)으로 # 시작하는 빈 줄과 줄은 일반적으로 무시됩니다. 주석 지원을 문서화하기 전에 확인합니다.
  • Linux/macOS에서 이름은 대/소문자를 구분합니다. Windows에서는 사실상 대/소문자를 구분하지 않습니다.

구성에서 @env() 사용하기

기본 대체

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@env('SQL_CONN_STRING')"
  }
}

@akv()와 결합하여

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@akv('prod-sql-connection')"
  }
}

저장 프로시저 매개 변수

{
  "entities": {
    "RunJob": {
      "source": {
        "object": "dbo.RunJob",
        "type": "stored-procedure",
        "parameters": {
          "intParam": "@env('SP_PARAM1_INT')",
          "boolParam": "@env('SP_PARAM2_BOOL')"
        }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "execute" ] }
      ]
    }
  }
}

환경 값은 문자열로 대체됩니다. 구문 분석 이후(int 또는 bool로 변경)는 사용 구성 또는 런타임 논리에 의해 처리합니다.

Troubleshooting

Scenario 결과
변수가 발견되었습니다. 대체에 성공했습니다.
변수 없음 구성 로드가 실패할 수 있습니다.
변수를 찾을 수 없음 빈 문자열로 대체됩니다.
서로 다른 속성의 여러 @env() 항목 모두 독립적으로 해결되었습니다.
숫자 또는 불리언 값이 예상되는 곳에서 사용됨 문자열로 대체되는 값입니다. 구문 분석이 성공할 수 있습니다.
잘못된 패턴(예: @env(DB_VAR) 따옴표 누락) 리터럴 문자열로 처리됩니다.

전체 예제

dab-config.json:

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@env('SQL_CONN_STRING')"
  },
  "runtime": {
    "rest": { "enabled": true }
  },
  "entities": {
    "Books": {
      "source": "dbo.Books",
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

.env:

DB_TYPE=mssql
SQL_CONN_STRING=Server=localhost;Database=BooksDb;User Id=app;Password=StrongPassword!;

중요합니다

비밀이 포함된 파일을 커밋 .env 하지 마세요. |

빠른 참조

Item 요약
Syntax @env('variable-name')
시뮬레이션 파일 .env name=value 선과 함께
@env()와(과) 혼합하기 Supported.

검토

비밀 및 환경별 값을 구성 파일에서 제외하는 데 사용합니다 @env() . 안전하고 유연한 배포를 위해 CI/CD 변수 저장소 또는 컨테이너 정의와 같은 훈련된 비밀 관리와 페어링합니다. 엔터프라이즈 보관소를 사용할 경우 기능 @akv()과 결합하여 비밀을 중앙 집중화합니다.