Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Построитель API данных (DAB) позволяет держать секреты (например, строки подключения к базе данных) вне dab-config.json путем замены значений во время загрузки. Первый поддерживаемый механизм — это @env() функция, которая разрешает переменные окружения из окружения процесса хоста или локального .env файла.
См. также: the @akv() function
Что @env() делает
Поместите ссылку на переменную среды в любом месте, где ожидается строковое значение:
{
"data-source": {
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Во время загрузки конфигурации DAB сканирует строковые значения @env('VAR_NAME') шаблона и заменяет маркер значением переменной VAR_NAMEсреды.
Источники значений
| Исходный материал | Description |
|---|---|
| ОС или среда обработки | Стандартные переменные среды присутствуют при запуске процесса DAB. |
Файл .env |
Файл с открытым текстом со строками NAME=VALUE в каталоге конфигурации (для удобства локальной разработки). |
Замечание
Файл .env переопределяет существующие переменные среды процесса или системы, когда оба определяют одно и то же имя.
Если вы предоставляете локальный .env файл для разработки, его записи используются для поиска @env( var-name, не вызывая локальную среду.
Пример файла .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) обрабатывается с помощью потребляемой конфигурации или логики выполнения.
Устранение неполадок
| 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 | Сводка |
|---|---|
| Синтаксис | @env('variable-name') |
| Файл моделирования |
.envсо строками name=value |
Сочетание с @env() |
Supported. |
Отзыв
Используется @env() для хранения секретов и значений, относящихся к среде, вне файлов конфигурации. Совместите это с упорядоченным управлением секретами, такими как хранилища переменных CI/CD или конфигурации контейнеров, для безопасного и гибкого развертывания. Для использования корпоративного хранилища секретов объедините его с