用途
Supabase Edge Functions 技能用于在 Deno 运行时下开发与部署 Supabase 边缘函数(Edge Functions)。它适合需要创建无服务器函数、Webhook、API 端点或定时任务的场景。
主要能力
该技能覆盖了 Supabase Edge Functions 的完整工作流:
- 函数管理:通过 CLI 创建、本地服务、部署和删除函数。
- 本地开发:支持本地服务所有函数,可加载环境变量文件,也可关闭 JWT 验证。
- 函数结构:提供基础函数模板,使用
Deno.serve处理请求。 - CORS 处理:展示如何处理跨域预检请求和设置响应头。
- Supabase 客户端:演示如何使用 service role 或用户 JWT 创建客户端,并查询数据。
- 用户认证:从 JWT 中获取用户信息,处理未授权情况。
- 环境变量与密钥:设置、列出密钥,并在函数中访问内置变量。
- 部署与调用:部署单个或所有函数,支持关闭 JWT 验证,并可从 JavaScript 调用。
- Webhook 函数:以 Stripe Webhook 为例,展示签名验证和事件处理。
- 数据库 Webhook:通过数据库触发器调用函数。
- 定时任务:使用 pg_cron 扩展调度函数。
- 配置:通过 config.toml 配置函数的 JWT 验证和 import map。
- 共享代码:使用
_shared文件夹存放可复用代码。
使用方式
通过 Supabase CLI 执行命令,例如:
- 创建函数:
supabase functions new <name> - 本地服务:
supabase functions serve - 部署:
supabase functions deploy <name> - 删除:
supabase functions delete <name> - 设置密钥:
supabase secrets set KEY=value - 列出密钥:
supabase secrets list
函数代码使用 TypeScript 编写,导入 jsr:@supabase/functions-js/edge-runtime.d.ts,并通过 Deno.serve 定义处理逻辑。
适用场景
- 构建无服务器 API 端点
- 处理第三方 Webhook(如 Stripe)
- 响应数据库变更(数据库 Webhook)
- 执行定时任务(Cron)
- 需要与 Supabase 数据库和认证集成的后端逻辑
限制
根据资料,Supabase Edge Functions 存在以下限制:
- CPU 时间:2 秒
- 请求超时:150 秒
- Wall Clock(Pro):400 秒
- 打包大小:20 MB
其他限制暂未提供。