아우라베이스 로고
아우라베이스문서
문서›Edge Functions›How an invocation works

호출 작동 방식

한 번의 호출을 통해 관찰한 한계, 오류 코드 및 타이밍을 설명합니다.

8분 읽기·레벨 고급·2026. 10. 12.에 개정됨
이 영어 텍스트는 프랑스어 원본에서 자동으로 생성되었으며 아직 검토되지 않았습니다.
이 페이지는 자동으로 번역되었습니다. 영어 버전은 권위가 있습니다.
#
경로

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

게이트웨이와 서비스 기능은 메시지 버스를 통해 통신합니다. 해당 버스의 메시지에는 크기 제한이 있으므로 약 256KiB를 초과하는 요청 또는 응답은 통과되지 않습니다. 제한을 참조하세요.

#
런타임

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. 시간, 측정 및 오류

3개의 시간 초과가 중첩되어 그 안에 있는 시간 초과 전에 끝나지 않습니다.

시간 초과, 외부에서 내부로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. 코드에 따라야 할 사항

  • 각 호출을 짧고 상태 비저장으로 유지하세요. 장기 작업의 경우 작업을 대기열에 추가합니다.
  • 요청과 응답을 작게 유지하십시오. 파일을 Storage에 넣고 참조를 전달합니다.
  • 기능을 멱등성으로 만듭니다. 재시도된 작업, 네트워크 오류 후 클라이언트 재시도 또는 중복된 크론 전달로 인해 코드가 두 번 실행될 수 있습니다.
  • 호출자가 위조할 수 없는 유일한 값이기 때문에 플랫폼의 ID 헤더에 대해 권한을 부여합니다. 보안을 참조하세요.
  • 자체 대기 시간을 측정하세요. 각 호출은 작업자 시작에 대한 비용을 지불합니다. 로컬 스택에서 최소 함수가 duration_ms: 74을(를) 보고했습니다.
마지막 업데이트 · 2026. 10. 12.