環境変数
設定値、シークレット、ランタイム設定のための環境変数へのアクセス。
変数にアクセスする前に環境システムで定義する必要がある。システムは値を提供するストレージバックエンド(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"| パラメータ | 型 | 説明 |
|---|---|---|
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
Section titled “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
環境アクセスはセキュリティポリシー評価の対象。
セキュリティアクション
Section titled “セキュリティアクション”| アクション | リソース | 説明 |
|---|---|---|
env.get | 変数名 | 環境変数を読み取り |
env.set | 変数名 | 環境変数を書き込み |
env.get_all | * | すべての変数を一覧 |
アクセス確認
Section titled “アクセス確認”local security = require("security")
if security.can("env.get", "DATABASE_URL") then local url = env.get("DATABASE_URL")endポリシー設定についてはセキュリティモデルを参照。
| 条件 | 種別 | 再試行可能 |
|---|---|---|
| キーが空 | errors.INVALID | no |
| 変数が見つからない | errors.NOT_FOUND | no |
| 権限拒否 | errors.PERMISSION_DENIED | no |
エラーの処理についてはエラー処理を参照。
- 環境システム - ストレージバックエンドと変数定義の設定