本节摘要:AWS 的"计算"两字背后是两套完全不同的服务——EC2(虚机)和 Lambda(函数)。本节用一个真实工程链路"开账号 → 实名 → 选 EC2 实例 → 写 Lambda 函数 → 配置 S3 触发器"展开,让你跑通 AWS 计算的最小可用闭环。中间会涉及 IAM 角色配置、CLI 工具、计费模式选择这些真实会遇到的工程决策点。

阅读完本节,你应当能够:
很多新手第一次开 EC2,选"M5 系列"——M5 是通用型,2vCPU/8GB 内存,月成本约 70 USD。但其实他们的业务只需要 0.5 vCPU/1GB,T3.nano(突发性能实例,2vCPU/0.5GB)月成本约 3.5 USD。20 倍价差。
正解:用 CloudWatch 的 CPU 监控 + 内存监控先观察 1 周,再选实例类型。盲选通用型是浪费钱的常见原因。
| 族 | 定位 | 典型用途 |
|---|---|---|
| T 系列(T3/T4g) | 突发性能,低成本 | 开发测试、低流量 Web |
| M 系列(M5/M6i) | 通用平衡 | 中等规模 Web/API |
| C 系列(C5/C6i) | 计算优化 | 批处理、游戏服务器 |
| R 系列(R5/R6i) | 内存优化 | 内存数据库、缓存 |
| X 系列(X1/X2idn) | 内存极大 | SAP HANA、内存分析 |
| P/G 系列 | GPU 优化 | 机器学习训练、推理 |
| I/D/H 系列 | 本地 NVMe 存储 | 高 IOPS 数据库 |
T 系列是新手最划算的选择——AWS 把"未用完的 CPU 积分"积攒起来,突发时使用。月成本 3.5-30 USD/台。
| 计费模式 | 折扣 | 适用场景 |
|---|---|---|
| On-Demand(按需) | 基准 | 短期测试、突发流量 |
| Reserved Instance(预留) | 30-60% | 稳定运行 1-3 年的核心服务 |
| Savings Plans(节省计划) | 20-40% | 承诺 1-3 年总额 |
| Spot(竞价) | 60-90% | 可中断的批处理、CI/CD |
# 配置 AWS CLI(首次) aws configure # 输入:AccessKey、SecretKey、Region(建议 ap-east-1 香港或 us-west-2 俄勒冈) # 输出格式:json # 启动一台 t3.micro 测试机 aws ec2 run-instances \ --image-id ami-0c55b159cbfafe1f0 \ --instance-type t3.micro \ --key-name my-key \ --security-group-ids sg-xxxxxxxx \ --subnet-id subnet-xxxxxxxx \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=my-test}]' # 列出所有运行中的实例 aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" # 停止实例 aws ec2 stop-instances --instance-ids i-xxxxxxxx # 终止实例(不可恢复) aws ec2 terminate-instances --instance-ids i-xxxxxxxx
# 创建 IAM 角色(信任 Lambda 服务) aws iam create-role \ --role-name lambda-s3-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole" }] }' # 打包函数代码 zip function.zip index.js # 创建 Lambda 函数 aws lambda create-function \ --function-name my-image-resizer \ --runtime nodejs18.x \ --role arn:aws:iam::123456789012:role/lambda-s3-role \ --handler index.handler \ --zip-file fileb://function.zip # 配置 S3 触发器 aws s3api put-bucket-notification-configuration \ --bucket my-bucket \ --notification-configuration '{ "LambdaFunctionConfigurations": [{ "LambdaFunctionArn": "arn:aws:lambda:ap-east-1:123456789012:function:my-image-resizer", "Events": ["s3:ObjectCreated:*"] }] }'
某团队 2022 年的 EC2 月账单 1.8 万 USD,做了 3 件事后降到 8500 USD(节省 53%):
| 优化项 | 节省金额 | 实施成本 |
|---|---|---|
| 测试环境 t3.large → t3.medium | 1500 USD/月 | 0.5 人天 |
| 5 台稳定运行的 m5.xlarge 转 Reserved Instance | 2200 USD/月 | 1 人天 |
| 跑批处理用 Spot Instance | 5800 USD/月 | 2 人天 |
| 总计 | 9500 USD/月 | 3.5 人天 |
3.5 人天换 9500 USD/月,年化节省 11.4 万 USD——ROI 极高。
| 坑 | 原因 | 解法 |
|---|---|---|
| 冷启动慢(首次调用 3-5 秒) | 容器启动 + 运行时初始化 | 用 Provisioned Concurrency 预热 |
| 15 分钟超时 | Lambda 单次执行上限 | 长任务拆小或改用 ECS/Fargate |
| 512MB 临时磁盘 | /tmp 容量限制 | 大文件用 /tmp 或 S3 |
| 同步调用超时 | API Gateway 29 秒 | 改异步 + 状态轮询 |
| VPC 内调用慢 | ENI 创建延迟 | 用 RDS Proxy / 复用连接 |
| 你的场景 | 推荐 | 理由 |
|---|---|---|
| 长跑服务(Web/API/数据库) | EC2 或 ECS | Lambda 不适合常驻 |
| 短任务(图片处理、邮件发送) | Lambda | 按调用计费,零运维 |
| 流量波动大 | Lambda + Provisioned Concurrency | 自动扩缩容 |
| 重 CPU 计算(视频转码) | EC2 竞价实例 | 长时间运行便宜 |
| 事件驱动(S3 触发、消息队列) | Lambda | 天然契合 |
| 1 小时以上的批处理 | EC2 / Batch | Lambda 15 分钟上限 |
⚠️ 常见坑:"我们用 Lambda 省钱"通常只是错觉。Lambda 按调用计费,频繁调用反而比 EC2 贵。一个 7×24 跑的中等流量 API(每秒 10 次调用、每次 200ms、512MB 内存),Lambda 月成本约 100 USD,而 EC2 t3.small 月成本约 15 USD。只有"短任务 + 突发流量"才是 Lambda 的甜区。
💡 关键直觉:EC2 适合"我要一台机器",Lambda 适合"我要跑一段代码"。理解这个差异后,选型就不再纠结。
下一节切到 AWS 存储与数据库——S3 + RDS 的工程实战。