边缘函数

边缘函数

全球分布的 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 示例