亚马逊AWS官方博客

后端即服务:AI时代应用部署新范式

摘要:AI Agent 创建数据库已成为行业新常态——在主流 Serverless 数据库平台上,80% 以上的数据库已由 Agent 创建。本文介绍如何基于 Aurora PostgreSQL + Supabase 构建后端即服务(BaaS)方案,为 AI Coding 场景提供开箱即用的数据库、认证、API 自动生成等能力。


一、概述

随着 AI 快速发展,越来越多的开发者借助Kiro、 CodeX、Claude Code 等 AI 编程助手快速构建应用。这些工具极大地降低了开发门槛,但也对底层数据基础设施提出了更高要求——应用生成速度从”天”缩短到”分钟”,后端数据库需要同时满足快速部署、弹性扩展和生产级可靠性。本文主要介绍如何基于Aurora PostgreSQL构建Supabase on AWS方案,加速AI Coding场景应用的落地,提供后端即服务的能力(BaaS)。

二、什么是后端即服务(BaaS)

BaaS(Backend as a Service,后端即服务)是一种云服务模式,为开发者提供开箱即用的后端能力,包括数据库、用户认证、文件存储、实时通信、API 网关等,开发者无需自行搭建和运维后端基础设施,只需通过 API 或 SDK 调用即可快速构建应用。这种模式大幅降低了开发门槛和运维成本,让开发者可以专注于前端和业务逻辑。典型的 BaaS 产品包括 Google Firebase、Supabase、AWS Amplify 等。主要包括以下核心能力:

  • 数据库服务:支持数据的存储、查询和实时同步。
  • 用户认证与授权:提供注册、登录、第三方 OAuth、行级权限控制等开箱即用的安全机制。
  • 文件存储:支持图片、视频等非结构化数据的上传、下载和管理。
  • 自动生成 API:根据数据库表结构自动生成 RESTful 或 GraphQL 接口,无需手动编写后端代码。
  • 实时通信:通过 WebSocket 等协议实现数据变更的实时推送。
  • Serverless Functions:允许开发者在需要时编写自定义的服务端逻辑。

这些能力通过统一的 SDK 和 API 对外提供,开发者无需关心服务器部署、扩缩容和运维,可以将精力集中在前端体验和业务逻辑上,从而大幅缩短开发周期、降低运维成本。

三、Supabase on AWS方案

Supabase on AWS 提供了一个可扩展的多租户平台,提供后端即服务(BaaS)的完整能力,用于在您自己的 AWS 账户中运行 Supabase。该项目旨在满足企业日益增长的需求——在利用 Supabase 强大的开源生态进行应用开发和部署的同时,对数据库基础设施、认证和 API 层保持完全的控制权。他是一个运行在 AWS 上的多租户 Supabase 平台,底层由 ECS Fargate、Kong Gateway、Aurora PostgreSQL Serverless v2 和 AWS CDK 驱动。该方案目前已在多个客户场景落地。

3.1 部署架构

[图1]

3.2 方案优势

  • 更强的管控能力:后端服务部署在客户自己的 AWS 账号中,数据和基础设施完全自主可控,同时对外提供服务给终端用户。
  • 更强的弹性能力:结合 Aurora Serverless PostgreSQL、ECS Fargate 等全托管服务,系统可根据负载自动扩缩容,轻松应对业务波动。
  • 更高的稳定性与可靠性:相比 EC2 + Docker 的部署方式,Aurora 提供更高的数据库可用性和数据持久性保障。
  • 更安全的网络架构:所有 终端用户API 调用均可在私有网络(VPC)内完成,无需暴露公网,安全性更高。
  • 更低的使用成本:不同租户可以共享数据库集群、Serverless 按需计费和 Free Tier 免费额度,有效降低运营成本。
  • 更好的用户体验:基于 Database 级别的租户隔离,支持 Project 秒级创建,开发者可即时获得完整的后端环境,不同的Project提供各自独立域名。

四、Aurora PostgreSQL优势

Aurora PostgreSQL 提供跨 3 个可用区 6 副本的高可用存储和秒级故障转移,内置 KMS 加密、IAM 认证、VPC 隔离等企业级安全能力,同时自动完成备份、补丁和故障恢复,实现全托管免运维,让开发者专注于业务本身。在 AWS 上运行 Supabase 时,Aurora PostgreSQL 成为关键的加速器。相比社区版 PostgreSQL,Aurora PostgreSQL还 带来了其他显著优势:

4.1 快速创建,支持秒级创建Serverless实例

