아우라베이스 로고
아우라베이스문서
문서›Edge Functions›Errors, timeouts and retries

오류, 시간 초과 및 재시도

문제가 발생했을 때와 안전하게 다시 호출할 수 있을 때 invoke가 반환하는 내용을 읽는 방법.

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

1. 오류 개체

invoke는 { data, error }을 반환하고 절대 발생하지 않습니다. error는 AuraError이므로 isAuraError(error)는 true입니다. 두 개의 하위 클래스가 누가 실패했는지 알려줍니다.

classify.tstypescript
import { FunctionsHttpError, FunctionsRelayError } from '@aurabase/aurabase-js'

const { data, error } = await aura.functions.invoke('checkout', { body })

if (error instanceof FunctionsHttpError) {
  // 귀하의 함수가 오류 상태로 응답했습니다. 코드를 디버그하세요.
} else if (error instanceof FunctionsRelayError) {
  // 플랫폼이 실패했습니다. 함수에 대한 응답이 돌아오지 않았습니다.
} else if (error) {
  // 클라이언트에서 호출이 취소되거나 거부되었습니다(timeout, valid_body, no_session).
}
필드의미
error.statusHTTP 상태. 0는 클라이언트에서 오류가 발생했음을 의미합니다(응답 없음).
error.code안정적인 식별자(예: NOT_FOUND, QUOTA_EXCEEDED, timeout, invalid_body)
error.message함수가 반환한 텍스트 또는 플랫폼 설명입니다.
error.contextFunctionsHttpError에서: 함수가 반환한 본문(구문 분석된 JSON 또는 텍스트)입니다.
error.details원시 오류 본문입니다. 플랫폼 오류의 경우 error.request_id가 포함됩니다.
#
진단

2. 어떤 오류인가요?

실행 중인 스택에 대해 관찰된 동작입니다. 할당량 행은 백엔드의 오류 매핑을 따르며 테스트에서는 트리거되지 않았습니다.

무슨 일이 일어났나요?수업statuscodemessage
해당 기능이 존재하지 않습니다.FunctionsHttpError404NOT_FOUND"...'안돼' 기능은 문제가 되지 않습니다."
귀하의 함수는 텍스트와 함께 500를 반환합니다.FunctionsHttpError500http_500그 텍스트
귀하의 함수는 503 자체를 반환합니다.FunctionsHttpError503http_503당신이 반환한 것
귀하의 기능이 발생합니다FunctionsHttpError500http_500"내부 서버 오류"
귀하의 함수가 timeout_secs을(를) 초과합니다.FunctionsHttpError500 또는 503http_500 / http_503"함수 실행 실패" 또는 "함수가 HTTP 503을 반환했습니다."
런타임에 연결할 수 없습니다.FunctionsRelayError503SERVICE_UNAVAILABLE함수가 실행되지 않았다고 설명합니다.
응답하기 전에 네트워크가 실패합니다.FunctionsRelayError0network_error네트워크 오류
계획 할당량이 소진되었습니다.FunctionsHttpError403QUOTA_EXCEEDED할당량 메시지
한 고객의 통화가 너무 많습니다.FunctionsHttpError429rate_limit_exceeded대기 메시지
요청 본문이 너무 큼FunctionsRelayError503SERVICE_UNAVAILABLE"최대 페이로드 크기를 초과했습니다."
취소했거나 timeout이 만료되었습니다.AuraError0timeout"함수 호출이 중단되었거나 시간 초과되었습니다."
본문을 JSON으로 보낼 수 없습니다.AuraError0invalid_body피해야 할 유형의 이름을 지정합니다.
함수의 503은 플랫폼 오류가 아닙니다.

자신의 코드가 502, 503 또는 504를 반환하면 FunctionsHttpError가 표시됩니다. 클래스는 상태 번호가 아닌 누가 응답했는지 알려줍니다.

두 번의 실패는 다른 것처럼 보입니다.

