콘텐츠로 이동

환경 변수

설정 값, 비밀, 런타임 설정을 위한 환경 변수에 접근합니다.

변수는 접근하기 전에 환경 시스템에서 정의되어야 합니다. 시스템은 어떤 스토리지 백엔드(OS, 파일, 메모리)가 값을 제공하고 변수가 읽기 전용인지 여부를 제어합니다.

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"
파라미터타입설명
keystring변수 이름

반환: 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
파라미터타입설명
keystring변수 이름
valuestring설정할 값

반환: boolean, error

접근 가능한 모든 환경 변수를 가져옵니다.

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})
end
end
-- 필수 변수 확인
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)
end
end

반환: 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

정책 설정은 보안 모델을 참조하세요.

조건종류재시도 가능
빈 키errors.INVALID아니오
변수를 찾을 수 없음errors.NOT_FOUND아니오
권한 거부됨errors.PERMISSION_DENIED아니오

에러 처리는 에러 처리를 참조하세요.