Логотип Аурабаза
аурабазадокументы
документы›Edge Functions›How an invocation works

Как работает вызов

Прогулка по одному вызову, чтобы объяснить ограничения, коды ошибок и время, которое вы наблюдаете.

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

1. Путь вызова

один вызовtext
your code ── invoke('hello') ──▶ gateway (data plane)
                                   • checks the key and the user's token
                                   • finds the project from the host
                                   • adds x-aura-role, x-aura-user-id, x-aura-project-id
                                   │  message bus (request / reply)
                                   ▼
                           functions service
                                   • access policy: only invoke is public
                                   • reads the function, reserves one invocation of the plan quota
                                   │  HTTP
                                   ▼
                            edge runtime
                                   • loads code, limits and variables
                                   • starts an isolated V8 worker
                                   • rebuilds the request you described
                                   ▼
                             your function ── Response ──▶ back along the same path

Шлюз и служба функций общаются по шине сообщений. Сообщение на этой шине имеет ограничение на размер, поэтому запрос или ответ размером более 256 КиБ не проходит: см. ограничения .

#
Время выполнения

2. Внутри среды выполнения

  • Один рабочий на вызов. Пограничная среда выполнения запускает новую изолированную рабочую роль V8 для каждого вызова с ограничением памяти и временем ожидания функции. Ничто в памяти не сохраняется от одного вызова к другому: не сохраняйте состояние в переменной. Используйте свою базу данных или хранилище.
  • Код кэшируется на несколько секунд. Среда выполнения сохраняет код и ограничения функции в течение 5 секунд и удаляет их при развертывании. Переменные считываются при каждом вызове.
  • Ваш запрос перестроен. Среда выполнения создает описанный вами запрос (method, path, headers, body) и передает его обработчику Deno.serve. Таким образом, функция ведет себя как любой HTTP-сервер.
  • Время выполнения устанавливает тайм-аут. По истечении timeout_secs рабочий процесс отменяется; вызывающий абонент видит ошибку примерно после этой задержки.
  • WASM функции выполняются внутри самой службы с ограничениями по памяти, времени и инструкциям. Функция WASM может сообщать строки журнала, которые появляются в поле logs ответа; функция Deno не может.
#
Ответы

3. Конверт и необработанный режим

У службы есть два способа вернуть ответ вашей функции, выбранный в заголовке запроса X-Aurabase-Invoke-Mode.

Конверт (по умолчанию)Необработанный (raw)
Статус HTTPВсегда 200Собственный статус функции
Тело{ data: { status, headers, body, logs, duration_ms }, meta }Байты функции
СодержаниеТекст JSON или UTF-8.Что угодно, включая двоичные файлы
ИспользуетсяresponseType: 'json', Студия'text', 'blob', 'arrayBuffer', прямой HTTP

Конверт существует для того, чтобы один ответ JSON мог содержать статус, заголовки и продолжительность вызова. Его ограничение заключается в том, что байты не могут передаваться в формате JSON: именно поэтому двоичный ответ требует необработанного режима. SDK выбирает режим из responseType.

В необработанном режиме служба добавляет x-aurabase-invoke-origin: function к ответам вашей функции. Ошибка, исходящая от шлюза или среды выполнения, не несет ее. Вот как SDK отделяет FunctionsHttpError (ваша функция ответила) от FunctionsRelayError (сбой платформы).

#
Время

4. Время, замеры и сбои

Три тайм-аута вложены друг в друга, так что ни один из них не заканчивается раньше, чем тот, который находится внутри него:

тайм-ауты, снаружи внутрьtext
gateway 380 s  ⊃  message bus 370 s  ⊃  function timeout_secs (≤ 300 s) + margin

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

Учет и квота:

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

5. Что следует за вашим кодом

  • Пусть каждый звонок будет коротким и без сохранения состояния. Для длительной работы поставьте в очередь задание.
  • Делайте запросы и ответы небольшими; поместите файлы в хранилище и передайте ссылку.
  • Сделайте функции идемпотентными: повторная попытка выполнения задания, повторная попытка клиента после сетевой ошибки или дублированная доставка cron могут запустить ваш код дважды.
  • Авторизуйте заголовки идентификаторов платформы, поскольку они являются единственными значениями, которые вызывающая сторона не может подделать. См. безопасность.
  • Задержку измерьте сами: каждый вызов платит за запуск воркера. Минимальная функция сообщила о duration_ms: 74 в локальном стеке.
Последнее обновление · 12 окт. 2026 г.