首先,登陆到 Aurora 和 RDS 控制台,然后在导航窗格中选择“Dashboard”。接下来,选择带有火箭图标的“Create”。

[图2]

在几秒钟内创建并连接到 Aurora PostgreSQL,意味着您从根本上重新思考使用方式。我们推出了多项协同工作的功能,帮助您快速上手并使用 Aurora 运行应用程序。Aurora 现已在 AWS Free Tier中提供,您可以免费获得 Aurora 的实际使用体验。创建完成后,您可以直接在 AWS CloudShell 中查询 Aurora 数据库,也可以通过 API连接,使用编程语言和开发工具进行查询。借助Supabase on AWS 等集成,您可以使用自然语言,利用 Aurora 的各项功能和优势,轻松构建应用程序。

4.2 弹性扩展,快速响应多租户负载变化

smarter scaling可在秒级自动扩缩容,完美应对 AI Coding 场景中应用从零到爆发的流量波动,开发者无需预估容量,专注于产品迭代。Aurora Serverless 会在工作负载开始时自动分配 CPU 和内存资源,并在工作负载完成后释放这些资源。这种自主的按需扩展方式无需手动进行容量规划。特别值得一提的是,Aurora Serverless 现已支持 Scale to Zero(最小 ACU 可设为 0),当数据库无活跃连接时自动暂停,不产生计算费用;当首个连接请求到达时自动恢复,实现真正的按需付费。 Aurora Serverless 最近将其所有Serverless集群和平台版本的默认扩展速度提高了一倍,无需任何配置更改。下图显示了从 0 ACU 扩展到 256 ACU 所需的时间,对比了之前的扩展方式和当前更快的扩展方式。快速扩展(蓝线)在 22 分钟内达到了 256 ACU 的最大容量,而之前的扩展方式(黄线)则需要 40 分钟。这表明,Aurora Serverless 现在从 0.5 ACU 扩展到 256 ACU 的速度提高了 45%。更快的扩展速度使您的数据库能够更快地达到最佳性能,并缩短工作负载完成时间,从而在不增加成本的情况下提供更好的性能。

[图3]

4.3 向量引擎原生支持

通过 pgvector 扩展(当前 Aurora 已支持 pgvector 0.8.0 版本),Aurora PostgreSQL 可直接存储和检索向量嵌入,无缝对接 Supabase SDK 的向量查询接口,为 AI 应用中的 RAG(检索增强生成)、语义搜索等场景提供低延迟的向量查询能力,无需引入额外的向量数据库。pgvector 0.8.0 带来了显著的性能改进,包括 HNSW 索引构建速度提升和更优的查询延迟表现。

postgres=> create extension vector;  
CREATE EXTENSION  
postgres=> \dx  
                                    List of installed extensions  
     Name     | Version |   Schema   |                         Description  
--------------+---------+------------+--------------------------------------------------------------  
 plpgsql      | 1.0     | pg_catalog | PL/pgSQL procedural language  
 rds_tools    | 1.1     | rds_tools  | miscellaneous administrative functions for Aurora PostgreSQL  
 vector       | 0.8.0   | public     | vector data type and ivfflat and hnsw access methods

4.4 读写分离与全球部署

 Aurora PostgreSQL Serverless支持最多 15 个只读副本实现读写分离,结合 Aurora Global Database 可实现跨区域低延迟读取和灾备,为全球化 AI 应用提供数据层支撑。

4.5 快速克隆与分支开发

Aurora Clone 基于 Copy-on-Write 技术,可在秒级创建 TB 级数据库的完整副本,支持 AI 应用的多环境测试、数据分支和快速回滚,几乎不占用额外存储空间。

在实际落地中,Supabase on AWS 的架构将 Supabase 的开发者体验与 Aurora PostgreSQL 的企业级能力相结合:AI 工具生成前端代码和 API 逻辑,Supabase 提供认证与实时能力,Aurora PostgreSQL 承载核心数据层。这一组合让开发者能够在几分钟内从一个 AI 对话生成一个具备生产级数据库支撑的完整应用。

五、部署及效果展示

5.1 部署方案

部署步骤参考sample-supabase-on-aws Quick Start部分。部署后在ECS可以看到完整的服务列表情况。

[图4]

5.2 功能演示

Supabase on AWS所有的功能都通过HTTP或者SDK调用APIs进行访问,下面是基本功能使用演示,通过Kiro CLI执行。

Use the supabase-api-demo skill to demonstrate creating aproject, accessing the database, deploying a function, annd invoking a function via the
  Supabase API.Show the API call code, the executionprocess,and the results.

