光环标志
光环基地文档
文档›指南›Upgrade to SDK 0.6

升级至SDK 0.6及新功能规则

从 JavaScript SDK 调用 Edge Functions 的项目的清单,其中包含您可能需要轮换的机密。

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

1. 发生了什么变化

安装新版本:

terminalbash
npm install @aurabase/aurabase-js@0.6.0

该版本进行了一项安全更改,并对错误和响应的报告方式进行了多项修复。安全性更改也在功能服务中:无论您使用什么 SDK 版本,一旦服务更新,它就会应用到您的项目。

#
打破

2. 重大变化

管理调用现在需要 service_role 密钥

functions.list()、 get()、 listJobs()、 getJob()、 enqueueJob()、 listCronJobs()、 createCronJob() 和 deleteCronJob() 将 403 返回给公钥或登录用户。之前,list() 和 get() 将每个函数的源代码和变量返回给持有公钥的任何人。请参阅 安全模型。

before.ts (浏览器)typescript
const { data } = await aura.functions.list() // 使用公钥
之后:将其移至您的服务器typescript
// 服务器/api/functions.ts
const admin = createClient(process.env.AURA_URL!, process.env.AURA_SERVICE_ROLE_KEY!)
export const GET = async () => Response.json((await admin.functions.list()).data?.map((f) => f.name))

仅返回前端需要的内容(例如名称),而不返回整个定义。

不能是 JSON 的正文将被拒绝

invoke(name, { body: new Blob(…) }),与 ArrayBuffer、类型化数组、 FormData、 URLSearchParams 或 ReadableStream相同,现在返回错误代码 invalid_body。之前,函数收到{},没有报错。对二进制数据进行编码 (base64) 或将其上传到存储并发送其路径。

函数自己的 502、 503 或 504 是 FunctionsHttpError

以前,这些状态始终被归类为 FunctionsRelayError,即使您的代码返回了它们。现在 FunctionsRelayError 意味着 平台 失败。如果您重试 FunctionsRelayError,请检查您的重试逻辑是否仍然匹配:请参阅 错误、超时和重试。

FunctionDef 更精确

env_vars 是 Record<string, string> (它是 Record<string, unknown>)并添加 permissions 。读取这些字段的代码可以继续工作;分配另一种类型的值的代码不再编译。

#
修复

3. 行为修复

之前现在
返回带有文本的 500 的函数生成消息 "null"该消息是您的函数返回的文本
返回 200 并生成文本 { data: null, error: null } 的函数data 是文本
默认模式下的二进制响应产生 { data: null, error: null }error.code 是 invalid_response 并且消息表明 responseType
responseType: 'text' 带有错误 JSON { "error": "…" } 显示 HTTP 503消息是从 JSON 中读取的,与默认模式一样
'text'、 'blob' 和 'arrayBuffer' 没有默认超时客户端超时(30 秒)适用
未编码的函数名称被插入到 URL 中它被编码:a/../b 保留在其路径内
作业上的 delaySecs 被忽略:作业立即运行该作业等待其日期

新导出: FunctionsHttpError、 FunctionsRelayError、 isRelayStatus 和 FunctionsResponseType 来自 @aurabase/aurabase-js 以及 @aurabase/functions。如果您从 @aurabase/functions导入它们,那么它仍然有效;使用 pnpm,您不再需要该包作为直接依赖项。

在 @aurabase/auth中, getClaims() 结果中 email 的类型现在是 string | null,这是服务为没有电子邮件地址的用户返回的类型。

CLI。 aura functions deploy 不再删除已存在函数的秘密。 aura functions invoke --data 拒绝无效的 JSON,而不是发送 {}。 aura functions download 适用于 Deno 函数。 aura functions serve 监听它宣布的端口。 aura studio 在端口 3000 上打开 Studio。

#
安全性

4.轮换暴露的秘密

如果您的项目运行在此更改之前的服务版本,则您的公钥的任何持有者都可以读取您的函数的代码和变量。假设他们被读到:

  1. 使用 service_role 键列出您的函数并打开每个函数的变量。
  2. 轮换它们包含的每个秘密:支付密钥、webhook 秘密、第三方令牌。
  3. 删除直接写入 index.ts 中的机密并将其移动到变量中。
  4. 检查项目的作业和警报规则中是否有您未创建的条目。
#
清单

5. 清单

  • 在浏览器中或使用公钥运行的代码中搜索 functions.list(、 functions.get(、 listJobs(、 getJob(、 enqueueJob(、 createCronJob(、 deleteCronJob( 和 listCronJobs( 的代码。
  • 搜索非纯 JSON 的 body: 值。
  • 检查依赖于 FunctionsRelayError的重试逻辑。
  • 如上所述轮换机密。
  • 更新 CLI。
最后更新· 2026年10月12日