在AnalyticDB Supabase中使用边缘函数
云原生数据仓库AnalyticDB PostgreSQL版Supabase Edge Functions是一项全托管边缘计算服务,允许您将TypeScript Deno函数部署到AnalyticDB Supabase项目中。与开源自托管的Supabase相比,AnalyticDB Supabase提供了完整的Edge Functions管理能力,确保您的代码和数据完全自主可控,同时提供与Supabase Cloud一致的开发体验。本文为您介绍AnalyticDB Supabase Edge Function的部署与管理操作,以及Secrets的配置与集中管理能力,帮助您快速构建安全可控的边缘计算应用。
功能简介
AnalyticDB Supabase Edge Functions提供了一套基于Deno的边缘计算方案,为全栈应用开发者带来现代化的无服务器体验。
开源社区提供的Supabase,其函数管理后台未开放源码,自建用户无法通过图形界面或命令行工具完成生产环境部署。AnalyticDB Supabase通过打造自有的Edge Functions管控平台解决了这一问题,并且所有代码和配置数据都驻留在您的私有环境中,实现功能真正可用和自主可控。
此外,AnalyticDB Supabase还提供原生的Edge Function Secrets配置与集中管理能力,可将敏感信息(如阿里云百炼平台API Key)安全地存放在密钥库中,通过Deno.env.get读取,避免硬编码或客户端暴露。
优势
TypeScript原生开发:无需编译打包,TypeScript源码直接部署,开发流程更简洁。
生态互通:函数内可直接访问Supabase数据库、用户鉴权、对象存储等服务,无需额外配置。
隔离与高性能:借助沙箱机制和Deno安全模型,确保每个请求独立运行,同时实现毫秒级响应和几乎无感的冷启动。
使用流程
部署Edge Function
在Dashboard侧边栏单击Edge Function>Functions。
单击页面右上角的Deploy a new function,在下拉选项中选择Via Editor。

在代码编辑器中编写代码。
重要如需在Function中导入第三方依赖或调用公网API,需要为云原生数据仓库AnalyticDB PostgreSQL版Supabase项目开通公网访问。
本文示例如下,包含
index.ts(入口文件)和foo.ts。import { foo } from './foo.ts'; console.info('server started'); Deno.serve(async (req)=>{ const { name } = await req.json(); const data = { message: `Hello ${foo()} ${name}!` }; return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json', 'Connection': 'keep-alive' } }); });export function foo() { return 'bar'; }在右下角编辑Edge Function的名称,然后单击Deploy部署。
测试Edge Function
通过Dashboard测试
单击Functions页面右上角的Test按钮。

在面板中单击右下角的Send Request。

使用curl命令测试
复制Details页签下的curl命令,并将其中的[YOUR ANON KEY]替换为anon key或service role key。

返回示例如下:

更新Edge Function
在Dashboard侧边栏单击Edge Function>Functions,然后单击目标Function。

单击Code页签,编辑目标文件。
单击右下角的Deploy updates按钮更新Edge Function。

删除Edge Function
在Dashboard侧边栏单击Edge Function>Functions,单击目标Function。
单击Details页签。
单击Delete function区域的Delete edge function按钮,然后在对话框中单击Delete按钮。

Secrets管理
在AnalyticDB Supabase中,阿里云提供原生的Edge Function Secrets配置与集中管理能力,可将敏感信息安全地存放在函数运行环境的密钥库中,通过Deno.env.get读取,避免硬编码或客户端暴露。
默认Secrets
Edge Functions默认可访问以下密钥:
名称 | 说明 |
SUPABASE_URL | AnalyticDB Supabase项目的API网关地址。 |
SUPABASE_ANON_KEY | AnalyticDB Supabase API的匿名密钥。启用行安全策略时,该密钥可以安全地在浏览器中使用。 |
SUPABASE_SERVICE_ROLE_KEY | AnalyticDB Supabase API的服务角色密钥。该密钥可以在Edge Functions中安全使用,但切勿在浏览器中使用,此密钥将绕过行安全策略的限制。 |
创建自定义Secrets
在Dashboard侧边栏单击Edge Function>Secrets。
输入Key和Value。

单击Save完成添加。
在Edge Function中获取Secrets
您可以使用Deno的内置处理器访问环境变量,访问时只需传递环境变量名称即可。使用场景请参见集成AI服务。
Deno.env.get('NAME_OF_SECRET')