Переменные окружения
Переменные окружения
Заголовок раздела «Переменные окружения»Доступ к переменным окружения для конфигурации, секретов и настроек среды выполнения.
Переменные должны быть определены в Environment System перед использованием. Система контролирует, какие бэкенды хранения (ОС, файл, память) предоставляют значения и являются ли переменные только для чтения.
Загрузка
Заголовок раздела «Загрузка»local env = require("env")Получить значение переменной окружения.
-- Получить строку подключения к БДlocal db_url = env.get("DATABASE_URL")if not db_url then return nil, errors.new("INVALID", "DATABASE_URL not configured")end
-- Получить со значением по умолчаниюlocal port = env.get("PORT") or "8080"local host = env.get("HOST") or "localhost"
-- Получить секретыlocal api_key = env.get("API_SECRET_KEY")local jwt_secret = env.get("JWT_SECRET")
-- Конфигурацияlocal log_level = env.get("LOG_LEVEL") or "info"local debug_mode = env.get("DEBUG") == "true"| Параметр | Тип | Описание |
|---|---|---|
key | string | Имя переменной |
Возвращает: string, error
Возвращает nil, error если переменная не существует.
Установить переменную окружения.
-- Установить конфигурацию среды выполненияenv.set("APP_MODE", "production")
-- Переопределить для тестированияenv.set("API_URL", "http://localhost:8080")
-- Установить по условиюif is_development then env.set("LOG_LEVEL", "debug")end| Параметр | Тип | Описание |
|---|---|---|
key | string | Имя переменной |
value | string | Устанавливаемое значение |
Возвращает: boolean, error
get_all
Заголовок раздела «get_all»Получить все доступные переменные окружения.
local vars = env.get_all()
-- Логировать конфигурацию (не логируйте секреты)for key, value in pairs(vars) do if not key:match("SECRET") and not key:match("KEY") then logger.debug("env", {[key] = value}) endend
-- Проверить обязательные переменныеlocal required = {"DATABASE_URL", "REDIS_URL", "API_KEY"}for _, key in ipairs(required) do if not vars[key] then return nil, errors.new("INVALID", "Missing required env var: " .. key) endendВозвращает: table, error
Разрешения
Заголовок раздела «Разрешения»Доступ к окружению подчиняется вычислению политики безопасности.
Действия безопасности
Заголовок раздела «Действия безопасности»| Действие | Ресурс | Описание |
|---|---|---|
env.get | Имя переменной | Чтение переменной окружения |
env.set | Имя переменной | Запись переменной окружения |
env.get_all | * | Список всех переменных |
Проверка доступа
Заголовок раздела «Проверка доступа»local security = require("security")
if security.can("env.get", "DATABASE_URL") then local url = env.get("DATABASE_URL")endСм. Модель безопасности для настройки политик.
| Условие | Kind | Повторяемо |
|---|---|---|
| Пустой ключ | errors.INVALID | нет |
| Переменная не найдена | errors.NOT_FOUND | нет |
| Доступ запрещён | errors.PERMISSION_DENIED | нет |
См. Обработка ошибок для работы с ошибками.
См. также
Заголовок раздела «См. также»- Environment System — настройка бэкендов хранения и определений переменных