Aurabase-Logo
AurabasisDokumente
Dokumente›Führer›Upgrade to SDK 0.6

Upgrade auf SDK 0.6 und die neuen Funktionsregeln

Eine Checkliste für Projekte, die Edge Functions aus dem JavaScript SDK aufrufen, mit den Geheimnissen, die Sie möglicherweise rotieren müssen.

6 Min. gelesen·Ebene Mittelstufe·Überarbeitet am 12.10.2026
Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.
#
Zusammenfassung

1. Was hat sich geändert?

Installieren Sie die neue Version:

terminalbash
npm install @aurabase/aurabase-js@0.6.0

Die Version enthält eine Sicherheitsänderung und mehrere Korrekturen für die Art und Weise, wie Fehler und Antworten gemeldet werden. Die Sicherheitsänderung betrifft auch die Funktionen Dienst: Sie gilt für Ihr Projekt, sobald der Dienst aktualisiert wird, unabhängig davon, welche SDK-Version Sie verwenden.

#
Brechen

2. Breaking Changes

Verwaltungsaufrufe benötigen jetzt einen service_role-Schlüssel

functions.list(), get(), listJobs(), getJob(), enqueueJob(), listCronJobs(), createCronJob() und deleteCronJob() geben 403 an einen öffentlichen Schlüssel oder einen angemeldeten Benutzer zurück. Zuvor gaben list() und get() den Quellcode und die Variablen jeder Funktion an jeden zurück, der den öffentlichen Schlüssel besaß. Siehe das Sicherheitsmodell.

before.ts (Browser)typescript
const { data } = await aura.functions.list() // mit dem öffentlichen Schlüssel gearbeitet
danach: Verschieben Sie es auf Ihren Servertypescript
// server/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))

Geben Sie nur das zurück, was Ihr Frontend benötigt (z. B. Namen), niemals die gesamte Definition.

Ein Körper, der nicht JSON sein kann, wird abgelehnt

invoke(name, { body: new Blob(…) }) und dasselbe mit ArrayBuffer, typisierten Arrays, FormData, URLSearchParams oder ReadableStream, gibt jetzt den Fehlercode invalid_body zurück. Zuvor empfing die Funktion {} und es wurde kein Fehler gemeldet. Kodieren Sie Binärdaten (Base64) oder laden Sie sie in den Speicher hoch und senden Sie ihren Pfad.

Das eigene 502, 503 oder 504 einer Funktion ist ein FunctionsHttpError

Zuvor wurden diese Status immer als FunctionsRelayError klassifiziert, auch wenn Ihr Code sie zurückgegeben hat. Nun bedeutet FunctionsRelayError, dass die -Plattform ausgefallen ist. Wenn Sie es auf FunctionsRelayError erneut versucht haben, überprüfen Sie, ob Ihre Wiederholungslogik immer noch übereinstimmt: siehe Fehler, Zeitüberschreitungen und Wiederholungsversuche.

FunctionDef ist präziser

env_vars ist Record<string, string> (es war Record<string, unknown>) und permissions wird hinzugefügt. Code, der diese Felder liest, funktioniert weiterhin; Code, der Werte eines anderen Typs zugewiesen hat, lässt sich nicht mehr kompilieren.

#
Korrekturen

3. Verhaltenskorrekturen

VorherJetzt
Eine Funktion, die 500 mit Text zurückgibt, erzeugte die Nachricht "null"Die Nachricht ist der Text, den Ihre Funktion zurückgegeben hat
Eine Funktion, die 200 mit dem erzeugten Text { data: null, error: null } zurückgibtdata ist der Text
Eine binäre Antwort im Standardmodus erzeugte { data: null, error: null }error.code ist invalid_response und die Meldung schlägt responseType vor
responseType: 'text' mit einem Fehler JSON { "error": "…" } zeigte HTTP 503Die Nachricht wird wie im Standardmodus aus dem JSON gelesen
'text', 'blob' und 'arrayBuffer' hatten kein Standard-TimeoutEs gilt der Client-Timeout (30 s).
Ein Funktionsname wurde unverschlüsselt in die URL eingefügtEs ist kodiert: a/../b bleibt in seinem Pfad
delaySecs für einen Job wurde ignoriert: Der Job wurde sofort ausgeführtDer Job wartet auf sein Datum

Neue Exporte: FunctionsHttpError, FunctionsRelayError, isRelayStatus und FunctionsResponseType stammen sowohl von @aurabase/aurabase-js als auch von @aurabase/functions. Wenn Sie sie aus @aurabase/functions importiert haben, funktioniert das weiterhin; Mit pnpm benötigen Sie dieses Paket nicht mehr als direkte Abhängigkeit.

In @aurabase/auth ist der Typ von email im Ergebnis von getClaims() jetzt string | null, was der Dienst für einen Benutzer ohne E-Mail-Adresse zurückgibt.

CLI. aura functions deploy löscht nicht mehr die Geheimnisse einer bereits vorhandenen Funktion. aura functions invoke --data lehnt ungültiges JSON ab, anstatt {} zu senden. aura functions download funktioniert für Deno-Funktionen. aura functions serve lauscht auf dem Port, den es ankündigt. aura studio öffnet das Studio auf Port 3000.

#
Sicherheit

4. Offengelegte Geheimnisse rotieren

Wenn Ihr Projekt mit einer Dienstversion vor dieser Änderung ausgeführt wurde, könnte jeder Inhaber Ihres öffentlichen Schlüssels den Code und die Variablen Ihrer Funktionen lesen. Angenommen, sie wurden gelesen:

  1. Listen Sie Ihre Funktionen mit der Taste service_role auf und öffnen Sie die Variablen jeder einzelnen Funktion.
  2. Rotieren Sie jedes darin enthaltene Geheimnis: Zahlungsschlüssel, Webhook-Geheimnisse, Token von Drittanbietern.
  3. Entfernen Sie Geheimnisse, die direkt in index.ts geschrieben wurden, und verschieben Sie sie in Variablen.
  4. Überprüfen Sie die Jobs und Alarmregeln des Projekts auf Einträge, die Sie nicht erstellt haben.
#
Checkliste

5. Checkliste

  • Durchsuchen Sie Ihren Code nach functions.list(, functions.get(, listJobs(, getJob(, enqueueJob(, createCronJob(, deleteCronJob( und listCronJobs( in Code, der in einem Browser oder mit einem öffentlichen Schlüssel ausgeführt wird.
  • Suchen Sie nach body:-Werten, die kein einfaches JSON sind.
  • Überprüfen Sie die Wiederholungslogik, die von FunctionsRelayError abhängt.
  • Drehen Sie die Geheimnisse wie oben beschrieben.
  • Aktualisieren Sie die CLI.
Zuletzt aktualisiert · 12.10.2026