Logo Aurabase
aurabazadokumenty
dokumenty›Przewodniki›Upgrade to SDK 0.6

Aktualizacja do wersji SDK 0.6 i nowych zasad funkcji

Lista kontrolna dla projektów wywołujących Edge Functions z pakietu JavaScript SDK, zawierająca wpisy tajne, które mogą być konieczne do rotacji.

6 min przeczytane·Poziom mediator·Zmieniono 12 paź 2026
Ten tekst w języku angielskim został wygenerowany automatycznie na podstawie francuskiego oryginału i nie był jeszcze recenzowany.
Ta strona została przetłumaczona automatycznie. Wersja angielska jest miarodajna.
#
Streszczenie

1. Co się zmieniło

Zainstaluj nową wersję:

terminalbash
npm install @aurabase/aurabase-js@0.6.0

W tej wersji wprowadzono jedną zmianę zabezpieczeń i kilka poprawek dotyczących sposobu raportowania błędów i odpowiedzi. Zmiana zabezpieczeń dotyczy także funkcji usługi: dotyczy Twojego projektu zaraz po aktualizacji usługi, niezależnie od używanej wersji SDK.

#
Bicie

2. Przełomowe zmiany

Wywołania zarządzania wymagają teraz klucza service_role

functions.list(), get(), listJobs(), getJob(), enqueueJob(), listCronJobs(), createCronJob() i deleteCronJob() zwracają 403 do klucza publicznego lub zalogowanego użytkownika. Wcześniej list() i get() zwracały kod źródłowy i zmienne każdej funkcji każdemu, kto posiada klucz publiczny. Zobacz model zabezpieczeń.

before.ts (przeglądarka)typescript
const { data } = await aura.functions.list() // pracował z kluczem publicznym
po: przenieś go na swój serwertypescript
// serwer/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))

Zwracaj tylko to, czego potrzebuje Twój interfejs (na przykład nazwy), nigdy całą definicję.

Treść, która nie może być JSON, jest odrzucana

invoke(name, { body: new Blob(…) }) i to samo z ArrayBuffer, wpisanymi tablicami, FormData, URLSearchParams lub ReadableStream, teraz zwraca kod błędu invalid_body. Wcześniej funkcja otrzymywała {} i nie zgłaszano żadnego błędu. Zakoduj dane binarne (base64) lub prześlij je do magazynu i wyślij ich ścieżkę.

Własne funkcje 502, 503 lub 504 to FunctionsHttpError

Wcześniej te statusy były zawsze klasyfikowane jako FunctionsRelayError, nawet jeśli zwracał je kod. Teraz FunctionsRelayError oznacza, że ​​platforma uległa awarii. Jeśli ponowiłeś próbę FunctionsRelayError, sprawdź, czy logika ponawiania nadal jest zgodna: zobacz błędy, przekroczenia limitu czasu i ponowne próby.

FunctionDef jest bardziej precyzyjny

env_vars to Record<string, string> (było Record<string, unknown>) i dodano permissions. Kod czytający te pola nadal działa; kod, któremu przypisano wartości innego typu, nie jest już kompilowany.

#
Poprawki

3. Poprawki w zachowaniu

ZanimTeraz
Funkcja zwracająca 500 z tekstem wygenerowała komunikat "null"Wiadomość to tekst zwrócony przez funkcję
Funkcja zwracająca 200 z wygenerowanym tekstem { data: null, error: null }data to tekst
Odpowiedź binarna w trybie domyślnym wygenerowała { data: null, error: null }error.code to invalid_response, a komunikat sugeruje responseType
responseType: 'text' z błędem JSON { "error": "…" } pokazał HTTP 503Wiadomość odczytywana jest z formatu JSON, tak jak w trybie domyślnym
'text', 'blob' i 'arrayBuffer' nie miały domyślnego limitu czasuObowiązuje limit czasu klienta (30 s).
Do niezakodowanego adresu URL wstawiono nazwę funkcjiJest zakodowany: a/../b pozostaje na swojej ścieżce
delaySecs w zadaniu zostało zignorowane: zadanie zostało uruchomione natychmiastZadanie czeka na swój termin

Nowy eksport: FunctionsHttpError, FunctionsRelayError, isRelayStatus i FunctionsResponseType pochodzi z @aurabase/aurabase-js oraz z @aurabase/functions. Jeśli zaimportowałeś je z @aurabase/functions, to nadal działa; z pnpm nie potrzebujesz już tego pakietu jako bezpośredniej zależności.

W @aurabase/auth typ email w wyniku getClaims() to teraz string | null i właśnie to usługa zwraca dla użytkownika bez adresu e-mail.

Interfejs wiersza polecenia. aura functions deploy nie usuwa już sekretów funkcji, która już istnieje. aura functions invoke --data odrzuca nieprawidłowy JSON zamiast wysyłać {}. aura functions download działa dla funkcji Deno. aura functions serve nasłuchuje na porcie, który ogłasza. aura studio otwiera Studio na porcie 3000.

#
Bezpieczeństwo

4. Rotuj ujawnione tajemnice

Jeśli Twój projekt działał w wersji usługi starszej niż ta zmiana, każdy posiadacz Twojego klucza publicznego mógł odczytać kod i zmienne Twoich funkcji. Załóżmy, że zostały odczytane:

  1. Wypisz swoje funkcje za pomocą klawisza service_role i otwórz zmienne każdej z nich.
  2. Rotuj każdy sekret, który zawierają: klucze płatności, sekrety webhooka, tokeny stron trzecich.
  3. Usuń sekrety zapisane bezpośrednio w index.ts i przenieś je do zmiennych.
  4. Sprawdź zadania i reguły alertów projektu pod kątem wpisów, których nie utworzyłeś.
#
Lista kontrolna

5. Lista kontrolna

  • Wyszukaj w swoim kodzie functions.list(, functions.get(, listJobs(, getJob(, enqueueJob(, createCronJob(, deleteCronJob( i listCronJobs( w kodzie uruchamianym w przeglądarce lub przy użyciu klucza publicznego.
  • Wyszukaj wartości body:, które nie są zwykłym kodem JSON.
  • Sprawdź logikę ponawiania, która zależy od FunctionsRelayError.
  • Obróć sekrety zgodnie z opisem powyżej.
  • Zaktualizuj interfejs wiersza poleceń.
Ostatnia aktualizacja · 12 paź 2026