Variables de Entorno

El módulo env lee y actualiza las variables de entorno expuestas por el entorno de ejecución.

Esta es una referencia de API. Sus fragmentos son operaciones aisladas y suponen que las variables y políticas de seguridad indicadas ya existen.

Las variables deben definirse en el Sistema de Entorno antes de poder acceder a ellas. El sistema controla qué backends de almacenamiento (OS, archivo, memoria) proporcionan valores y si las variables son de solo lectura.

Carga

local env = require("env")

get

Obtiene el valor de una variable de entorno.

-- Obtener cadena de conexión de base de datos
local db_url = env.get("DATABASE_URL")
if not db_url then
    return nil, errors.new({ kind = errors.INVALID, message = "DATABASE_URL not configured" })
end

local port, port_err = get_or("PORT", "8080")
if port_err then return nil, port_err end
Parámetro Tipo Descripción
key string Nombre de variable

Devuelve: string, error

Devuelve nil, error si la variable no existe.

set

Establece una variable de entorno.

-- Set runtime configuration
local updated, set_err = env.set("APP_MODE", "production")
if set_err then return nil, set_err end
return updated
Parámetro Tipo Descripción
key string Nombre de variable
value string Valor a establecer

Devuelve: boolean, error

get_all

Obtiene todas las variables de entorno accesibles.

local logger = require("logger")

local vars, vars_err = env.get_all()
if vars_err then return nil, vars_err end

-- Log names only. Values such as connection URLs may contain credentials even
-- when their keys do not include words like SECRET or KEY.
local accessible_keys = {}
for key in pairs(vars) do table.insert(accessible_keys, key) end
logger:debug("accessible environment variables", {keys = accessible_keys})

-- Check required variables
local required = {"DATABASE_URL", "REDIS_URL", "API_KEY"}
for _, key in ipairs(required) do
    if not vars[key] then
        return nil, errors.new({ kind = errors.INVALID, message = "Missing required env var: " .. key })
    end
end

Devuelve: table, error

Permisos

El acceso a entorno esta sujeto a evaluacion de politica de seguridad.

Acciones de Seguridad

Accion Recurso Descripción
env.get Nombre de variable Leer variable de entorno
env.set Nombre de variable Escribir variable de entorno

get_all no tiene una acción de seguridad dedicada: devuelve solo las variables para las que la acción env.get está permitida, filtrando cada nombre de variable a través de env.get.

Verificar Acceso

local security = require("security")

if security.can("env.get", "DATABASE_URL") then
    local url = env.get("DATABASE_URL")
end

Consulte Modelo de Seguridad para configuración de politicas.

Errores

Condición Tipo Reintentable
Clave vacia errors.INVALID no
Variable no encontrada errors.NOT_FOUND no
Permiso denegado errors.PERMISSION_DENIED no

Consulte Manejo de Errores para trabajar con errores.

Vea También