名称: 在AWS上部署 描述: 选择和实现AWS服务和架构模式。用于设计AWS云架构、选择计算/存储/数据库服务、实现服务器less或容器模式,或应用AWS Well-Architected Framework原则时。
AWS 模式
目的
本技能为Amazon Web Services提供决策框架和实现模式。通过成熟的selection criteria、架构模式和Well-Architected Framework原则,导航AWS的200多个服务。专注于实用服务选择、成本意识设计和现代2025模式,包括Lambda SnapStart、EventBridge Pipes和S3 Express One Zone。
使用本技能当设计AWS解决方案、为特定工作负载选择服务、实现服务器less或容器架构,或优化现有AWS基础设施以降低成本、提高性能和可靠性时。
何时使用本技能
调用本技能当:
- 为计算工作负载选择Lambda、Fargate、ECS、EKS或EC2
- 基于访问模式选择数据库服务(RDS、Aurora、DynamoDB)
- 为多层应用程序设计VPC架构
- 使用API Gateway和Lambda实现服务器less模式
- 在ECS或EKS上构建基于容器的微服务
- 将AWS Well-Architected Framework应用于设计
- 在保持性能的同时优化AWS成本
- 实现安全最佳实践(IAM、KMS、加密)
核心服务选择框架
计算服务选择
决策流程:
执行时长:
<15分钟 → 评估Lambda
>15分钟 → 评估容器或VM
事件驱动/计划任务:
是 → Lambda(服务器less)
否 → 考虑流量模式
容器化:
是 → 需要Kubernetes?
是 → EKS
否 → ECS(Fargate或EC2)
否 → 评估EC2或先容器化
特殊需求:
GPU/Windows/BYOL许可 → EC2
可预测高流量 → EC2或ECS on EC2(成本优化)
可变流量 → Lambda或Fargate
快速参考:
| 工作负载 | 首选 | 成本模型 | 关键优势 |
|---|---|---|---|
| API后端 | Lambda + API Gateway | 按请求付费 | 自动扩展,无服务器 |
| 微服务 | ECS on Fargate | 按运行时付费 | 简单运维 |
| Kubernetes应用 | EKS | $73/月 + 计算 | 可移植性,生态系统 |
| 批处理作业 | Lambda或Fargate Spot | 请求/spot定价 | 成本效率 |
| 长运行 | EC2预留实例 | 30-60%节省 | 可预测成本 |
详细服务比较包括成本示例、性能特征和使用案例指南,参见references/compute-services.md。
数据库服务选择
按访问模式决策矩阵:
| 访问模式 | 数据模型 | 首选 | 关键标准 |
|---|---|---|---|
| 事务型(OLTP) | 关系型 | Aurora | 性能 + 高可用 |
| 简单CRUD | 关系型 | RDS PostgreSQL | 成本 vs. 功能 |
| 键值查找 | NoSQL | DynamoDB | 服务器less扩展 |
| 文档存储 | JSON/BSON | DynamoDB | 灵活性 vs. MongoDB兼容 |
| 缓存 | 内存 | ElastiCache Redis | 速度 + 持久性 |
| 分析(OLAP) | 列式 | Redshift/Athena | 专用 vs. 服务器less |
| 时间序列 | 时间戳 | Timestream | 专用构建 |
查询复杂度指南:
- 简单键值: DynamoDB(毫秒级延迟)
- 中等连接(2-3表): Aurora或RDS(成本 vs. 性能)
- 复杂分析: Redshift(专用)或Athena(服务器less,查询S3)
- 实时流: DynamoDB Streams + Lambda
存储类选择、成本比较和迁移模式,参见references/database-services.md。
存储服务选择
主要决策树:
数据类型:
对象(文件,媒体) → S3 + 生命周期策略
块(数据库,启动卷) → EBS
共享文件(跨实例) → 评估协议
文件协议需求:
NFS(Linux) → EFS
SMB(Windows) → FSx for Windows
高性能HPC → FSx for Lustre
多协议 + 企业 → FSx for NetApp ONTAP
成本比较(1TB/月):
| 服务 | 月成本 | 访问模式 |
|---|---|---|
| S3标准 | $23 | 频繁访问 |
| S3标准-IA | $12.50 | 不频繁(>30天) |
| S3 Glacier即时 | $4 | 归档,即时检索 |
| EBS gp3 | $80 | 块存储 |
| EFS标准 | $300 | 共享文件,频繁 |
| EFS IA | $25 | 共享文件,不频繁 |
推荐: 对80%+的存储需求使用S3。仅当需要共享文件访问时使用EFS/FSx。
S3存储类、EBS卷类型和生命周期策略示例,参见references/storage-services.md。
服务器less架构模式
模式1: REST API(Lambda + API Gateway + DynamoDB)
架构:
客户端 → API Gateway(HTTP API) → Lambda → DynamoDB
↓
S3(文件上传)
使用场景:
- 构建具有CRUD操作的RESTful API
- 可变或不可预测流量
- 希望最小运维开销
- 接受按请求付费成本模型
成本估算(1M请求/月):
- API Gateway: $3.50
- Lambda: $3.53
- DynamoDB: ~$7.50
- 总计: ~$15/月(对比Fargate ~$35+, EC2 ~$50+)
关键组件:
- API Gateway HTTP API(比REST API便宜)
- Lambda分配适当内存(通常1024MB最优)
- DynamoDB按需计费(用于可变流量)
- CloudWatch日志用于调试
完整实现见examples/cdk/serverless-api/和examples/terraform/serverless-api/。
模式2: 事件驱动处理(EventBridge + Lambda + SQS)
架构:
S3上传 → EventBridge规则 → Lambda(处理) → DynamoDB(元数据)
↓
SQS(下游任务)
使用场景:
- 异步文件处理
- 解耦微服务通信
- 扇出模式(一个事件,多个消费者)
- 需要重试逻辑和死信队列
关键功能(2025):
- EventBridge Pipes: 简化源 → 过滤 → 丰富 → 目标
- Lambda响应流: 流式响应最多20MB
- Step Functions分布式映射: 并行处理数百万项
其他模式包括Step Functions编排、API Gateway WebSocket和Lambda SnapStart配置,见references/serverless-patterns.md。
容器架构模式
模式1: ECS on Fargate(服务器less容器)
架构:
ALB → ECS服务(Fargate任务) → RDS Aurora
↓
ElastiCache Redis
使用场景:
- 无需集群管理的容器化应用
- 可变流量带自动扩展
- 避免EC2实例管理
- Docker部署
关键组件:
- Application Load Balancer(基于路径路由)
- 带Fargate启动类型的ECS集群
- 任务定义(CPU、内存、容器镜像)
- 基于CPU/内存或自定义指标的自动扩展
- Service Connect用于内置服务网格(2025功能)
成本模型(2 vCPU, 4GB RAM, 24/7):
- Fargate: ~$70/月
- ALB: ~$20/月
- RDS Aurora db.t3.medium: ~$50/月
- 总计: ~$140/月
模式2: EKS(AWS上的Kubernetes)
使用场景:
- 团队中有Kubernetes专业知识
- 多云或混合云策略
- 需要Kubernetes生态系统(Helm、Operator、Istio)
- 复杂工作负载编排需求
关键功能(2025):
- EKS自动模式: 全托管节点生命周期
- EKS Pod身份: 简化IAM(替代IRSA)
- EKS混合节点: 运行本地节点
成本考虑:
- EKS控制平面:$73/月每集群
- 工作节点:Fargate或EC2定价
- 使用EKS on Fargate简化,EC2成本优化
ECS任务定义、EKS集群设置与CDK/Terraform和服务网格模式,见references/container-patterns.md。
网络基础
VPC架构
标准3层模式:
VPC: 10.0.0.0/16
每可用区(跨3个AZ部署):
公共子网: 10.0.X.0/24 (ALB, NAT网关)
私有子网: 10.0.1X.0/24 (ECS, Lambda, 应用层)
数据库子网: 10.0.2X.0/24 (RDS, Aurora, 隔离)
最佳实践:
- 使用/16用于VPC CIDR(65,536 IP用于增长)
- 使用/24用于子网CIDR(256 IP,251可用)
- 跨最小2个AZ(推荐3个)部署以实现高可用
- 使用安全组(有状态)用于实例级防火墙
- 启用VPC流日志用于故障排除
负载均衡
服务选择:
| 负载均衡器 | 协议 | 使用案例 | 关键功能 |
|---|---|---|---|
| ALB | HTTP/HTTPS | Web应用,API | 路径/主机路由,Lambda目标 |
| NLB | TCP/UDP | 高性能 | 静态IP,超低延迟 |
| GWLB | 第3层 | 安全设备 | 内联检查 |
ALB功能:
- 基于路径路由:
/api→ 后端,/web→ 前端 - 基于主机路由:
api.example.com,web.example.com - WebSocket和gRPC支持
- 与Lambda集成(服务器less后端)
CloudFront CDN模式、Route 53路由策略和VPC对等配置,见references/networking.md。
安全最佳实践
IAM原则
最小权限模式:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::my-bucket/uploads/*"
}]
}
核心实践:
- 为应用程序使用IAM角色(非用户)
- 实现最小权限(授予最少所需权限)
- 为特权用户启用MFA
- 使用IAM访问分析器验证策略
- 利用AWS Organizations SCPs设置护栏
数据保护
加密需求:
| 服务 | 静态加密 | 传输中加密 |
|---|---|---|
| S3 | SSE-S3或SSE-KMS | HTTPS(TLS 1.2+) |
| EBS | KMS加密 | N/A(实例内) |
| RDS/Aurora | KMS加密 | TLS连接 |
| DynamoDB | KMS加密 | HTTPS API |
密钥管理:
- Secrets Manager: 数据库凭证带自动轮换
- Parameter Store: 应用程序配置(有免费层)
- KMS: 加密密钥管理(客户管理密钥)
WAF规则、GuardDuty配置和网络安全模式,见references/security.md。
AWS Well-Architected Framework
六大支柱概述
1. 运营卓越
- 基础设施即代码(CDK、Terraform、CloudFormation)
- 自动化部署(CI/CD流水线)
- 可观察性(CloudWatch日志、指标、X-Ray)
- 常见操作运行手册和剧本
2. 安全
- 强身份基础(IAM角色和策略)
- 深度防御(安全组、NACL、WAF)
- 数据保护(静态和传输中加密)
- 检测控制(CloudTrail、GuardDuty、Security Hub)
3. 可靠性
- 多AZ部署(RDS多AZ、Aurora副本)
- 自动扩展(EC2 ASG、ECS服务自动扩展)
- 备份和恢复(自动快照、跨区域)
- 混沌工程(故障注入模拟器)
4. 性能效率
- 正确调整资源(使用Compute Optimizer)
- 使用托管服务(减少运维开销)
- 缓存策略(CloudFront、ElastiCache、DAX)
- 持续监控和优化
5. 成本优化
- 正确调整计算(匹配容量需求)
- 定价模型(预留实例、Savings Plans、Spot)
- 存储优化(S3智能分层、生命周期策略)
- 成本监控(Cost Explorer、Budgets、Trusted Advisor)
6. 可持续性(2024新增)
- 使用Graviton处理器(减少60%能源,性能提升25%)
- 优化工作负载放置(可再生能源区域)
- 存储效率(删除未使用数据、压缩)
- 软件优化(高效代码、异步处理)
详细支柱实现指南、架构审查清单和Well-Architected工具集成,见references/well-architected.md。
基础设施即代码
工具选择
AWS CDK(Cloud Development Kit):
- 语言: TypeScript、Python、Java、C#、Go
- 最适合: AWS原生工作负载,类型安全基础设施
- 关键优势: 高级构造,合成到CloudFormation
- 示例:
examples/cdk/serverless-api/
Terraform:
- 语言: HCL(HashiCorp配置语言)
- 最适合: 多云环境
- 关键优势: 最大生态系统,成熟状态管理
- 示例:
examples/terraform/serverless-api/
CloudFormation:
- 语言: YAML或JSON
- 最适合: 原生AWS集成,无需额外工具
- 关键优势: AWS服务支持第1天
- 示例:
examples/cloudformation/lambda-api.yaml
CDK快速开始
# 安装CDK CLI
npm install -g aws-cdk
# 初始化新项目
cdk init app --language=typescript
npm install
# 部署基础设施
cdk bootstrap # 一次性设置
cdk deploy
Terraform快速开始
# 安装Terraform
brew install terraform # macOS
# 初始化项目
terraform init
# 预览更改
terraform plan
# 应用更改
terraform apply
完整工作示例包括VPC网络、多层应用和事件驱动架构,见examples/目录。
成本优化策略
计算成本优化
正确调整:
- 使用AWS Compute Optimizer进行EC2/Lambda推荐
- 监控CloudWatch指标(CPU、内存利用率)
- 保守开始,基于实际使用扩展
定价模型:
| 模型 | 承诺 | 节省 | 最适合 |
|---|---|---|---|
| 按需 | 无 | 0% | 可变工作负载 |
| Savings Plans | 1-3年 | 30-40% | 灵活计算 |
| 预留实例 | 1-3年 | 30-60% | 可预测工作负载 |
| Spot实例 | 无 | 60-90% | 容错任务 |
Graviton优势:
- Graviton3实例:比Graviton2性能提升25%
- 减少60%能源消耗
- 可用:EC2、Lambda、Fargate、RDS、ElastiCache
存储成本优化
S3生命周期策略:
第0-30天: S3标准 ($0.023/GB)
第30-90天: S3标准-IA ($0.0125/GB)
第90-365天: S3 Glacier即时 ($0.004/GB)
第365天以上: S3深度归档 ($0.00099/GB)
EBS优化:
- 使用gp3卷(比gp2便宜20%,可配置IOPS)
- 删除未使用快照
- 归档旧快照(便宜75%)
监控:
- 启用AWS Cost Explorer(免费)
- 设置AWS Budgets带警报
- 使用成本分配标签用于归因
- 查看Trusted Advisor成本检查
常见模式和示例
服务器less三层应用
CloudFront (CDN)
→ S3 (React前端)
→ API Gateway (REST API)
→ Lambda (业务逻辑)
→ DynamoDB (数据)
→ S3 (文件存储)
完整CDK实现: examples/cdk/three-tier-app/
完整Terraform实现: examples/terraform/three-tier-app/
容器化微服务
Route 53 (DNS)
→ CloudFront (CDN)
→ ALB (负载均衡器)
→ ECS Fargate (服务)
→ RDS Aurora (数据库)
→ ElastiCache Redis (缓存)
完整实现: examples/cdk/ecs-fargate/
事件驱动数据流水线
S3上传
→ EventBridge规则
→ Lambda (转换)
→ Kinesis Firehose
→ S3数据湖
→ Athena (查询)
完整实现: examples/cdk/event-driven/
与其他技能集成
相关技能
- infrastructure-as-code - 多云IaC概念,CDK和Terraform模式
- kubernetes-operations - EKS集群运维,kubectl,Helm图表
- building-ci-pipelines - CodePipeline,CodeBuild,GitHub Actions → AWS
- secret-management - Secrets Manager轮换,Parameter Store层次结构
- observability - CloudWatch高级查询,X-Ray分布式追踪
- security-hardening - IAM策略最佳实践,安全自动化
- disaster-recovery - 多区域策略,备份自动化
跨技能模式
EKS + kubernetes-operations:
- 使用本技能进行EKS集群配置(CDK/Terraform)
- 使用kubernetes-operations进行kubectl、Helm、应用部署
密钥管理:
- 使用本技能设置Secrets Manager/Parameter Store
- 使用secret-management技能进行轮换策略、访问模式
CI/CD集成:
- 使用本技能进行CodePipeline基础设施
- 使用building-ci-pipelines技能进行流水线配置
参考文档
详细指南
- 计算服务:
references/compute-services.md- Lambda、Fargate、ECS、EKS、EC2深入探讨 - 数据库服务:
references/database-services.md- RDS、Aurora、DynamoDB、ElastiCache比较 - 存储服务:
references/storage-services.md- S3类、EBS类型、EFS/FSx选择 - 网络:
references/networking.md- VPC设计、负载均衡、CloudFront、Route 53 - 安全:
references/security.md- IAM模式、KMS、Secrets Manager、WAF - 服务器less模式:
references/serverless-patterns.md- 高级Lambda、Step Functions、EventBridge - 容器模式:
references/container-patterns.md- ECS Service Connect、EKS Pod身份 - Well-Architected:
references/well-architected.md- 六大支柱实现指南
工作示例
- CDK示例:
examples/cdk/- TypeScript实现 - Terraform示例:
examples/terraform/- HCL实现 - CloudFormation示例:
examples/cloudformation/- YAML模板
实用脚本
- 成本估算:
scripts/cost-estimate.sh- 估算基础设施成本 - 资源审计:
scripts/resource-audit.sh- 审计AWS资源 - 安全检查:
scripts/security-check.sh- 基本安全验证
AWS服务更新(2025)
近期创新考虑:
- Lambda SnapStart: Java函数近即时冷启动
- Lambda响应流: 流式响应最多20MB
- EventBridge Pipes: 简化事件处理(源 → 过滤 → 丰富 → 目标)
- S3 Express One Zone: 10倍更快S3,毫秒级延迟
- ECS Service Connect: ECS内置服务网格
- EKS自动模式: 全托管Kubernetes节点生命周期
- EKS Pod身份: 简化Pod的IAM(替代IRSA)
- Aurora Limitless数据库: 水平写扩展超越单写限制
- DynamoDB标准-IA: 不频繁访问表节省60%成本
- RDS蓝绿部署: 零停机版本升级
快速决策清单
选择服务前回答:
- 流量模式: 可预测或可变?(影响计算选择)
- 数据模型: 关系型、键值、文档或图?(影响数据库选择)
- 访问模式: 频繁、不频繁或归档?(影响存储类)
- 延迟要求: 毫秒级、秒级或分钟级可接受?
- 扩展需求: 垂直(更大实例)或水平(更多实例)?
- 运维开销: 偏好托管服务或需要控制?
- 成本敏感度: 优化成本、性能或平衡?
- 合规要求: 数据驻地、加密、审计日志需要?
然后参考本技能相关决策框架或详细参考。
开始使用
针对新AWS项目:
- 使用Well-Architected Framework支柱定义架构
- 使用决策树选择计算服务(Lambda/Fargate/ECS/EKS/EC2)
- 基于访问模式和数据模型选择数据库
- 设计3层子网架构的VPC
- 使用CDK或Terraform实现IaC(见examples/)
- 应用安全最佳实践(IAM、加密、日志)
- 设置监控和成本跟踪
针对现有AWS项目:
- 运行AWS Trusted Advisor获取推荐
- 回顾Well-Architected Framework支柱
- 优化成本(正确调整、预留实例、存储生命周期)
- 迁移到现代服务(EC2 → Fargate、RDS → Aurora)
- 改进安全态势(启用GuardDuty、实现最小权限)
- 使用IaC自动化(逆向工程到Terraform或CDK)