aws-amplify
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAWS Amplify Gen2
AWS Amplify Gen2
Build and deploy full-stack applications using AWS Amplify Gen2's TypeScript
code-first approach. This skill covers backend resource creation, frontend
integration across 8 frameworks, and deployment workflows.
使用AWS Amplify Gen2的TypeScript代码优先方法构建并部署全栈应用。本技能涵盖后端资源创建、8种框架的前端集成以及部署工作流。
Prerequisites
前提条件
- Node.js ^18.19.0 || ^20.6.0 || >=22 and npm
- AWS credentials configured (succeeds)
aws sts get-caller-identity - For sandbox: returns a valid version
npx ampx --version - For mobile: Platform-specific tooling (Xcode, Android Studio, Flutter SDK)
- Node.js ^18.19.0 || ^20.6.0 || >=22 及 npm
- 已配置AWS凭证(命令执行成功)
aws sts get-caller-identity - 沙箱环境:返回有效版本
npx ampx --version - 移动开发:平台特定工具(Xcode、Android Studio、Flutter SDK)
Defaults & Assumptions
默认设置与假设
When the user does not specify a framework:
- Web: You SHOULD default to React (Vite) and explain the choice.
- Mobile: You MUST ask which platform the user wants (Flutter, Swift, Android, or React Native). There is no universal mobile default.
- Neither specified: If the user says "build an app" without clarifying web vs. mobile, you MUST ask before proceeding.
- Backend only: If only backend changes are requested and no frontend framework is mentioned, skip the frontend integration step entirely.
When the user does not specify tooling or strategy:
- Package manager: You SHOULD default to npm unless the user specifies yarn or pnpm.
- Language: You SHOULD default to TypeScript. Gen2 backends are TypeScript-only; frontends SHOULD follow the project's existing language.
- Next.js: You SHOULD default to App Router unless the user specifies Pages Router.
- React Native: Ask the user whether they use Expo or bare React Native CLI.
- Auth: You SHOULD default to email/password as the login method unless the user specifies social login, SAML, or another provider.
- Data authorization: default to (
publicApiKey) — this is the starter template default. When auth is added, switch to owner-based (allow.publicApiKey()) withallow.owner().defaultAuthorizationMode: 'userPool'
当用户未指定框架时:
- Web端: 应默认使用React(Vite)并说明选择理由。
- 移动端: 必须询问用户目标平台(Flutter、Swift、Android或React Native),无通用移动端默认选项。
- 未指定类型: 如果用户仅说“构建应用”但未明确Web或移动端,必须先询问再继续。
- 仅后端: 如果仅请求后端变更且未提及前端框架,完全跳过前端集成步骤。
当用户未指定工具或策略时:
- 包管理器: 应默认使用npm,除非用户指定yarn或pnpm。
- 语言: 应默认使用TypeScript。Gen2后端仅支持TypeScript;前端应遵循项目现有语言。
- Next.js: 应默认使用App Router,除非用户指定Pages Router。
- React Native: 询问用户使用Expo还是原生React Native CLI。
- 认证: 应默认使用邮箱/密码作为登录方式,除非用户指定社交登录、SAML或其他提供商。
- 数据授权: 默认使用****(
publicApiKey)——这是启动模板的默认设置。添加认证后,切换为基于所有者的授权(allow.publicApiKey())并设置allow.owner()。defaultAuthorizationMode: 'userPool'
Quick Start — Route to the Right Reference
快速入门——跳转至正确参考文档
Step 0: Read Core Reference (ALWAYS)
步骤0:阅读核心参考文档(必须执行)
You MUST read the core reference for your target platform before
reading any other reference file. These contain Gen2 detection,
placement per framework, sandbox commands, required
packages, and directory structure rules — patterns needed for all tasks,
not just new projects.
Amplify.configure()- Web (React, Next.js, Vue, Angular, React Native): You MUST read core-web.md
- Mobile (Flutter, Swift, Android): You MUST read core-mobile.md
- Backend only (no frontend work): Skip to Step 1.
在阅读任何其他参考文件之前,必须先阅读目标平台的核心参考文档。这些文档包含Gen2检测、各框架下的放置位置、沙箱命令、所需包以及目录结构规则——这些是所有任务都需要的模式,不仅限于新项目。
Amplify.configure()- Web端(React、Next.js、Vue、Angular、React Native):必须阅读core-web.md
- 移动端(Flutter、Swift、Android):必须阅读core-mobile.md
- 仅后端(无前端工作):直接跳至步骤1。
Step 1: Identify the Task Type
步骤1:识别任务类型
| Task | Go To |
|---|---|
| Create a new project | → scaffolding.md, then Step 2 and/or Step 3 |
| Add or modify a backend feature | → Step 2 (Backend Features) |
| Connect frontend to existing backend | → Step 3 (Frontend Integration) |
| Deploy the application | → deployment.md |
| 任务 | 跳转至 |
|---|---|
| 创建新项目 | → scaffolding.md,然后执行步骤2和/或步骤3 |
| 添加或修改后端功能 | → 步骤2(后端功能) |
| 将前端连接至现有后端 | → 步骤3(前端集成) |
| 部署应用 | → deployment.md |
Step 2: Backend Features
步骤2:后端功能
You MUST read the corresponding reference for each backend feature:
| Feature | Reference | When to Use |
|---|---|---|
| Authentication | auth-backend.md | Email/password, social login, MFA, SAML/OIDC |
| Data Models | data-backend.md | GraphQL schema, DynamoDB, relationships, auth rules |
| File Storage | storage-backend.md | S3 uploads/downloads, access rules |
| Functions & API | functions-and-api.md | Lambda, custom resolvers, REST/HTTP APIs, calling from client |
| AI Features | ai.md | Conversation, generation, AI tools via Bedrock (backend config + React/Next.js frontend) |
| Geo, PubSub, CDK | advanced-features.md | Backend-only: custom CDK stacks, overrides, custom outputs. Backend + frontend: Geo, PubSub, Face Liveness |
Each backend feature file is self-contained. Load only what you need.
Routing note: These files apply for both adding and modifying features. Route to the same file whether the user says "add auth" or "change auth config" — each reference covers the full define surface.
必须为每个后端功能阅读对应的参考文档:
| 功能 | 参考文档 | 使用场景 |
|---|---|---|
| 认证 | auth-backend.md | 邮箱/密码、社交登录、MFA、SAML/OIDC |
| 数据模型 | data-backend.md | GraphQL Schema、DynamoDB、关联关系、授权规则 |
| 文件存储 | storage-backend.md | S3上传/下载、访问规则 |
| 函数与API | functions-and-api.md | Lambda、自定义解析器、REST/HTTP API、客户端调用 |
| AI功能 | ai.md | 对话、生成、通过Bedrock实现的AI工具(后端配置 + React/Next.js前端) |
| 地理服务、PubSub、CDK | advanced-features.md | 仅后端:自定义CDK堆栈、覆盖配置、自定义输出。后端+前端:地理服务、PubSub、人脸活体检测 |
每个后端功能文件都是独立的,仅加载所需内容。
路由说明: 这些文件适用于添加和修改功能。无论用户说“添加认证”还是“修改认证配置”,都跳转至同一文件——每个参考文档涵盖完整的定义范围。
Step 3: Frontend Integration
步骤3:前端集成
After configuring backend resources, connect the frontend. Choose by
platform and feature:
Web (React, Next.js, Vue, Angular, React Native):
| Feature | Reference |
|---|---|
| Auth UI & flows | auth-web.md |
| Data CRUD & subscriptions | data-web.md |
| Storage upload/download | storage-web.md |
Mobile (Flutter, Swift, Android):
| Feature | Reference |
|---|---|
| Auth UI & flows | auth-mobile.md |
| Data CRUD & subscriptions | data-mobile.md |
| Storage upload/download | storage-mobile.md |
Note: AI and Functions frontend patterns are included in ai.md and functions-and-api.md respectively — they are not split into separate web/mobile files.
配置后端资源后,连接前端。根据平台和功能选择对应文档:
Web端(React、Next.js、Vue、Angular、React Native):
| 功能 | 参考文档 |
|---|---|
| 认证UI与流程 | auth-web.md |
| 数据CRUD与订阅 | data-web.md |
| 存储上传/下载 | storage-web.md |
移动端(Flutter、Swift、Android):
| 功能 | 参考文档 |
|---|---|
| 认证UI与流程 | auth-mobile.md |
| 数据CRUD与订阅 | data-mobile.md |
| 存储上传/下载 | storage-mobile.md |
注意: AI和函数的前端模式分别包含在ai.md和functions-and-api.md中——它们不会拆分为单独的Web/移动端文件。
Core Concepts
核心概念
Amplify Gen2 Architecture
Amplify Gen2架构
- Code-first: All backend resources defined in TypeScript under
amplify/ - Main config: imports and combines all resources via
amplify/backend.tsdefineBackend() - Resource files: ,
amplify/auth/resource.ts,amplify/data/resource.ts,amplify/storage/resource.tsamplify/functions/<name>/resource.ts - Generated output: — consumed by frontend
amplify_outputs.json. Gitignored — generated byAmplify.configure()(local dev) ornpx ampx sandbox(CI/CD), never committed.npx ampx pipeline-deploy
- 代码优先: 所有后端资源在目录下的TypeScript文件中定义
amplify/ - 主配置: 通过
amplify/backend.ts导入并组合所有资源defineBackend() - 资源文件: 、
amplify/auth/resource.ts、amplify/data/resource.ts、amplify/storage/resource.tsamplify/functions/<name>/resource.ts - 生成输出: ——供前端
amplify_outputs.json使用。已加入Git忽略——由Amplify.configure()(本地开发)或npx ampx sandbox(CI/CD)生成,切勿提交至Git。npx ampx pipeline-deploy
Directory Structure
目录结构
project-root/
├── amplify/
│ ├── backend.ts # defineBackend({ auth, data, ... })
│ ├── auth/resource.ts # defineAuth({ ... })
│ ├── data/resource.ts # defineData({ schema })
│ ├── storage/resource.ts # defineStorage({ ... })
│ └── functions/
│ └── my-func/
│ ├── resource.ts # defineFunction({ ... })
│ └── handler.ts # export const handler = ...
├── src/ # Frontend code
├── amplify_outputs.json # Generated — DO NOT edit or commit (gitignored)
└── package.jsonproject-root/
├── amplify/
│ ├── backend.ts # defineBackend({ auth, data, ... })
│ ├── auth/resource.ts # defineAuth({ ... })
│ ├── data/resource.ts # defineData({ schema })
│ ├── storage/resource.ts # defineStorage({ ... })
│ └── functions/
│ └── my-func/
│ ├── resource.ts # defineFunction({ ... })
│ └── handler.ts # export const handler = ...
├── src/ # 前端代码
├── amplify_outputs.json # 自动生成——请勿编辑或提交(已加入Git忽略)
└── package.jsonKey APIs
关键API
| Package | Purpose |
|---|---|
| |
| Frontend: |
| Pre-built UI: |
| AI UI: |
| 包 | 用途 |
|---|---|
| |
| 前端: |
| 预构建UI: |
| AI UI: |
Documentation & Resource Verification
文档与资源验证
When you need AWS documentation (advanced CDK constructs, service limits,
provider-specific auth config):
- If AWS documentation tools are available (e.g., via AWS MCP), you SHOULD use them to search and retrieve relevant documentation pages.
- If AWS documentation tools are unavailable, you MUST fall back to web
search or the CLI for resource verification.
aws
Why conditional: Amplify Gen2 is code-first — the primary workflow is editing TypeScript files and runningcommands. AWS MCP tools are useful for post-deployment verification but are not required.npx ampx
当需要AWS文档(高级CDK构造、服务限制、提供商特定认证配置)时:
- 如果AWS文档工具可用(例如通过AWS MCP),应使用这些工具搜索并检索相关文档页面。
- 如果AWS文档工具不可用,必须通过网页搜索或CLI进行资源验证。
aws
为什么有条件: Amplify Gen2是代码优先的——主要工作流是编辑TypeScript文件并运行命令。AWS MCP工具对部署后的验证有用,但不是必需的。npx ampx
Security Considerations
安全注意事项
- Use for all credentials and API keys — never hardcode or use plain environment variables for sensitive values
secret() - Review exposure carefully — guest access is enabled by default and grants unauthenticated users access to IAM-authorized resources
allow.guest() - Scope IAM policies to specific resource ARNs — avoid in production
resources: ['*'] - Never log secrets or include them in error messages
- 所有凭证和API密钥使用——切勿硬编码或使用普通环境变量存储敏感值
secret() - 仔细检查的暴露范围——访客访问默认启用,会授予未认证用户访问IAM授权资源的权限
allow.guest() - 将IAM策略限定为特定资源ARN——生产环境中避免使用
resources: ['*'] - 切勿记录密钥或在错误信息中包含密钥
Links
链接
All documentation links useas the default platform slug. Replacereactin any URL with your target framework:/react/
| Framework | Slug |
|---|---|
| React | |
| Next.js | |
| Vue | |
| Angular | |
| React Native | |
| Flutter | |
| Swift | |
| Android | |
所有文档链接默认使用作为平台路径。将URL中的react替换为目标框架的路径:/react/
| 框架 | 路径标识 |
|---|---|
| React | |
| Next.js | |
| Vue | |
| Angular | |
| React Native | |
| Flutter | |
| Swift | |
| Android | |