Edge Functions是一种无服务器解决方案,用于连接前端应用与后端逻辑。它允许您将自定义代码部署在全球边缘节点,从而在无需管理服务器的情况下实现低延迟和高可用性的API与事件处理。当需要进行数据验证、调用第三方服务(如AI模型)或聚合API时,Edge Functions可提供有效的支持。PolarDB Supabase提供了一整套完整的Edge Functions功能,使您能够轻松构建和部署这些函数,而无需进行服务器管理。
功能简介
PolarDB Supabase的Edge Functions是基于Deno运行时构建的轻量级无服务器服务,专为现代全栈应用设计。
其核心能力包括:
毫秒级冷启动与强隔离性:基于Deno和V8 Isolates技术,每个请求都在独立的沙箱中执行,确保了内存和作用域的完全隔离,同时将冷启动时间降至毫秒级。
原生TypeScript支持:无需Webpack等构建工具,可以直接编写和部署
.ts
文件。与Supabase生态无缝集成:函数内可直接访问数据库、认证、存储等Supabase服务,无需额外配置连接。
开源版本的Supabase包含了Edge Functions 的运行引擎,但其管理后台(FaaS Backend)并未开源。这意味着,如果您自建Supabase,虽然可以在本地模拟运行函数,却无法通过图形化界面(Studio)或命令行(CLI)将函数部署到您的环境中,导致该核心能力无法在实际业务中使用。PolarDB Supabase则通过自研的轻量级FaaS管理系统,补全了这一能力,在提供完整功能的同时,确保您的代码和元数据存储在您自己的资源中,由您完全掌控。
应用场景
Edge Functions是连接前端、数据库和第三方服务的智能中枢,典型的应用场景包括:
集成AI服务:在函数中调用大语言模型(LLM)API,实现内容生成、摘要、语义搜索或内容审核等AI功能。
数据验证与转换:在数据写入数据库前,执行复杂的数据校验、权限检查或格式转换逻辑。
安全的第三方API调用:将涉及敏感密钥(API Key)或受CORS限制的第三方服务调用封装在函数中,避免在客户端暴露密钥。
API聚合:合并多个数据库查询或外部API的响应,将它们整合为单个数据源返回给前端,减少网络请求次数。
安全代理:为敏感操作(如删除或高权限修改)提供一个安全的中间层,避免客户端直接执行高风险操作。
优势
相较于自建开源版本或完全托管的Supabase Cloud,PolarDB Supabase在提供完整功能的同时,兼顾了企业级的控制力与灵活性。
完整的开发体验:同时支持通过PolarDB Supabase控制台的在线编辑器(Studio)和本地打包上传(支持
eszip
和zip
格式)两种方式部署函数,与Supabase Cloud体验保持一致。企业级资源管控:函数代码存储在您私有的仓库中,元数据存储在您的集群中,确保了数据的安全性。
高性能与强隔离:基于Deno和V8 Isolates技术,实现毫秒级冷启动和请求间的内存与作用域安全隔离。
原生无缝集成:可直接访问PolarDB Supabase内的数据库、认证和存储服务,无需额外配置。
原生TypeScript支持:无需复杂的构建步骤,可以直接编写和部署
.ts
文件。
注意事项
代码部署:通过PolarDB Supabase控制台的在线编辑器部署时,系统会自动处理依赖和打包。若本地打包上传,请确保格式正确:
eszip:包含所有依赖的单个可执行文件包。
zip:仅包含源码,上传后由服务端完成依赖打包。
资源限制:每个函数执行都有最大运行时长和内存限制,以防止滥用。请设计高效的代码逻辑。
网络访问限制:PolarDB Supabase默认情况下无法访问公网,您需要先配置一个公网NAT网关以支持对公网的访问。
操作步骤
阶段一:(可选)配置公网NAT网关
若您计划在Edge Functions中调用第三方服务(如AI模型)或聚合API,则需要先为PolarDB Supabase配置一个公网NAT网关以支持对公网的访问。
创建公网NAT网关:请前往NAT 网关 - 公网 NAT 网关购买页进行创建。在创建过程中,请确保选择与相同的VPC和交换区。
配置SNAT条目:前往公网 NAT 网关页面。单击目标网关操作列的设置SNAT,单击创建SNAT条目。参数请按如下配置:
SNAT条目粒度:VPC粒度。
选择弹性公网IP地址:在下拉列表中选择提供公网访问的EIP。
阶段二:挂载存储
挂载存储操作会自动重启PolarDB Supabase应用,请在挂载前做好业务安排,谨慎操作。
Edge Functions功能需将打包后的代码文件进行存储。在此之前,您需要在PolarDB Supabase应用上挂载一个存储实例。
登录PolarDB控制台,在集群详情页中,单击左侧导航栏中的 ,找到您的PolarDB Supabase应用。
单击依赖资源列上的挂载存储。在选择冷存目录页面内填写如下配置进行挂载。
冷存实例ID:
若您之前已创建过冷存实例,则按需选择即可。
若您之前未未创建过冷存实例,请单击创建目录。配置如下参数以创建冷存实例。
参数
说明
存储类型
按需选择您的存储类型。
本地冗余:数据冗余存储在某个特定的可用区内。
同城冗余:数据冗余存储在多可用区(AZ)内。
UID
填写您的主账号UID。
PolarFS AK与PolarFS SK:填写您主账号的AccessKey。
阶段三:创建函数
登录PolarDB控制台,在集群详情页中,单击左侧导航栏中的 ,找到您的PolarDB Supabase应用。
连接Supabase应用,在左侧导航栏进入Edge Functions页面,点击Deploy a new function。您可以通过以下任一方式创建函数:
Via Editor:直接在浏览器内置的代码编辑器中编写或粘贴函数代码。
Via Upload:上传本地打包文件。
在浏览器内置的代码编辑器中编写代码或上传完成后,填写函数名称(Function Name),并单击Deploy Function完成创建。
阶段四:部署与调用
部署成功后,系统会生成一个唯一的调用URL,格式如下:http://<您的Supabase实例公网地址>/functions/<版本号>/<您的函数名>
。
登录PolarDB控制台,在集群详情页中,单击左侧导航栏中的 ,找到您的PolarDB Supabase应用。
连接Supabase应用,在左侧导航栏进入Edge Functions页面,找到您的函数。您可以在URL列中看到具体的调用地址。