JavaScript SDK: 함수
aura.functions의 모든 메소드, 서명, 필요한 역할 및 반환되는 내용.
1. 클라이언트 확보
aura.functions는 FunctionsService입니다. 직접 구축한 경우는 거의 없습니다.
@aurabase/functions 패키지는 @aurabase/aurabase-js와 함께 설치됩니다. @aurabase/core에서 자신의 클라이언트를 구성하는 경우에만 단독으로 설치하세요. Node.js 20 이상이 필요하며 유형 선언과 함께 ES 모듈 및 CommonJS를 제공합니다.
모든 메소드는 다음을 발생시키지 않는 객체 { data, error }인 Promise<AuraResponse<T>>를 반환합니다.
| 케이스 | data | error |
|---|---|---|
| 성공 | 가치 | null |
| 내용 없는 성공(204, 빈 본문) | null | null |
| 실패 | null | AuraError |
값이 필요할 때 error 대신 data를 테스트합니다. 그런 다음에만 TypeScript는 해당 값이 null이 아니라는 것을 알 수 있습니다.
| 방법 | 필요한 역할 |
|---|---|
invoke | 공개 키(anon), 사용자 또는 service_role |
| 다른 모든 방법 | service_role(서버 전용) |
2. 호출
| 옵션 | 기본값 | |
|---|---|---|
body | 없음 | JSON 직렬화 가능. Blob, ArrayBuffer, 형식화된 배열, FormData, URLSearchParams 또는 ReadableStream는 요청 없이 invalid_body 오류를 반환합니다. |
method | 'POST' | 함수가 보는 방법 |
path | '/' | 함수가 보는 경로 |
headers | 없음 | 함수에 제공된 헤더입니다. authorization, apikey, x-request-id 및 x-aura-* 는 플랫폼에 의해 삭제됩니다. |
timeout | 클라이언트 기본값, 30초 | 밀리초. 통화를 취소하고 timeout코드를 반환합니다. |
signal | 없음 | 당신만의 AbortSignal. 취소된 통화는 timeout코드를 반환합니다. |
responseType | 'json' | data 디코딩 방법: 구문 분석된 값, 문자열, Blob 또는 ArrayBuffer |
name는 URL에 인코딩되므로 /, ? 또는 #을 포함하는 값은 해당 위치를 벗어날 수 없습니다. 이러한 문자가 포함된 이름은 찾을 수 없습니다.
invoke는 만료된 사용자 세션을 먼저 새로 고치고, 사용자 세션이 있을 때 사용자의 JWT을 보내고, 호출을 다시 시도하지 않습니다.
사용 방법: 함수를 호출합니다. 실패 방법: 오류, 시간 초과 및 재시도.
3. 나열하고 가져오기
둘 다 service_role 키가 필요합니다. get는 이름 또는 ID를 허용합니다. 함수의 이름이 ID와 같으면 이름이 우선합니다. FunctionDef에는 함수의 소스 코드와 변수가 포함되어 있으므로 공개 키가 403를 수신합니다.
함수를 배포, 업데이트 또는 삭제하거나 비밀을 작성하는 방법은 없습니다. HTTP API 또는 CLI를 사용하세요.
4. 일자리
enqueueJob는functionName가 비어 있거나 공백만 있는 경우 요청 없이{ code: 'bad_request', status: 400 }을 반환하고 그렇지 않으면 이름을 자릅니다.listJobs는status(pending,running,completed,failed,dead)를 필터링하고 1~500개의 작업(기본적으로 50개)을 반환합니다.- 중단된 작업을 재시도하는 방법은 없습니다. 배달 못한 편지 대기열을 참조하세요.
5. 크론
schedule에는 UTC 기준으로 5개 또는 6개의 필드가 있습니다. deleteCronJob는 이름을 취하고 알 수 없는 이름에 대해 404를 반환합니다. getCronJob 또는 updateCronJob이 없습니다.
6. 종류와 오류
@aurabase/aurabase-js 및 @aurabase/functions에서 내보냈습니다.
| 수출 | 그것은 무엇입니까 |
|---|---|
FunctionsHttpError | 귀하의 기능(또는 관리 경로)이 오류로 응답했습니다. error.context는 반환된 본문을 보유합니다. |
FunctionsRelayError | 플랫폼 실패: 네트워크(status 0) 또는 502, 503, 504가 게이트웨이 또는 런타임에 의해 생성되었습니다. |
isRelayStatus(status) | 0, 502, 503, 504용 true. |
FunctionsResponseType | `'json' \ |
두 오류 클래스 모두 AuraError를 확장하므로 isAuraError(error)는 true입니다. AuraError에는 status, code, message, details, retryAfter및 게터 isNotFound, isUnauthorized, isForbidden 및 isRateLimited이 있습니다.
@aurabase/aurabase-js에서 내보낸 데이터 유형:
| 유형 | 필드 |
|---|---|
FunctionDef | id, project_id, name, runtime, code, code_hash, env_vars, permissions, is_active, created_at, updated_at |
FunctionPermissions | allow_net: string[], memory_mb: number, timeout_secs: number |
Job | id, project_id, function_name, status, payload, attempts, max_attempts, error?, scheduled_at, started_at?, created_at, completed_at? |
CronJob | id, project_id, name, schedule, function_name, payload, is_active, last_run?, next_run?, created_at |
AuraResponse<T> | { data, error, meta? } |
함수가 JSON 객체를 반환할 때 data는 이전 버전에 대해 작성된 코드를 위해 유지되는 두 개의 열거 불가능한 속성인 body 및 status도 전달합니다. 새 코드에서는 이에 의존하지 마세요.