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
지침:
-
.env를dab-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()과 결합하여 비밀을 중앙 집중화합니다.