Logo Aurabase
aurabasedocuments
documents›Guides›Upgrade to SDK 0.6

Mise à niveau vers le SDK 0.6 et les nouvelles règles de fonctions

Une liste de contrôle pour les projets qui appellent Edge Functions à partir du SDK JavaScript, avec les secrets dont vous pourriez avoir besoin pour effectuer une rotation.

6 min de lecture·Niveau intermédiaire·Révisé le 12 oct. 2026
Ce texte anglais a été généré automatiquement à partir de l’original français et n’a pas encore été relu.
Cette page a été traduite automatiquement. La version anglaise fait foi.
#
Résumé

1. Ce qui a changé

Installez la nouvelle version :

terminalbash
npm install @aurabase/aurabase-js@0.6.0

La version comporte un changement de sécurité et plusieurs correctifs concernant la façon dont les erreurs et les réponses sont signalées. Le changement de sécurité se trouve également dans les fonctions du service: il s'applique à votre projet dès la mise à jour du service, quelle que soit la version du SDK que vous utilisez.

#
Rupture

2. Briser les changements

Les appels de gestion nécessitent désormais une clé service_role

functions.list(), get(), listJobs(), getJob(), enqueueJob(), listCronJobs(), createCronJob() et deleteCronJob() renvoient 403 à une clé publique ou à un utilisateur connecté. Avant, list() et get() renvoyaient le code source et les variables de chaque fonction à toute personne détenant la clé publique. Voir le modèle de sécurité.

before.ts (navigateur)typescript
const { data } = await aura.functions.list() // travaillé avec la clé publique
après : déplacez-le sur votre serveurtypescript
// serveur/api/functions.ts
const admin = createClient(process.env.AURA_URL!, process.env.AURA_SERVICE_ROLE_KEY!)
export const GET = async () => Response.json((await admin.functions.list()).data?.map((f) => f.name))

Renvoyez uniquement ce dont votre front-end a besoin (les noms, par exemple), jamais la définition complète.

Un corps qui ne peut pas être JSON est refusé

invoke(name, { body: new Blob(…) }), et pareil avec ArrayBuffer, tableaux typés, FormData, URLSearchParams ou ReadableStream, renvoie désormais le code d'erreur invalid_body. Avant, la fonction recevait {} et aucune erreur n'était signalée. Encodez les données binaires (base64) ou téléchargez-les sur Storage et envoyez leur chemin.

Le 502, 503 ou 504 d'une fonction est un FunctionsHttpError

Avant, ces statuts étaient toujours classés comme FunctionsRelayError, même lorsque votre code les renvoyait. Désormais, FunctionsRelayError signifie que la plate-forme a échoué. Si vous avez réessayé sur FunctionsRelayError, vérifiez que votre logique de nouvelle tentative correspond toujours : voir erreurs, délais d'attente et nouvelles tentatives.

FunctionDef est plus précis

env_vars est Record<string, string> (c'était Record<string, unknown>) et permissions est ajouté. Le code qui lit ces champs continue de fonctionner ; le code qui attribuait des valeurs d’un autre type ne se compile plus.

#
Correctifs

3. Corrections de comportement

AvantMaintenant
Une fonction renvoyant 500 avec du texte a produit le message "null"Le message est le texte renvoyé par votre fonction
Une fonction renvoyant 200 avec le texte produit { data: null, error: null }data est le texte
Une réponse binaire en mode par défaut a produit { data: null, error: null }error.code est invalid_response et le message suggère responseType
responseType: 'text' avec une erreur JSON { "error": "…" } a montré HTTP 503Le message est lu depuis le JSON, comme dans le mode par défaut
'text', 'blob' et 'arrayBuffer' n'avaient pas de délai d'expiration par défautLe délai d'attente client (30 s) s'applique
Un nom de fonction a été inséré dans l'URL non codéIl est codé : a/../b reste à l'intérieur de son chemin
delaySecs sur une tâche a été ignoré : la tâche a été exécutée immédiatementLe travail attend sa date

Nouveaux exports : FunctionsHttpError, FunctionsRelayError, isRelayStatus et FunctionsResponseType proviennent de @aurabase/aurabase-js ainsi que de @aurabase/functions. Si vous les avez importés depuis @aurabase/functions, cela continue de fonctionner ; avec pnpm, vous n'avez plus besoin de ce package en tant que dépendance directe.

Dans @aurabase/auth, le type de email dans le résultat de getClaims() est désormais string | null, ce que le service renvoie pour un utilisateur sans adresse e-mail.

CLI. aura functions deploy n'efface plus les secrets d'une fonction déjà existante. aura functions invoke --data refuse le JSON invalide au lieu d'envoyer {}. aura functions download fonctionne pour les fonctions Deno. aura functions serve écoute sur le port qu'il annonce. aura studio ouvre le Studio sur le port 3000.

#
Sécurité

4. Faites pivoter les secrets exposés

Si votre projet fonctionnait sur une version de service antérieure à ce changement, tout détenteur de votre clé publique pourrait lire le code et les variables de vos fonctions. Supposons qu'ils aient été lus :

  1. Listez vos fonctions avec une clé service_role et ouvrez les variables de chacune.
  2. Faites pivoter tous les secrets qu'ils contiennent : clés de paiement, secrets de webhook, jetons tiers.
  3. Supprimez les secrets écrits directement dans index.ts et déplacez-les vers des variables.
  4. Vérifiez les tâches et les règles d'alerte du projet pour les entrées que vous n'avez pas créées.
#
Liste de contrôle

5. Liste de contrôle

  • Recherchez votre code pour functions.list(, functions.get(, listJobs(, getJob(, enqueueJob(, createCronJob(, deleteCronJob( et listCronJobs( dans un code qui s'exécute dans un navigateur ou avec une clé publique.
  • Recherchez les valeurs body: qui ne sont pas du JSON simple.
  • Vérifiez la logique de nouvelle tentative qui dépend de FunctionsRelayError.
  • Faites pivoter les secrets comme décrit ci-dessus.
  • Mettez à jour la CLI.
Dernière mise à jour · 12 oct. 2026