Edge Functions HTTP API 참조
각 경로에 필요한 역할을 포함하는 기능 서비스의 전체 HTTP 표면입니다.
1. 협약
기본 URL. 프로젝트의 URL입니다(예: https://my-app.aurabase.cloud). 프로젝트는 호스트로 식별되므로 아래 경로에는 프로젝트 ID가 없습니다. 긴 형식의 /v1/functions/{project_id}/…도 허용됩니다.
인증. apikey 헤더에 키를 보냅니다. 로그인한 사용자로 호출하려면 Authorization: Bearer <JWT>를 추가하세요. Studio는 콘솔 세션 토큰을 사용하여 동일한 경로를 호출하여 admin 역할을 부여합니다.
| 역할 | 어떻게 얻나요? | 전화할 수도 있음 |
|---|---|---|
anon | 프로젝트의 공개 키 | POST …/invoke |
authenticated | 공개 키와 사용자의 JWT | POST …/invoke |
service_role | service_role 키(서버 전용) | 아래의 모든 경로 |
admin | 콘솔 세션(Studio) | 아래의 모든 경로 |
다른 경로는 403에서 anon 및 authenticated로 응답합니다.
형식. 본문은 JSON이며 Content-Type: application/json가 필요합니다. 성공은 { "data": …, "meta": null }입니다. 실패는 { "error": { "code", "message", "type", "request_id" } }입니다.
함수 개체.
| 필드 | 유형 | |
|---|---|---|
id, project_id, name | 문자열 | |
runtime | "deno" 또는 "wasm" | |
code | 문자열 | deno의 소스; wasm에 대해 컴파일된 바이너리의 base64 |
code_hash | 문자열 | code의 SHA-256 |
env_vars | 물체 | 가치의 핵심 |
permissions | 물체 | allow_net(문자열 배열), memory_mb, timeout_secs |
is_active | 부울 | |
created_at, updated_at | ISO 8601 |
2. 기능
| 방법 및 경로 | 역할 | 본체 | 응답 |
|---|---|---|---|
GET /v1/functions | service_role | 없음 | 함수 객체 배열 |
POST /v1/functions | service_role | { name, runtime, code, env_vars? } | 함수 객체 |
GET /v1/functions/{name} | service_role | 없음 | 함수 객체. {name}는 이름이거나 해당 이름을 가진 함수가 없는 경우 ID입니다. |
PATCH /v1/functions/{name} | service_role | { code?, env_vars?, is_active?, permissions? } | 함수 객체 |
DELETE /v1/functions/{name} | service_role | 없음 | { "data": null } |
GET /v1/functions/{name}/code | service_role | 없음 | { "data": { "code": "…" } } |
GET /v1/functions/{name}/env | service_role | 없음 | { "data": [ { "key", "value" } ] }, 값이 해독됨 |
PUT /v1/functions/{name}/env | service_role | { "vars": [ { "key", "value" } ] } | { "data": null } |
참고:
POST는name에 대한 upsert입니다. 기존 이름을 게시하면 해당 코드가 대체됩니다. 해당 본문의env_vars필드는 기존 변수를 대체합니다. 유지하려면 이를 생략하세요.PATCH에서permissions는 필드별로 병합됩니다.{ "permissions": { "timeout_secs": 60 } }는allow_net및memory_mb를 유지합니다. 범위 밖의 필드는400를 반환합니다.PUT …/env는 전체 변수 세트를 대체하며 이를 암호화하는 유일한 경로입니다. 비밀을 참조하세요.is_active: false이 있는 함수는invoke또는 작업에서 찾을 수 없습니다.
3. 호출
POST /v1/functions/{name}/invoke. 역할: anon, authenticated 또는 service_role.
| 필드 | 유형 | 기본값 | |
|---|---|---|---|
method | 문자열 | POST | 함수가 보는 HTTP 메소드 |
path | 문자열 | / | 함수가 본 경로 |
headers | 물체 | 없음 | 함수에 제공된 헤더입니다. 예약된 헤더는 삭제됩니다. |
body | 모든 JSON | 없음 | 함수에 주어진 본문 |
| 요청 헤더 | |
|---|---|
apikey | 필수 |
Content-Type: application/json | 필수 |
Authorization: Bearer <JWT> | 선택 사항: 해당 사용자로 전화 |
X-Aurabase-Invoke-Mode: raw | 선택사항: 함수 자체 응답을 반환합니다. |
기본 응답은 항상 200입니다.
status는 함수의 상태입니다. logs은 deno에 대해 비어 있습니다. 원시 모드에서 응답은 함수 고유의 상태, content-type, 바이트, x-aurabase-invoke-origin: function입니다.
| 실패 | 상태 | error.code |
|---|---|---|
| 기능을 찾을 수 없거나 비활성화되었습니다. | 404 | NOT_FOUND |
| 런타임에 도달할 수 없음 | 503 | SERVICE_UNAVAILABLE |
플랫폼이 런타임 대기를 중지했습니다(timeout_secs 및 여백 이후). | 504 | TIMEOUT |
| 계획 할당량이 소진되었습니다. | 403 | QUOTA_EXCEEDED |
| 한 고객의 통화가 너무 많습니다. | 429 | rate_limit_exceeded |
| 약 256KiB 이상의 본체 | 503 | SERVICE_UNAVAILABLE |
4. 작업 및 배달 못한 편지 대기열
| 방법 및 경로 | 역할 | 본문 또는 쿼리 | 응답 |
|---|---|---|---|
POST /v1/functions/jobs | service_role | { function_name, payload?, delay_secs?, max_attempts? } | 직업 |
GET /v1/functions/jobs | service_role | ?status=&limit= (1 ~ 500, 기본값 50) | 다양한 직업 |
GET /v1/functions/jobs/{id} | service_role | 없음 | 직업 |
POST /v1/functions/jobs/{id}/retry | service_role | 없음 | 작업, pending로 돌아가기 |
GET /v1/functions/jobs/dlq | service_role | ?limit= | 죽은 직업의 배열 |
POST /v1/functions/jobs/dlq/requeue | service_role | 없음 | { "data": { "requeued": 1 } } |
작업 개체: id, project_id, function_name, payload, status (pending, running, completed, failed, dead), attempts, max_attempts, error, scheduled_at, started_at, completed_at, created_at. 동작: 작업, cron 및 배달 못한 편지 대기열.
5. 크론
| 방법 및 경로 | 역할 | 본체 | 응답 |
|---|---|---|---|
POST /v1/functions/cron | service_role | { name, schedule, function_name, payload? } | 크론 항목 |
GET /v1/functions/cron | service_role | 없음 | 항목 배열 |
DELETE /v1/functions/cron/{name} | service_role | 없음 | { "data": null }또는 알 수 없는 이름의 경우 404 |
항목: id, project_id, name, schedule (6개 필드로 저장됨), function_name, payload, is_active, last_run, next_run, created_at.
6. 경고
| 방법 및 경로 | 역할 | 본문 또는 쿼리 |
|---|---|---|
POST /v1/functions/alerts | service_role | { name, metric, condition, threshold, channel, destination } |
GET /v1/functions/alerts | service_role | 없음 |
PATCH /v1/functions/alerts/{id} | service_role | { "enabled": true } |
DELETE /v1/functions/alerts/{id} | service_role | 없음 |
GET /v1/functions/alerts/{id}/events | service_role | ?limit=&offset= |
GET /v1/functions/alerts/events | service_role | ?limit=&offset= |
값 및 동작: 경고.