AWS 解决方案架构师
AWS 解决方案架构师
利用基础设施即代码 (IaC) 模板,为初创公司设计可扩展且具有成本效益的 AWS 架构。
---
工作流
第一步:收集需求
收集应用程序规范:
- 应用类型(Web 应用、移动端后端、数据流水线、SaaS)
- 预期用户数和每秒请求数 (RPS)
- 预算限制(每月支出上限)
- 团队规模和 AWS 经验水平
- 合规性要求(GDPR, HIPAA, SOC 2)
- 可用性要求(SLA, RPO/RTO)
第二步:设计架构
运行架构设计器以获取模式建议:
python scripts/architecture_designer.py --input requirements.json输出示例:
{
"recommended_pattern": "serverless_web",
"service_stack": ["S3", "CloudFront", "API Gateway", "Lambda", "DynamoDB", "Cognito"],
"estimated_monthly_cost_usd": 35,
"pros": ["运维开销低", "按需付费", "自动扩缩容"],
"cons": ["冷启动", "Lambda 15 分钟限制", "最终一致性"]
}从推荐模式中选择:
- Serverless Web: S3 + CloudFront + API Gateway + Lambda + DynamoDB
- 事件驱动微服务: EventBridge + Lambda + SQS + Step Functions
- 三层架构: ALB + ECS Fargate + Aurora + ElastiCache
- GraphQL 后端: AppSync + Lambda + DynamoDB + Cognito
详细模式规范请参阅 references/architecture_patterns.md。
验证检查点: 在进入第三步之前,请确认推荐模式与团队的运维成熟度和合规性要求相匹配。
第三步:生成 IaC 模板
为所选模式创建基础设施即代码:
# 无服务器栈 (CloudFormation)
python scripts/serverless_stack.py --app-name my-app --region us-east-1CloudFormation YAML 输出示例(核心无服务器资源):
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
AppName:
Type: String
Default: my-app
Resources:
ApiFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs20.x
MemorySize: 512
Timeout: 30
Environment:
Variables:
TABLE_NAME: !Ref DataTable
Policies:
- DynamoDBCrudPolicy:
TableName: !Ref DataTable
Events:
ApiEvent:
Type: Api
Properties:
Path: /{proxy+}
Method: ANY
DataTable:
Type: AWS::DynamoDB::Table
Properties:
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: pk
AttributeType: S
- AttributeName: sk
AttributeType: S
KeySchema:
- AttributeName: pk
KeyType: HASH
- AttributeName: sk
KeyType: RANGE
> 包含 API Gateway, Cognito, IAM 角色和 CloudWatch 日志的完整模板由 serverless_stack.py 生成,也可在 references/architecture_patterns.md 中找到。
CDK TypeScript 代码片段示例(三层架构模式):
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ec2 from 'aws-cdk-libconst vpc = new ec2.Vpc(this, 'AppVpc', { maxAzs: 2 });
const cluster = new ecs.Cluster(this, 'AppCluster', { vpc });
const db = new rds.ServerlessCluster(this, 'AppDb', {
engine: rds.DatabaseClusterEngine.auroraPostgres({
version: rds.AuroraPostgresEngineVersion.VER_15_2,
}),
vpc,
scaling: { minCapacity: 0.5, maxCapacity: 4 },
});
### 第 4 步:审查成本
分析预估成本和优化机会:
python scripts/cost_optimizer.py --resources current_setup.json --monthly-spend 2000
输出示例:{
"current_monthly_usd": 2000,
"recommendations": [
{ "action": "Right-size RDS db.r5.2xlarge → db.r5.large", "savings_usd": 420, "priority": "high" },
{ "action": "Purchase 1-yr Compute Savings Plan at 40% utilization", "savings_usd": 310, "priority": "high" },
{ "action": "Move S3 objects >90 days to Glacier Instant Retrieval", "savings_usd": 85, "priority": "medium" }
],
"total_potential_savings_usd": 815
}
输出内容包括:
- 按服务划分的月度成本明细
- 资源规格优化(Right-sizing)建议
- Savings Plans 机会
- 潜在的月度节省金额
第 5 步:部署
部署生成的基础设施:
CloudFormation
aws cloudformation create-stack \
--stack-name my-app-stack \
--template-body file://template.yaml \
--capabilities CAPABILITY_IAM
CDK
cdk deployTerraform
terraform init && terraform apply### 第 6 步:验证与故障处理
验证部署情况并设置监控:
检查堆栈状态
aws cloudformation describe-stacks --stack-name my-app-stack
设置 CloudWatch 警报
aws cloudwatch put-metric-alarm --alarm-name high-errors ...如果堆栈创建失败:
1. 检查失败原因:
aws cloudformation describe-stack-events \
--stack-name my-app-stack \
--query 'StackEvents[?ResourceStatus==
CREATE_FAILED]'2. 查看 CloudWatch Logs 以排查 Lambda 或 ECS 错误。
3. 修复模板或资源配置。
4. 在重试前删除失败的堆栈:aws cloudformation delete-stack --stack-name my-app-stack
# 等待删除完成
aws cloudformation wait stack-delete-complete --stack-name my-app-stack
# 重新部署
aws cloudformation create-stack ...
常见失败原因:
- IAM 权限错误 $\rightarrow$ 验证
--capabilities CAPABILITY_IAM 和角色信任策略
- 超过资源限制 $\rightarrow$ 通过 Service Quotas 控制台申请提高配额
- 模板语法错误 $\rightarrow$ 在部署前运行
aws cloudformation validate-template --template-body file://template.yaml
---
工具
architecture_designer.py
根据需求生成架构模式。
python scripts/architecture_designer.py --input requirements.json --output design.json
输入: 包含应用类型、规模、预算、合规需求的 JSON
输出: 推荐模式、服务栈、成本预估、优缺点分析
serverless_stack.py
创建 Serverless CloudFormation 模板。
python scripts/serverless_stack.py --app-name my-app --region us-east-1
输出: 生产就绪的 CloudFormation YAML,包含:
- API Gateway + Lambda
- DynamoDB 表
- Cognito 用户池
- 遵循最小权限原则的 IAM 角色
- CloudWatch 日志记录
cost_optimizer.py
分析成本并推荐优化方案。
python scripts/cost_optimizer.py --resources inventory.json --monthly-spend 5000
输出:
输出: 建议方案包括:
- 闲置资源清理
- 实例规格优化 (Right-sizing)
- 预留容量购买
- 存储分层迁移
- NAT 网关替代方案
---
快速上手
MVP 架构(每月 < $100)
结果:
- API:Lambda + API Gateway
- 数据:DynamoDB (按请求付费)
- 认证:Cognito
- 静态资源:S3 + CloudFront
- 预估费用:$20-50/月
### 扩展架构(每月 $500-2000)提问:"为一款拥有 5 万名用户的 SaaS 平台设计一个可扩展架构"
结果:
- 容器化 API:ECS Fargate
- 关系型数据:Aurora Serverless
- 会话缓存:ElastiCache
- CDN:CloudFront
- CI/CD:CodePipeline
- 多可用区 (Multi-AZ) 部署
### 成本优化提问:"优化我的 AWS 配置以降低 30% 的成本。目前支出:$3000/月"
提供:当前资源清单 (EC2, RDS, S3 等)
结果:
- 识别闲置资源
- 规格优化建议
- Savings Plans 分析
- 存储生命周期策略
- 目标节省金额:$900/月
### IaC 代码生成提问:"为具有自动扩缩容功能的三层 Web 应用生成 CloudFormation 模板"
结果:
- 包含公有/私有子网的 VPC
- 支持 HTTPS 的 ALB
- 具有自动扩缩容功能的 ECS Fargate
- 带有读取副本的 Aurora
- 安全组和 IAM 角色
---
输入要求
在进行架构设计时,请提供以下详细信息:
| 要求 | 描述 | 示例 |
|-------------|-------------|---------|
| 应用类型 | 您正在构建的产品 | SaaS 平台, 移动端后端 |
| 预期规模 | 用户数, 每秒请求数 (RPS) | 1万用户, 100 RPS |
| 预算 | 每月 AWS 费用上限 | 最高 $500/月 |
| 团队情况 | 规模, AWS 经验水平 | 3 名开发, 中级水平 |
| 合规性 | 监管需求 | HIPAA, GDPR, SOC 2 |
| 可用性 | 运行时间要求 | 99.9% SLA, 1小时 RPO |
JSON 格式:
{
"application_type": "saas_platform",
"expected_users": 10000,
"requests_per_second": 100,
"budget_monthly_usd": 500,
"team_size": 3,
"aws_experience": "intermediate",
"compliance": ["SOC2"],
"availability_sla": "99.9%"
}
``
---
输出格式
架构设计
- 模式推荐及其理由
- 服务堆栈图 (ASCII)
- 每月预估成本及权衡分析
IaC 模板
- CloudFormation YAML: 生产就绪的 SAM/CFN 模板
- CDK TypeScript: 类型安全的基础设施代码
- Terraform HCL: 多云兼容的配置
成本分析
- 当前支出明细及优化建议
- 优先级操作列表(高/中/低)及实施清单
---
参考文档
| 文档 | 内容 |
|----------|----------|
|
references/architecture_patterns.md | 6 种模式:Serverless, 微服务, 三层架构, 数据处理, GraphQL, 多区域 |
| references/service_selection.md | 计算、数据库、存储、消息服务的决策矩阵 |
| references/best_practices.md` | Serverless 设计, 成本优化, 安全加固, 可扩展性 |