Funciones y secretos
Una función es un archivo JavaScript (módulo ES), guardado por el Cloud con su versión y SHA-256, y ejecutado por invocación como un proceso aparte en el host del Cloud — Node (o Deno si está presente). Debe exportar por defecto un handler:
export default async function handler(req) { // req.body es el JSON que enviaste; req.headers_subset, req.project_id y req.function vienen rellenos return { status: 200, body: { hello: req.body?.name ?? "world" } };}Invoca con POST …/functions/{name}/invoke y un cuerpo JSON (≤ 32 KiB). La respuesta propia de la función vuelve con su estado y cuerpo y una cabecera X-Hyphae-Function; un error del Cloud (tiempo agotado, salida inválida, runtime ausente) vuelve como un error normal del Cloud y el Studio lo etiqueta el cloud respondió.
Qué es exactamente el aislamiento v0
Sección titulada «Qué es exactamente el aislamiento v0»- Un proceso aparte por invocación con su propio grupo de procesos y un entorno de exactamente
CLOUD_ORIGIN,PROJECT_ID,FUNCTION_NAMEy los secretos del proyecto. Nunca una clave de proyecto. - Un límite de tiempo (
CLOUDD_FN_TIMEOUT_MS, 5 s por defecto): se termina el grupo de procesos y quien invoca recibe504 function_timeout. - E/S acotada: cuerpo de petición ≤ 32 KiB, un objeto JSON ≤ 1 MiB en stdout, fuente ≤ 512 KiB; cualquier otra cosa es
502 function_bad_output. - Concurrencia acotada: dos invocaciones por proyecto a la vez,
429 function_busymás allá. - Lecturas del sistema de archivos restringidas al directorio de la función donde el runtime lo permite (
--permissionde Node); red restringida solo bajo Deno. Bajo Node la función tiene la red del host.
Es código de confianza del proyecto, no un sandbox. Puede leer lo que el usuario del daemon puede leer, alcanzar lo que el host alcanza y consumir CPU hasta el límite de tiempo. El Cloud no afirma frontera de contenedor, VM, seccomp ni cgroup. Ver qué no es.
Secretos
Sección titulada «Secretos»Los secretos son valores del propietario inyectados en cada invocación del proyecto como variables de entorno NAME=value (después de CLOUD_ORIGIN, PROJECT_ID, FUNCTION_NAME, que no pueden sobrescribirse). Solo la sesión del propietario puede crearlos, rotarlos, listarlos o borrarlos, y solo el nombre vuelve alguna vez — ninguna ruta, recibo ni línea de log lleva un valor. Guarda el mismo nombre otra vez para rotarlo (la versión aumenta).
En reposo, los valores se cifran en el almacén de control con XChaCha20-Poly1305 bajo la clave de proceso del daemon, ligados al proyecto y al nombre. Es cifrado con clave de proceso, no un KMS: quien tenga la clave puede descifrar. Los secretos no están probados por Native ni forman parte de los snapshots. Límites: 16 por proyecto, 4 KiB cada uno, nombres A-Z 0-9 _ que empiezan por letra.