光环标志
光环基地文档
文档›Edge Functions›SDK reference

JavaScript SDK:函数

aura.functions的每个方法、它的签名、它需要的角色以及它返回的内容。

8分钟 读取·级别 参考·修改于 2026年10月12日
该英文文本是根据法文原文自动生成的,尚未经过审查。
该页面已自动翻译。英文版具有权威性。
#
设置

1. 获取客户

aura.functions 是 FunctionsService。您几乎从不自己构建它。

client.tstypescript
import { createClient } from '@aurabase/aurabase-js'

const aura = createClient('https://my-app.aurabase.cloud', 'aura_anon_…')
aura.functions.invoke('hello')

包 @aurabase/functions 与 @aurabase/aurabase-js一起安装。仅当您从 @aurabase/core编写自己的客户端时才单独安装它。它需要 Node.js 20 或更高版本,并附带带有类型声明的 ES 模块和 CommonJS。

每个方法都会返回 Promise<AuraResponse<T>>,一个永远不会抛出异常的对象 { data, error } :

案例dataerror
成功价值null
无内容的成功(204,空体)nullnull
失败null一个 AuraError

当您需要该值时,测试 data 而不是 error :只有这样 TypeScript 才知道它不是 null。

方法需要的角色
invoke公钥 (anon)、用户或 service_role
所有其他方法service_role(仅限服务器)
#
致电

2. 调用

signaturetypescript
invoke<T = unknown>(
  name: string,
  options?: {
    body?: unknown
    method?: string
    path?: string
    headers?: Record<string, string>
    signal?: AbortSignal
    timeout?: number
    responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer'
  },
): Promise<AuraResponse<T>>
选项默认
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. 列出并获取

signaturestypescript
list(): Promise<AuraResponse<FunctionDef[]>>
get(nameOrId: string): Promise<AuraResponse<FunctionDef>>

两者都需要 service_role 密钥。 get 接受 名称 或 id;如果函数的名称类似于 id,则名称优先。 FunctionDef 包含函数的源代码和变量,这就是公钥接收 403的原因。

没有方法可以部署、更新或删除函数,或者写入机密:使用 HTTP API 或 CLI。

#
背景

4. 工作机会

signaturestypescript
enqueueJob(
  functionName: string,
  options?: { payload?: unknown; delaySecs?: number; maxAttempts?: number },
): Promise<AuraResponse<Job>>

listJobs(options?: { status?: string; limit?: number }): Promise<AuraResponse<Job[]>>
getJob(jobId: string): Promise<AuraResponse<Job>>
  • 当 functionName 为空或仅有空格时,enqueueJob 返回 { code: 'bad_request', status: 400 },无需任何请求,否则修剪名称。
  • listJobs 对 status (pending、 running、 completed、 failed、 dead)进行过滤,并返回 1 到 500 个作业,默认情况下为 50 个。
  • 重试死作业没有方法:请参阅 死信队列。
#
时间表

5. 计划任务

signaturestypescript
listCronJobs(): Promise<AuraResponse<CronJob[]>>
createCronJob(
  name: string,
  schedule: string,
  functionName: string,
  options?: { payload?: unknown },
): Promise<AuraResponse<CronJob>>
deleteCronJob(name: string): Promise<AuraResponse<null>>

schedule 有 5 或 6 个字段,采用 UTC。 deleteCronJob 采用 名称,并针对未知名称返回 404 。没有 getCronJob 或 updateCronJob。

#
参考

6. 类型和错误

由 @aurabase/aurabase-js 和 @aurabase/functions导出:

importstypescript
import {
  FunctionsHttpError,
  FunctionsRelayError,
  isRelayStatus,
  type FunctionsResponseType,
} from '@aurabase/aurabase-js'
出口它是什么
FunctionsHttpError您的函数(或管理路由)回答了错误。 error.context 保存它返回的主体。
FunctionsRelayError平台失败:网关或运行时生成的网络 (status 0) 或 502、 503、 504 。
isRelayStatus(status)true 代表 0、 502、 503、 504。
FunctionsResponseType`'json' \

两个错误类都扩展 AuraError,因此 isAuraError(error) 为 true。 AuraError 具有 status、 code、 message、 details、 retryAfter和吸气剂 isNotFound、 isUnauthorized、 isForbidden 和 isRateLimited。

数据类型,由 @aurabase/aurabase-js导出:

类型领域
FunctionDefid、 project_id、 name、 runtime、 code、 code_hash、 env_vars、 permissions、 is_active、 created_at、 updated_at
FunctionPermissionsallow_net: string[]、 memory_mb: number、 timeout_secs: number
Jobid、project_id、function_name、status、payload、attempts、max_attempts、error?、scheduled_at、started_at?、created_at、completed_at?
CronJobid、 project_id、 name、 schedule、 function_name、 payload、 is_active、 last_run?、 next_run?、 created_at
AuraResponse<T>{ data, error, meta? }
向后兼容的属性

当函数返回 JSON 对象时, data 还带有两个不可枚举属性 body 和 status,为针对旧版本编写的代码保留。不要在新代码中依赖它们。

最后更新· 2026年10月12日