Aurabase Logo
aurabasedocs
docsServicesEdge Functions

Edge Functions

WASM multi-runtime, cron, job queue NATS, AI Gateway unifié. 300 POPs mondiaux, cold-start 5ms, facturation à la milliseconde CPU.

8 min de lecture·Niveau intermédiaire·Révisé le 15 avr. 2026
#
Vue d’ensemble

Trois types de fonctions

§ 01

Le service aura-functions expose trois primitives distinctes : handler HTTP (endpoint synchrone), cron (planifié), job(asynchrone via queue NATS). Toutes s'exécutent dans le même runtime WASM isolé, avec les mêmes secrets, la même observabilité, la même facturation.

Info
Le runtime est memory-safe par design. Un handler qui plante dans une fonction n'affecte pas les autres — chaque exécution est isolée, limitée en mémoire (par défaut 128 MB), et détruite à la fin.
#
Modèle mental

Compile-time, deploy, execute

§ 02

Votre code est compilé en WASM côté build (AOT — pas de JIT à l'exécution), distribué à 300 POPs, et invoqué à la demande. Le premier hit crée une instance (cold-start 5-8ms), les hits suivants réutilisent l'instance tant que le POP n'a pas garbage-collected (quelques minutes d'idle).

lifecycle
TEXT
BUILD ────▶ compile → WASM module (hash-locked)
DEPLOY ────▶ propagation aux 300 POPs (< 60s)
WARM ────▶ POP le plus proche instancie à la demande
EXEC ────▶ invocation isolée (5ms cold / <1ms warm)
GC ────▶ instance détruite après ~2min d'idle
#
Primitives

Six capacités natives

§ 03
WASM multi-runtime
Rust, Go, TypeScript, Python compilés en WASM. Cold-start 5-8ms.
Cron scheduler
Crontab + @every/@weekly/@monthly. Dérive garantie <100ms.
Job queue + DLQ
NATS JetStream, backoff exponentiel, DLQ automatique, replay Studio.
Streaming responses
SSE, HTTP/3 chunked. LLM streaming, transcoding, inference.
AI Gateway
OpenAI/Anthropic/Mistral/Llama, cache sémantique, budget per-tenant.
Preview deployments
URL éphémère par PR GitHub/GitLab, cleanup auto au merge.
#
Exemples

Quatre patterns essentiels

§ 04
functions/ocr.tsTYPESCRIPT
import { edge } from '@aurabase/edge'
export default edge.handler(
async (req, ctx) => {
const file = await req.formData()
const text = await ctx.ai.vision({ image: file.get('upload'), model: 'gpt-4o' })
return Response.json({ text })
},
{ runtime: 'wasm', regions: ['eu', 'us'] }
)
Astuce
Les trois types (handler/cron/job) partagent le même ctx : ctx.db pour Postgres, ctx.ai pour AI Gateway, ctx.storage, ctx.log, ctx.secrets.
#
Secrets & env

Chiffrés par projet, injectés à l’exécution

§ 05

Les secrets sont stockés chiffrés (AES-256 envelope encryption) avec une clé KMS par projet. Ils sont injectés dans ctx.secretsau moment de l'exécution et ne sont jamais persistés côté worker.

cli
BASH
# Définir un secret
aura secrets set STRIPE_SECRET_KEY sk_live_...
# Lister les secrets (valeurs masquées)
aura secrets ls
# Rotation programmatique
aura secrets rotate STRIPE_SECRET_KEY --new sk_live_new_...
Attention
Les secrets ne sont jamais disponibles via process.env dans le bundle WASM — ils passent par ctx.secrets.get('KEY')qui fait l'appel au KMS à la volée. Cela évite qu'un dump de mémoire du worker expose tous les secrets.
Dernière mise à jour · 15 avr. 2026