Логотип Аурабаза
аурабазадокументы
документы›Путеводители›Upgrade to SDK 0.6

Обновление до SDK 0.6 и новые правила функций

Контрольный список для проектов, вызывающих Edge Functions из JavaScript SDK, с секретами, которые вам, возможно, придется менять.

6 мин читать·Уровень средний·Пересмотрено 12 окт. 2026 г.
Этот текст на английском языке был создан автоматически на основе французского оригинала и еще не проверялся.
Эта страница была переведена автоматически. Английская версия является авторитетной.
#
Краткое содержание

1. Что изменилось

Установите новую версию:

terminalbash
npm install @aurabase/aurabase-js@0.6.0

В выпуске есть одно изменение безопасности и несколько исправлений отчетов об ошибках и ответах. Изменение безопасности также присутствует в функциях service: оно применяется к вашему проекту, как только служба обновляется, какую бы версию SDK вы ни использовали.

#
Ломать

2. Критические изменения

Для вызовов управления теперь требуется ключ service_role.

functions.list(), get(), listJobs(), getJob(), enqueueJob(), listCronJobs(), createCronJob() и deleteCronJob() возвращают 403 открытому ключу или вошедшему пользователю. Раньше list() и get() возвращали исходный код и переменные каждой функции всем, у кого есть открытый ключ. См. модель безопасности.

before.ts (браузер)typescript
const { data } = await aura.functions.list() // работал с открытым ключом
после: переместите его на свой серверtypescript
// сервер/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))

Возвращайте только то, что нужно вашему интерфейсу (например, имена), а не все определение.

Тело, которое не может быть JSON, отклонено.

invoke(name, { body: new Blob(…) }) и то же самое с ArrayBuffer, типизированные массивы FormData, URLSearchParams или ReadableStream теперь возвращают код ошибки invalid_body. Раньше функция получала {} и об ошибках не сообщалось. Закодируйте двоичные данные (base64) или загрузите их в хранилище и отправьте путь к ним.

Собственные 502, 503 или 504 функции — это FunctionsHttpError.

Раньше эти статусы всегда классифицировались как FunctionsRelayError, даже если ваш код их возвращал. Теперь FunctionsRelayError означает, что платформа вышла из строя. Если вы повторили попытку на FunctionsRelayError, убедитесь, что ваша логика повтора по-прежнему соответствует: см. ошибки , тайм-ауты и повторные попытки.

FunctionDef точнее

env_vars — это Record<string, string> (было Record<string, unknown>) и добавляется permissions. Код, читающий эти поля, продолжает работать; код, которому присвоены значения другого типа, больше не компилируется.

#
Исправления

3. Исправления поведения

ДоСейчас
Функция, возвращающая 500 с текстом, выдала сообщение "null".Сообщение — это текст, возвращенный вашей функцией.
Функция, возвращающая 200 с текстом, созданным { data: null, error: null }.data — это текст
Двоичный ответ в режиме по умолчанию выдал { data: null, error: null }.error.code — это invalid_response, а в сообщении предлагается responseType.
responseType: 'text' с ошибкой JSON { "error": "…" } показал HTTP 503Сообщение считывается из JSON, как и в режиме по умолчанию.
'text', 'blob' и 'arrayBuffer' не имели тайм-аута по умолчанию.Применяется тайм-аут клиента (30 с).
Имя функции было вставлено в URL-адрес в незакодированном виде.Он закодирован: a/../b остается внутри своего пути.
delaySecs в задании был проигнорирован: задание было выполнено сразуЗадание ждет своей даты

Новые объекты экспорта: FunctionsHttpError, FunctionsRelayError, isRelayStatus и FunctionsResponseType происходят из @aurabase/aurabase-js, а также из @aurabase/functions. Если вы импортировали их из @aurabase/functions, это продолжит работать; с pnpm вам больше не нужен этот пакет как прямая зависимость.

В @aurabase/auth тип email в результате getClaims() теперь равен string | null, что служба возвращает пользователю без адреса электронной почты.

интерфейс командной строки. aura functions deploy больше не стирает секреты уже существующей функции. aura functions invoke --data отклоняет недопустимый JSON вместо отправки {}. aura functions download работает для функций Deno. aura functions serve прослушивает объявленный порт. aura studio открывает студию через порт 3000.

#
Безопасность

4. Меняйте раскрытые секреты

Если ваш проект работал на версии сервиса, предшествующей этому изменению, любой владелец вашего открытого ключа сможет прочитать код и переменные ваших функций. Предположим, они были прочитаны:

  1. Перечислите свои функции с помощью клавиши service_role и откройте переменные каждой из них.
  2. Меняйте каждый секрет, который они содержат: ключи оплаты, секреты веб-перехватчиков, сторонние токены.
  3. Удалите секреты, которые были записаны непосредственно в index.ts, и переместите их в переменные.
  4. Проверьте задания и правила оповещений проекта на предмет записей, которые вы не создавали.
#
Контрольный список

5. Контрольный список

  • Найдите свой код functions.list(, functions.get(, listJobs(, getJob(, enqueueJob(, createCronJob(, deleteCronJob( и listCronJobs( в коде, который запускается в браузере или с открытым ключом.
  • Найдите значения body:, которые не являются простым JSON.
  • Проверьте логику повтора, которая зависит от FunctionsRelayError.
  • Поворачивайте секреты, как описано выше.
  • Обновите CLI.
Последнее обновление · 12 окт. 2026 г.