● Task list created

  Supabase on AWS — Full API Demo

  前置:设置 Studio ALB 地址变量

  STUDIO_ALB=$(aws elbv2 describe-load-balancers --names studio-alb \
    --profile supabase --region us-east-1 \
    --query 'LoadBalancers[0].DNSName' --output text)
● Shell export STUDIO_ALB=$(aws elbv2 describe-load-balancers --names studio-alb \
    --profile supabase --region us-east-1 \
    --query 'LoadBalancers[0].DNSName' --output text)
  echo "STUDIO_ALB=$STUDIO_ALB"
● Tasks updated

  Step 1: Create a New Project

  curl -sk -X POST "https://${STUDIO_ALB}/api/v1/projects" \
    -H "Content-Type: application/json" \
    -d '{"name": "demo-0618142830"}'
● Shell STUDIO_ALB=studio-alb-xxxx.us-east-1.elb.amazonaws.com
  curl -sk -X POST "https://${STUDIO_ALB}/api/v1/projects" \
    -H "Content-Type: application/json" \
    -d '{"name": "demo-0618142830"}'

  ✅ Project created!

  {"id":100, "ref":"00yeqsmc9g0qrmkpcb8q", "name":"demo-0618142830", "status":"ACTIVE_HEALTHY"}
● Tasks updated

  ...中间过程省略...

  Step 5: Query Data via REST API

  curl -sk "https://${REF}.supabase.jaydencrazy.win/rest/v1/demo_items?done=eq.false&order=id" \
    -H "apikey: ${SERVICE_KEY}" \
    -H "Authorization: Bearer ${SERVICE_KEY}"
● Shell REF=00yeqsmc9g0qrmkpcb8q
  SERVICE_KEY=sb_secret_VlQyCO1rU5sBeMcqpd83NDGA5Ri8ntLN

  curl -sk "https://${REF}.supabase.jaydencrazy.win/rest/v1/demo_items?done=eq.false&order=id" \
    -H "apikey: ${SERVICE_KEY}" \
    -H "Authorization: Bearer ${SERVICE_KEY}"

  ✅ Query with filter done=eq.false — returned only incomplete items:

  [{"id":1, "name":"Buy milk", "done":false, "created_at":"2026-06-18T06:31:22Z"}]
● Tasks updated

  Step 6: Deploy Edge Function

  BOUNDARY="----FormBoundary$(date +%s)"
  FUNCTION_CODE='Deno.serve((req) => {
    return new Response(
      JSON.stringify({ message: "Hello from Edge Function!", timestamp: new Date().toISOString(), method: req.method }),
      { headers: { "Content-Type": "application/json" } }
    )
  })'

  curl -sk -X POST "https://${STUDIO_ALB}/api/v1/projects/${REF}/functions/deploy?slug=demo-hello" \
    -H "Content-Type: multipart/form-data; boundary=$BOUNDARY" \
    --data-binary "<multipart body>"
● Shell STUDIO_ALB=studio-alb-xxxx.us-east-1.elb.amazonaws.com
  REF=00yeqsmc9g0qrmkpcb8q

  BOUNDARY="----FormBoundary$(date +%s)"
  FUNCTION_CODE='Deno.serve((req) => {
    return new Response(
      JSON.stringify({ message: "Hello from Edge Function!", timestamp: new Date().toISOString(), method: req.method }),
      { headers: { "Content-Type": "application/json" } }
    )
  })'

  BODY=$(printf -- "--%s\r\nContent-Disposition: form-data; name=\"file\"; filename=\"index.ts\"\r\nContent-Type: text/plain\r\n\r\n%s\r\n--%s--\r\n"
  "$BOUNDARY" "$FUNCTION_CODE" "$BOUNDARY")

  curl -sk -X POST "https://${STUDIO_ALB}/api/v1/projects/${REF}/functions/deploy?slug=demo-hello" \
    -H "Content-Type: multipart/form-data; boundary=$BOUNDARY" \
    --data-binary "$BODY"

  ✅ Edge Function deployed!

  {"slug":"demo-hello", "status":"deployed", "runtime":"deno", "entrypoint":"index.ts"}
● Tasks updated

  Step 7: Invoke Edge Function

  Waiting ~15s for the Function Worker to become ready...

  curl -sk -X POST "https://${REF}.supabase.jaydencrazy.win/functions/v1/demo-hello" \
    -H "apikey: ${ANON_KEY}" \
    -H "Authorization: Bearer ${ANON_KEY}"
