AWS Amplify

面向前端开发者的全栈开发平台,可用最少代码构建和部署认证、API、存储等后端功能

概述

AWS Amplify 是一个加速 Web 应用和移动应用全栈开发的平台。Amplify Gen 2 使用 TypeScript 定义后端资源(认证、数据、存储、函数),只需 Git 推送即可同时部署前端和后端。支持 React、Next.js、Vue、Angular、Flutter 等主流框架,通过 Cognito 实现认证、AppSync 实现 GraphQL API、S3 实现文件存储,仅需几行代码即可集成。Amplify Hosting 提供带 CI/CD 管道的静态站点和 SSR 托管服务。

Gen 2 的代码优先定义与 CDK 基础

Amplify Gen 2 采用基于 CDK 的后端定义。在 amplify/auth/resource.ts 中编写 Cognito 认证配置,在 amplify/data/resource.ts 中编写 AppSync 的 Schema 和访问规则,在 amplify/storage/resource.ts 中编写 S3 存储桶配置,全部使用 TypeScript。这些在内部被转换为 CDK 构造,通过 CloudFormation 部署。与 Gen 1 的最大区别在于从 CLI 向导模式迁移到了 TypeScript 代码优先定义,使后端配置可纳入版本管理,团队开发的可重现性大幅提升。使用沙盒环境(npx ampx sandbox)可为每位开发者即时构建独立的后端环境,在不影响生产环境的情况下进行开发和测试。作为 BaaS,Google Firebase 常被拿来比较,但 Amplify 可访问整个 AWS 生态系统(Cognito 的 SAML/OIDC 联合认证、DynamoDBAurora 等),在企业级需求的扩展性方面更具优势。

Hosting 的 CI/CD 与预览环境

Amplify Hosting 与 GitHub 仓库联动,具备为每个 Pull Request 自动生成预览环境的功能。前端构建和后端部署在一个管道中完成,因此在代码审查阶段即可确认实际运行的环境,大幅缩短团队开发的反馈周期。Hosting 不仅支持静态站点(React、Vue、Angular),还支持 Next.js 的 SSR(服务端渲染),通过 CloudFront 全球分发。自定义域名设置和 SSL 证书自动发行已内置,生产环境的搭建几乎不需要额外工作。Web 应用开发书籍 (Amazon) 也可作为参考。

Amplify 的局限与迁移到 CDK 的判断

Amplify 最有效的应用场景是 MVP(最小可行产品)的快速构建。适合初创公司或新项目在一天内搭建带认证的 Web 应用。然而,Amplify 生成的后端资源在内部通过 CloudFormation 堆栈管理,因此会出现需要超出 Amplify 框架进行自定义的场景。当需要 VPC 内资源集成、复杂 IAM 策略、多区域架构时,需要通过 CDK 的覆盖功能应对,或做出从 Amplify 毕业迁移到纯 CDK 项目的决策。实务中的迁移判断标准是:当后端覆盖超过 3 处时,应考虑迁移到 CDK。使用 Amplify 构建的 Cognito 用户池和 DynamoDB 表可通过 CDK 导入,因此可以在不丢失数据的情况下分阶段迁移。

共有するXB!