Saltearse al contenido

Funciones en el borde

Las funciones en el borde ejecutan tu código directamente en Tero Services, sin servidor de origen. Una ruta de tipo Función (o una sub-ruta de un dominio combinado) recibe la solicitud, corre tu función y devuelve la respuesta.

Sirven para lógica liviana: formularios, redirecciones con lógica, autenticación, pruebas A/B, webhooks y pequeñas API, sin levantar ni mantener un backend.

EntornoPensado para
JavaScript y TypeScript integradoLógica liviana con arranque inmediato. Es el entorno por defecto
Proceso JavaScript y TypeScript con npmFunciones que necesitan paquetes de npm o más del ecosistema del lenguaje. Los procesos se mantienen activos entre solicitudes
Binario compiladoCódigo propio en cualquier lenguaje (Go, Rust, etc.) que recibe la solicitud y devuelve la respuesta como JSON por entrada y salida estándar
Módulo nativoCargas de máximo rendimiento, desarrolladas con el SDK de Tero. Se incorporan bajo coordinación con Host Admin

En el entorno integrado se admiten dos formatos:

// Formato síncrono
function handle(request) {
return { status: 200, body: "Hola desde Tero" };
}
// Formato de módulo, al estilo de Cloudflare Workers
export default {
async fetch(request, env, ctx) {
return new Response("Hola desde Tero", { status: 200 });
}
};

Los archivos .ts se aceptan directamente: se les quitan los tipos antes de ejecutar, sin verificación de tipos. Corré el chequeo de tipos en tu propio flujo de desarrollo.

Cada invocación corre aislada: las funciones no comparten estado global entre solicitudes. El entorno incluye console.* (los mensajes quedan en el registro de la invocación), temporizadores, URL, buffers y utilidades de criptografía (hash, HMAC, AES-GCM).

fetch hacia servicios externos está disponible cuando se habilita para tu cuenta. Por seguridad, no permite alcanzar direcciones de redes privadas.

Tu función recibe un objeto solicitud con los datos ya procesados:

CampoContenido
methodMétodo HTTP (GET, POST, etc.)
pathPath solicitado
queryParámetros de la query string, ya separados
headersEncabezados de la solicitud, con nombres en minúsculas
bodyCuerpo como texto. Los cuerpos binarios llegan en base64
paramsParámetros extraídos del patrón de path, cuando el patrón los define
extraDatos que agrega Tero: dominio, URL completa, si la conexión es TLS, identificador de la solicitud y, cuando se conocen, la IP y el país del visitante

Y devuelve un objeto respuesta con status (200 por defecto), headers, body (en base64 si es binario) y, opcionalmente, redirect, que responde con una redirección 302 a esa URL.

Cada función define sus límites, que Tero aplica en cada invocación:

  • Tiempo máximo de ejecución: 5 segundos por defecto. Superado el límite, la función se interrumpe.
  • Memoria máxima: 128 MB por defecto.

Cada invocación tiene un identificador único que vuelve en el encabezado X-Tero-Request-Id (con la forma inv-…). Con ese identificador se consultan los mensajes de console.* y los errores de esa ejecución.

Una función puede emitir eventos con Tero.emit(...) y otras funciones pueden reaccionar a ellos o correr en un horario. Ver Eventos y tareas programadas.

  • Código de la función y entorno de ejecución.
  • Patrones de path: una ruta puede repartir paths entre varias funciones, con coincidencia exacta (/health), de un segmento (/api/*) o de cualquier profundidad (/v1/**), más una función por defecto para el resto.
  • Límites de tiempo y memoria.
  • Variables de entorno de cada función, por ejemplo claves de servicios externos.