● Shell REF=00yeqsmc9g0qrmkpcb8q
  ANON_KEY=sb_publishable_zwk6kgetcB4kBnxdmbDNcq2KeslpOgGq

  echo "Waiting 15s for Edge Function worker to start..."
  sleep 15

  curl -sk -X POST "https://${REF}.supabase.jaydencrazy.win/functions/v1/demo-hello" \
    -H "apikey: ${ANON_KEY}" \
    -H "Authorization: Bearer ${ANON_KEY}"

  ✅ Edge Function invoked successfully!

  {"message":"Hello from Edge Function!", "timestamp":"2026-06-18T06:32:58.324Z", "method":"POST"}
● Tasks updated

  ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Summary

All 7 API steps completed successfully. Here's the full result:

  ┌────────────────────┬────────────────┬───────────────────────────────────────────────────────────────┬───────────────────────────────────┐
  │ Step               │ API Channel    │ Endpoint                                                      │ Result                            │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 1. Create Project  │ Studio ALB     │ POST /api/v1/projects                                         │ ✅ 201 — ref=00yeqsmc9g0qrmkpcb8q │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 2. Get API Keys    │ Studio ALB     │ GET /api/v1/projects/${REF}/api-keys                          │ ✅ 200 — anon + service_role      │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 3. Create Table    │ Studio ALB     │ POST /api/v1/projects/${REF}/database/query                   │ ✅ 200 — demo_items with RLS      │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 4. Insert Data     │ Project Domain │ POST ${REF}.supabase.jaydencrazy.win/rest/v1/demo_items       │ ✅ 201 — 2 rows                   │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 5. Query Data      │ Project Domain │ GET ${REF}.supabase.jaydencrazy.win/rest/v1/demo_items?filter │ ✅ 200 — filtered results         │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 6. Deploy Function │ Studio ALB     │ POST /api/v1/projects/${REF}/functions/deploy?slug=demo-hello │ ✅ 201 — deployed                 │
  ├────────────────────┼────────────────┼───────────────────────────────────────────────────────────────┼───────────────────────────────────┤
  │ 7. Invoke Function │ Project Domain │ POST ${REF}.supabase.jaydencrazy.win/functions/v1/demo-hello  │ ✅ 200 — JSON response            │
  └────────────────────┴────────────────┴───────────────────────────────────────────────────────────────┴───────────────────────────────────┘

下面是一个完整AI Coding 场景的Demo,终端用户输入自然语言,描述自己需要构建的应用需求,利用大模型能力根据Supabase标准API生成代码,然后一键部署,部署完成后会提供独立域名+路径给当前项目,用户点击链接即可访问自己创建的应用网站了。

[图5]

Supabase on AWS 平台当前已提供大部分的API 端点。其中,Storage(文件存储) 和 Realtime(实时订阅) 服务目前尚处于开发测试阶段,部分接口功能尚未完全就绪。其余服务(PostgREST、Auth、Edge Functions、项目管理、数据库管理、平台运维等)均已通过完整的生产验证,可正常用于生产工作负载。

六、总结

AI Coding 正在重塑软件开发的模式,开发者可以通过自然语言描述需求,由 AI Agent自动生成代码、构建应用。而 Aurora PostgreSQL 与 Supabase 的深度结合,为这一变革提供了坚实的数据基础设施底座——Supabase 将数据库能力封装为简洁的 API,Aurora PostgreSQL 以企业级的性能、可用性和安全性承载核心数据层。两者协同,让开发者无需关心后端复杂性,将 AI 的创造力快速转化为可靠的生产力,真正实现从创意到上线的全链路加速。

➡️ 下一步行动:

相关产品:

相关文章:

七、相关内容推荐

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。

本篇作者

石勇虎

亚马逊云科技数据库解决方案架构师,负责基于亚马逊云计算数据库产品的解决方案与架构设计工作,深耕数据库领域十余年,对PostgreSQL,MySQL,Redis等有比较深入的了解。

李佳

亚马逊云科技快速原型解决方案架构师,主要负责微服务与容器原型设计与研发。

陈超

AWS 迁移解决方案架构师,主要负责 AWS 迁移相关的技术支持工作,同时致力于 AWS 云服务在国内的应用及推广。加入 AWS 之前,曾在阿里巴巴工作8年,历任研发工程师、云计算解决方案架构师等,熟悉传统企业 IT 、互联网架构,在企业应用架构方面有多年实践经验。

王昀哲

亚马逊云科技解决方案架构师,负责基于亚马逊云科技的云计算方案架构咨询和设计。目前专注于ISV行业。


AWS 架构师中心:云端创新的引领者

探索 AWS 架构师中心,获取经实战验证的最佳实践与架构指南,助您高效构建安全、可靠的云上应用