边缘函数
全球分布的 TypeScript 函数。
Edge Functions 是服务器端 TypeScript 函数,在全球范围内分布在边缘——靠近您的用户。它们可用于监听 Webhook 或将您的 Supabase 项目与第三方集成,例如 Stripe。Edge Functions 使用 Deno 开发,这为您作为开发人员提供了一些好处
- 它是开源的。
- 它是可移植的。Supabase Edge Functions 可以在本地运行,也可以在任何其他 Deno 兼容平台上运行(包括自托管基础设施)。
- 它首先支持 TypeScript 和 WASM。
- Edge Functions 在全球范围内分布,以实现低延迟。
工作原理#
- 请求进入边缘网关(中继) — 网关路由流量,处理身份验证标头/JWT 验证,并应用路由/流量规则。
- 应用身份验证和策略 — 网关(或您的函数)可以验证 Supabase JWT,应用速率限制,并在执行代码之前集中安全检查。
- Edge runtime 执行您的函数 — 函数在最靠近用户的区域分布式 Edge Runtime 节点上运行,以最大限度地降低延迟。
- 集成和数据访问 — 函数通常调用 Supabase API(Auth、Postgres、Storage)或第三方 API。对于 Postgres,请优先选择适合边缘/无服务器环境的连接策略(请参阅
connect-to-postgres指南)。 - 可观察性和日志 — 调用会发出您可以在仪表板或下游监控(Sentry 等)中探索的日志和指标。
- 响应通过网关返回 — 网关将响应转发回客户端并记录请求元数据。
快速技术说明#
- 运行时: Supabase Edge Runtime(Deno 兼容运行时,首先支持 TypeScript)。函数是导出处理程序的简单
.ts文件。 - 本地开发对等性: 使用 Supabase CLI 实现与生产环境类似的本地运行时,以加快迭代速度(
supabase functions serve命令)。 - 全球部署: 通过 Supabase 仪表板、CLI 或 MCP 部署您的 Edge Functions。
- 冷启动和并发: 可能会发生冷启动 — 为短时间、幂等操作而设计。繁重的长时间运行作业应移动到 后台 worker。
- 数据库连接: 将 Postgres 视为远程池化服务 — 使用连接池或适合无服务器的驱动程序。
- 密钥: 将凭据存储在 Supabase 项目密钥 中,并通过环境变量访问它们。
何时使用 Edge Functions#
- 需要低延迟的经过身份验证或公共 HTTP 端点。
- Webhook 接收器(Stripe、GitHub 等)。
- 按需图像或 Open Graph 生成。
- 小型 AI 推理任务或协调调用外部 LLM API(如 OpenAI)
- 发送事务性电子邮件。
- 构建 Slack、Discord 等的即时消息机器人。
示例#
查看我们 GitHub 仓库中的 Edge Function 示例。