Edge Functions
Exécutez du TypeScript côté serveur sans provisionner de machine : webhooks, appels à un service tiers, écritures privilégiées, tâches planifiées.
Écrire et déployer
Une fonction est un fichier TypeScript qui exporte un gestionnaire de requête. Nommez-la en minuscules, chiffres, tirets ou underscores (63 caractères au plus) ; quelques noms sont réservés par la plateforme. Dans l’éditeur de la console, le raccourci d’enregistrement déploie la version courante.
TypeScript
// index.ts — point d'entrée de la fonction
export default async (req: Request): Promise<Response> => {
if (req.method !== 'POST') {
return new Response('Méthode non autorisée', { status: 405 });
}
const { nom } = (await req.json()) as { nom?: string };
const reponse = await fetch('https://exemple.ci/api/notification', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
// Secret de projet, jamais écrit dans le code
Authorization: 'Bearer ' + Deno.env.get('EXEMPLE_CLE_TIERS'),
},
body: JSON.stringify({ message: 'Bonjour ' + (nom ?? 'le monde') }),
});
return Response.json({ ok: reponse.ok });
};Les fichiers annexes (dossier partagé, modules relatifs) se déploient avec la fonction et s’importent depuis le point d’entrée.
Secrets
Stockez les clés tierces en secrets de projet, jamais dans le code. Le runtime fournit également à chaque fonction l’URL du projet, la clé anonyme, la clé de service, le schéma et la référence du projet — de quoi appeler votre base sans configuration.
- Modifier un secret redéploie la fonction : la nouvelle valeur n’est pas visible avant.
- La clé de service est un secret : une fonction qui la reçoit peut tout lire et tout écrire, elle ne doit jamais la renvoyer au client.
Tester et observer
L’onglet de test envoie une requête réelle et affiche le corps de la réponse ; les journaux d’invocation gardent la trace pour diagnostiquer un retour 4xx/5xx. Une fonction peut exiger un jeton de session : les clés anonymes restent acceptées par la passerelle, mais pas comme jeton d’utilisateur.
Déployer depuis la CI
Pour industrialiser, déployez par l’API de management avec un jeton d’accès personnel portant la portée dédiée aux fonctions : le même code peut alors partir de votre pipeline, sans passer par la console.