在AnalyticDB Supabase中使用边缘函数

更新时间:

云原生数据仓库AnalyticDB PostgreSQLSupabase 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

  1. 登录Supabase Dashboard

  2. Dashboard侧边栏单击Edge Function>Functions

  3. 单击页面右上角的Deploy a new function,在下拉选项中选择Via Editor

    image

  4. 在代码编辑器中编写代码。

    重要

    如需在Function中导入第三方依赖或调用公网API,需要为云原生数据仓库AnalyticDB PostgreSQLSupabase项目开通公网访问

    本文示例如下,包含 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';
    }
  5. 在右下角编辑Edge Function的名称,然后单击Deploy部署。

测试Edge Function

通过Dashboard测试

  1. 单击Functions页面右上角的Test按钮。

    image

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

    image

使用curl命令测试

复制Details页签下的curl命令,并将其中的[YOUR ANON KEY]替换为anon keyservice role key

image

返回示例如下:

image

更新Edge Function

  1. Dashboard侧边栏单击Edge Function>Functions,然后单击目标Function。

    image

  2. 单击Code页签,编辑目标文件。

  3. 单击右下角的Deploy updates按钮更新Edge Function。

    image

删除Edge Function

  1. Dashboard侧边栏单击Edge Function>Functions,单击目标Function。

  2. 单击Details页签。

  3. 单击Delete function区域的Delete edge function按钮,然后在对话框中单击Delete按钮。

    image

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

  1. Dashboard侧边栏单击Edge Function>Secrets

  2. 输入KeyValue。

    image

  3. 单击Save完成添加。

Edge Function中获取Secrets

您可以使用Deno的内置处理器访问环境变量,访问时只需传递环境变量名称即可。使用场景请参见集成AI服务

Deno.env.get('NAME_OF_SECRET')