약 256KiB를 초과하는 요청 본문은 503 SERVICE_UNAVAILABLE로 거부되었으며 약 300KB 이상의 응답은 50초 테스트 내에 반환되지 않았습니다. 제한을 참조하세요. 다시 시도해도 도움이 되지 않습니다. 데이터를 적게 보내거나 저장소를 사용하세요.

#
재시도

3. 재시도 여부 결정

SDK는 호출을 다시 시도하지 않습니다. 함수에 부작용이 있을 수 있으며 반복되는 POST은 기본적으로 안전하지 않습니다. 아래 표를 참고하여 결정하세요.

실패기능이 실행됐나요?다시 시도해도 안전할까요?
플랫폼의 503(FunctionsRelayError)아니요, 런타임에 연결할 수 없습니다.예, 짧은 백오프가 있습니다.
429아니요예, error.retryAfter 지연 후
403 QUOTA_EXCEEDED아니요아니요, 할당량이 재설정되거나 계획을 변경할 때까지
status 0 (network_error)알 수 없음함수가 멱등적인 경우에만
클라이언트의 timeout알 수 없음함수가 멱등적인 경우에만
FunctionsHttpError 5xx예, 부분적으로 또는 완전히함수가 멱등적인 경우에만
FunctionsHttpError 4xx예아니요: 요청을 수정합니다.
retry.tstypescript
import { FunctionsRelayError } from '@aurabase/aurabase-js'

async function invokeWithRetry(name: string, body: unknown, attempts = 3) {
  for (let i = 0; i < attempts; i++) {
    const res = await aura.functions.invoke(name, { body })
    const safe = res.error instanceof FunctionsRelayError && res.error.status === 503
    if (!res.error || !safe) return res
    await new Promise((r) => setTimeout(r, 2 ** i * 500))
  }
  return aura.functions.invoke(name, { body })
}
대신 함수를 멱등성으로 만드세요.

플랫폼은 호출의 중복을 제거하지 않으며 Idempotency-Key를 무시합니다. 결제나 이메일의 경우 body에 전달한 키를 저장하고 기능 시작 시 확인하세요.

#
시간

4. 시간 초과

세 개의 시계가 동시에 실행됩니다.

시계기본값어디서 바꾸나요?
귀하의 고객responseType마다 30초클라이언트 옵션의 invoke(…, { timeout }), { signal }또는 requestTimeoutMs
기능30초, 1~300 사이함수에 대한 permissions.timeout_secs
게이트웨이380 s프로젝트별로 구성할 수 없음

함수가 timeout_secs를 초과하면 런타임은 함수를 취소하고 위에 표시된 500 또는 503과 함께 해당 지연 후에 호출이 실패합니다. 원인은 원시 모드의 error.context.detail(WorkerRequestCancelled: request has been cancelled by supervisor)에 나타납니다. 클라이언트 timeout대신 이 오류를 보려면 함수의 timeout_secs보다 약간 높게 클라이언트 timeout를 설정하세요.

timeout.tstypescript
const { error } = await aura.functions.invoke('report', { timeout: 35_000 })
if (error?.code === 'timeout') {
  // 고객이 취소했습니다. 기능이 아직 실행 중일 수 있습니다.
}

몇 초보다 긴 작업의 경우 는 연결을 열어 두는 대신 작업을 대기열에 넣습니다.

#
디버그

5. 원인 찾기

  • 플랫폼 오류에는 요청 ID가 포함됩니다: error.details.error.request_id. 지원팀에 문의할 때 이를 인용하세요.
  • aura functions logs <name>는 메서드, 경로, 상태, 기간 및 요청 ID와 함께 최근 HTTP 요청을 나열합니다. 함수가 console.log 또는 console.error를 사용하여 작성한 내용은 표시되지 않습니다. 해당 출력은 플랫폼 운영자만 읽을 수 있는 런타임 자체 로그에 유지됩니다. 이것과 다른 현재 격차에 대해서는 제한을 참조하세요.
  • 호출 식별자는 함수로 전달되지 않습니다. headers에 자신의 ID를 전달하고 기록하세요.
마지막 업데이트 · 2026. 10. 12.