ion
基于 AWS 的全栈应用开发框架,集成无服务器函数与类型安全 IaC
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 AWS 的全栈应用开发框架,集成无服务器函数与类型安全 IaC
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
项目当前地址: sst/sst(26,225★)
原始地址: anomalyco/ion(1,995★,已归档迁移)
License: MIT | 语言: TypeScript + Go | 官网: https://sst.dev

想象这样一个场景:你凌晨两点有了一个绝妙的创业想法,想立刻验证一下全栈应用原型。用传统方式,你需要配置 VPC、设置 RDS、安装 Nginx、配置 SSL 证书……还没开始写业务逻辑,两个小时就过去了。
SST(Serverless Stack)就是为了解决这个问题而生的。它的核心理念只有一个:让你专注于写代码,把 AWS 基础设施的事全部交给框架处理。
SST 由 Anomaly 团队开发,项目最初起源于真实的工程痛点。团队成员在使用 AWS 构建全栈应用时,发现自己 80% 的时间都在和 CDK 模板、IAM 权限、API Gateway 配置打交道,而非真正解决业务问题。
2020 年 8 月,第一个版本的 SST 诞生。它借鉴了 Remix 的路由理念和 CDK 的基础设施能力,创造性地引入了 Live Lambda 概念——开发者修改 Lambda 函数代码后,无需重新部署,直接在本地就能调试真实的 AWS 运行时环境。这一特性彻底改变了 AWS 无服务器开发的调试体验。
经过四年迭代,SST 已从一个小众工具成长为 AWS 无服务器开发领域的事实标准,被数千个团队用于生产环境。项目原仓库 anomalyco/ion 已于 2026 年归档,所有内容迁移至 sst/sst,新仓库 stars 数已突破 26,000 大关。
SST 的架构设计颇为精巧,采用了一种「混合语言分工」的策略:
| 层级 | 语言 | 职责 |
|---|---|---|
| CLI 工具 | Go | 构建、部署、IaC 引擎驱动 |
| 平台 SDK | TypeScript | 60+ AWS 基础设施组件 |
| Web 控制台 | TypeScript + Astro | 在线日志查看、实时调试 |
| 运行时 | Node.js / Bun | Lambda 函数执行 |
核心依赖包括:
SST 的 monorepo 结构非常清晰:
sst/
├── cmd/sst # Go 编写的 CLI 入口
├── platform/ # TypeScript SDK(@sst/platform)
│ ├── src/components/ # 60+ AWS 组件(function.ts, bucket.ts, dynamo.ts...)
│ ├── src/ast/ # 配置 AST 解析
│ └── functions/ # Lambda 运行时(Node.js、Python、React SSR)
├── sdk/js/ # JavaScript 客户端 SDK
├── www/ # Astro 构建的文档站点 sst.dev
└── examples/ # 50+ 示例项目
所有 AWS 组件均以 TypeScript 文件形式存在,按功能可分为几大类:
计算层:function.ts(通用 Lambda)、nextjs.ts(Next.js SSR)、remix.ts(Remix)、astro.ts(Astro)、svelte-kit.ts(SvelteKit)、react.ts(React SPA)等 20+ 框架适配器。
数据层:dynamo.ts(DynamoDB)、postgres.ts(RDS Aurora Serverless)、redis.ts(ElastiCache)、bucket.ts(S3,含 Lambda 触发器)、aurora.ts(Aurora 集群)、dsql.ts(DynamoDB SQL 兼容层)。
网络层:apigatewayv2.ts(REST/HTTP/WebSocket)、cdn.ts(CloudFront)、dns.ts(Route 53)、vpc.ts(VPC 网络)、fargate.ts(ECS 容器)。
消息与集成:queue.ts(SQS)、sns-topic.ts(SNS)、bus.ts(EventBridge)、cron.ts(定时任务)、step-functions.ts(状态机)、app-sync.ts(AppSync GraphQL)。
认证与安全:auth.ts(Auth.js 集成)、cognito-user-pool.ts(Cognito)、secret.ts(Secrets Manager)。
传统 Lambda 开发的最大痛点是:修改代码 → 打包 ZIP → 上传 → 等待部署 → 触发测试 → 发现问题 → 重复。整个循环可能需要 30 秒到 5 分钟。
SST 的 Live Lambda 功能彻底消除了这个等待:运行 npx sst dev 后,修改 index.ts 中的代码,Lambda 函数在毫秒级响应,无需重新部署。SST 通过一个本地 WebSocket 中继服务,将 AWS Lambda 的请求和响应桥接到本地开发服务器,实现真正的「本地调试远程代码」。
SST 独创的 link 机制解决了无服务器架构中的「资源发现」难题。开发者直接通过类型安全的引用访问资源,TypeScript 编译器会验证资源的正确性,从根本上杜绝了「资源名写错导致线上故障」的问题:
const bucket = new sst.aws.Bucket("MyBucket");
api.route("GET /", {
handler: "index.handler",
link: [bucket], // 自动注入 bucket.name / bucket.arn / bucket.domain
});
SST 的部署流程极度自动化:sst deploy 执行 Pulumi diff 预览 → 用户确认 → 增量部署,自动处理所有 IAM 权限、API Gateway 路由、CORS、CloudFront CDN 和 HTTPS 证书。对于 Next.js 应用,SST 甚至自动处理 SSR 所需的 Lambda@Edge 函数,用户只需提供 new sst.aws.Nextjs("MySite") 一行代码。
| 维度 | SST | AWS CDK | Serverless Framework | Amplify |
|---|---|---|---|---|
| 语言 | TypeScript | 多语言 | YAML/JSON | TypeScript |
| 部署精度 | 增量 diff | 增量 diff | 全量 | 全量 |
| 调试体验 | Live Lambda(毫秒) | 云端日志 | 云端日志 | 云端日志 |
| 框架集成 | 20+ 框架 | 需手动 | 插件支持 | 限定框架 |
| 学习曲线 | 中等 | 高 | 低 | 低 |
SST 的最大差异化在于:它不只是 IaC 工具,更是一个完整的全栈开发框架。CDK 能定义基础设施,但不能指导你如何组织代码结构;Serverless Framework 简单易用,但缺乏类型安全;Amplify 与 AWS 绑定过深。
适合使用 SST 的场景:
不适合的场景:
学习路径建议:
git clone && cd examples/aws-api && npm install && npx sst devsst.config.ts 的 app / run / $config 三段式结构link 机制:这是 SST 类型安全的核心new sst.aws.Dynamo("Table"),理解其所有可选参数SST 也并非完美:
sst.config.ts 可能变得难以维护此外,SST 的安装脚本 install.sh 每次都需要从 GitHub Releases 下载二进制,对于网络受限环境需要代理支持。
SST 的出现,填补了「AWS 基础设施能力」与「开发者实际需求」之间的鸿沟。它证明了:无服务器架构不必意味着繁琐的配置和漫长的调试循环。通过将 Pulumi 的 IaC 能力、TypeScript 的类型安全、以及 Live Lambda 的调试体验三者有机结合,SST 为 AWS 生态中的全栈开发者提供了一条效率提升的捷径。
截至 2026 年,SST 的 GitHub 仓库已获得超过 26,000 颗 stars,文档站点 sst.dev 月访问量持续增长,已成为 AWS 无服务器开发领域最具影响力的开源框架之一。其设计理念——「让开发者专注写代码,把基础设施交给框架」——也在影响着更多后来者。
一句话总结:SST = Pulumi IaC + TypeScript 组件库 + Live Lambda 调试 + 20+ 框架适配器,让 AWS 全栈开发从「配置马拉松」变成「写代码」。