AWS Amplify 全栈托管
Next.js SSR、Amplify 后端(鉴权、数据、存储)与 AWS 上 CI/CD 的 git 连接托管。
为什么
Amplify Hosting 在一个 git 连接管线中配对 Next.js/Astro/React 前端与 AWS 后端(Cognito 鉴权、AppSync GraphQL、S3 存储、DynamoDB)。避免手动接 8 个 AWS 服务,同时留在 AWS 享受合规、VPC 对等和企业 IAM。
何时使用
需要 AWS 后端服务(Cognito、AppSync、DynamoDB)配前端、企业合规(HIPAA、FedRAMP)或 VPC 集成时选 Amplify。纯静态站跳过(Cloudflare/Vercel 更便宜)或非 AWS 后端跳过。
如何做
示例
常见问题
- ⚠amplify push 报 CloudFormation 错 — 通常是名称冲突或部署角色 IAM 权限缺口
- ⚠Next.js SSR 路由 502 — Amplify 托管需计算角色,或应用用了不支持的 Node API
- ⚠aws-exports.js 每次 push 重新生成 — 提交它导致合并冲突,gitignore 它
- ⚠Lambda 解析器冷启动 — 首次 GraphQL 查询 2-3s,用预置并发
最佳实践
- ✓用 amplify env 按阶段隔离 — dev/staging/prod 获独立 Cognito + DynamoDB
- ✓gitignore aws-exports.js — 按环境重新生成,提交导致漂移
- ✓设 IAM 部署角色最小权限 — 避免 CI 用管理员凭证
- ✓热 Lambda 解析器启用预置并发 — 消除 GraphQL 冷启动
常见问题解答
Amplify Hosting 和 S3+CloudFront 有什么不同?
Amplify Hosting 是 S3+CloudFront 上的托管层,加 git 部署、PR 预览、即时缓存失效。S3+CloudFront 更灵活但自管管线。求快用 Amplify,求控用原始 S3+CF。
为什么 Next.js 在 Amplify 上不工作?
Amplify Hosting 通过 Amplify compute 支持 Next.js SSR,但仅特定版本。查框架支持矩阵。App Router 或边缘运行时用 amplifyHosting compute 模式或部署到 Vercel。
如何按分支设环境变量?
Amplify Console 中设 Branch 作用域。后端环境(amplify push)与前端托管环境变量分开——两者都配。密钥用 AWS Secrets Manager。
为什么部署卡在 Provisioning?
Amplify 在配置 CloudFront 和 Lambda 资源,首次部署可能 5-15 分钟。后续部署更快。卡超 20 分钟时在 AWS 控制台查 CloudFormation 失败堆栈。
如何自定义 Amplify 创建的 CloudFront 分配?
不能直接改——Amplify 管理它。自定义头或重定向用应用根的 customHttp.yml 文件。需完全 CloudFront 控制时弹出到 S3+CloudFront 手动管理。