Logo Aurabase
aurabazadokumenty
dokumenty›Edge Functions›How an invocation works

Jak działa wywołanie

Przegląd jednego połączenia w celu wyjaśnienia limitów, kodów błędów i obserwowanego czasu.

8 min przeczytane·Poziom zaawansowany·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.
#
Ścieżka

1. Ścieżka połączenia

jedno wezwanietext
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

Brama i usługa funkcji komunikują się za pośrednictwem magistrali komunikatów. Wiadomość na tej magistrali ma limit rozmiaru i dlatego żądanie lub odpowiedź powyżej około 256 KiB nie przechodzi: zobacz limity.

#
Czas wykonania

2. Wewnątrz środowiska wykonawczego

  • Jeden pracownik na połączenie. Środowisko wykonawcze brzegowe uruchamia nowy izolowany proces roboczy V8 dla każdego wywołania, z zachowaniem limitu pamięci i limitu czasu funkcji. Nic w pamięci nie przetrwa od jednego wywołania do następnego: nie przechowuj stanu w zmiennej. Skorzystaj z bazy danych lub magazynu.
  • Kod jest buforowany przez kilka sekund. Środowisko wykonawcze przechowuje kod i ograniczenia funkcji przez 5 sekund i usuwa je po wdrożeniu. Zmienne są odczytywane przy każdym wywołaniu.
  • Twoje żądanie zostało przebudowane. Środowisko wykonawcze tworzy opisane przez Ciebie żądanie (method, path, headers, body) i przekazuje je do procedury obsługi Deno.serve. Funkcja zachowuje się zatem jak każdy serwer HTTP.
  • Środowisko wykonawcze wymusza przekroczenie limitu czasu. Po upływie timeout_secs proces roboczy zostaje anulowany; osoba dzwoniąca widzi błąd po mniej więcej tym opóźnieniu.
  • WASM funkcje działają wewnątrz samej usługi, z ograniczeniami dotyczącymi pamięci, czasu i instrukcji. Funkcja WASM może raportować wiersze dziennika, które pojawiają się w polu logs odpowiedzi; funkcja Deno nie może.
#
Odpowiedzi

3. Koperta i tryb surowy

Usługa ma dwa sposoby zwrócenia odpowiedzi funkcji, wybranej przez nagłówek żądania X-Aurabase-Invoke-Mode.

Koperta (domyślna)Surowe (raw)
Stan HTTPZawsze 200Własny status funkcji
Ciało{ data: { status, headers, body, logs, duration_ms }, meta }Bajty funkcji
TreśćTekst JSON lub UTF-8Wszystko, łącznie z binarnym
Używany przezresponseType: 'json', Studio'text', 'blob', 'arrayBuffer', bezpośredni HTTP

Koperta istnieje w taki sposób, że jedna odpowiedź JSON może zawierać status, nagłówki i czas trwania połączenia. Jego ograniczeniem jest to, że bajty nie mogą być przesyłane w formacie JSON: dlatego odpowiedź binarna wymaga trybu surowego. Zestaw SDK wybiera tryb spośród responseType.

W trybie surowym usługa dodaje x-aurabase-invoke-origin: function do odpowiedzi Twojej funkcji. Błąd pochodzący z bramy lub środowiska wykonawczego go nie przenosi. W ten sposób SDK oddziela FunctionsHttpError (odpowiedź na Twoją funkcję) od FunctionsRelayError (platforma uległa awarii).

#
Czas

4. Czas, pomiary i awarie

Trzy limity czasu są zagnieżdżone, tak że żaden nie kończy się przed tym, który się w nim znajduje:

limity czasu, z zewnątrz do wewnątrztext
gateway 380 s  ⊃  message bus 370 s  ⊃  function timeout_secs (≤ 300 s) + margin

Usługa czeka na czas wykonania dla timeout_secs plus margines. Ponieważ środowisko wykonawcze anuluje proces roboczy w timeout_secs, zwykle w tym momencie pojawia się błąd funkcji, a 504 TIMEOUT jest wyświetlany tylko wtedy, gdy samo środowisko wykonawcze przestaje odpowiadać. 504 oznacza zatem, że funkcja została uruchomiona i mogła mieć skutki: nie powtarzaj na ślepo nieidempotentnego wywołania.

Pomiar i kwota:

  1. Przed połączeniem usługa rezerwuje jedno wywołanie z limitu planu. Jeśli limit zostanie wyczerpany, wywołanie zatrzymuje się w tym miejscu za pomocą 403.
  2. Po połączeniu rejestruje wywołanie i czas jego trwania w milisekundach.
  3. Jeśli połączenie nie powiedzie się, zanim Twoja funkcja odbierze, rezerwacja zostanie zwolniona i nic nie będzie liczone.
#
Konsekwencje

5. Co następuje dla Twojego kodu

  • Niech każde połączenie będzie krótkie i bezstanowe. W przypadku długiej pracy umieść w kolejce zadanie.
  • Staraj się, aby prośby i odpowiedzi były małe; umieść pliki w magazynie i przekaż referencje.
  • Spraw, aby funkcje były idempotentne: ponowna próba zadania, ponowna próba klienta po błędzie sieci lub zduplikowane dostarczenie cron mogą spowodować dwukrotne uruchomienie kodu.
  • Autoryzuj nagłówki tożsamości platformy, ponieważ są to jedyne wartości, których osoba wywołująca nie może sfałszować. Zobacz bezpieczeństwo.
  • Zmierz własne opóźnienie: każde połączenie płaci za uruchomienie procesu roboczego. Minimalna funkcja zgłosiła duration_ms: 74 na stosie lokalnym.
Ostatnia aktualizacja · 12 paź 2026