3.1 AWS 计算落地:EC2 选型与 Lambda 触发


3.1 AWS 计算落地:EC2 选型与 Lambda 触发

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

本节目标

图:EC2 实例类型族矩阵

图:EC2 实例类型族矩阵

阅读完本节,你应当能够:

  1. 完成 AWS 账号注册到 IAM 用户创建的完整链路:含实名认证、MFA、AccessKey 生成。
  2. 理解 EC2 实例类型族(T/M/C/R 系列)的定位差异,并能用 AWS CLI 启动一台虚机。
  3. 部署一个 Lambda 函数:从代码包、IAM 角色、触发器到 CloudWatch 日志的端到端配置。
  4. 区分 4 种 EC2 计费模式:On-Demand、Reserved、Savings Plans、Spot。

一、问题与直觉:选错 EC2 实例类型 = 月账单翻倍

很多新手第一次开 EC2,选"M5 系列"——M5 是通用型,2vCPU/8GB 内存,月成本约 70 USD。但其实他们的业务只需要 0.5 vCPU/1GB,T3.nano(突发性能实例,2vCPU/0.5GB)月成本约 3.5 USD。20 倍价差

正解:用 CloudWatch 的 CPU 监控 + 内存监控先观察 1 周,再选实例类型。盲选通用型是浪费钱的常见原因。

二、核心原理:EC2 实例类型与 Lambda 函数

2.1 EC2 实例类型族

定位 典型用途
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/台。

2.2 4 种 EC2 计费模式

计费模式 折扣 适用场景
On-Demand(按需) 基准 短期测试、突发流量
Reserved Instance(预留) 30-60% 稳定运行 1-3 年的核心服务
Savings Plans(节省计划) 20-40% 承诺 1-3 年总额
Spot(竞价) 60-90% 可中断的批处理、CI/CD

2.3 启动一台 EC2 的 CLI 命令

# 配置 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

2.4 Lambda 函数部署

# 创建 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:*"] }] }'

三、工程实践要点:选型决策与坑

3.1 真实案例:某团队的 EC2 成本优化

某团队 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.2 Lambda 工程的真实坑

原因 解法
冷启动慢(首次调用 3-5 秒) 容器启动 + 运行时初始化 用 Provisioned Concurrency 预热
15 分钟超时 Lambda 单次执行上限 长任务拆小或改用 ECS/Fargate
512MB 临时磁盘 /tmp 容量限制 大文件用 /tmp 或 S3
同步调用超时 API Gateway 29 秒 改异步 + 状态轮询
VPC 内调用慢 ENI 创建延迟 用 RDS Proxy / 复用连接

3.3 EC2 vs Lambda 选型

你的场景 推荐 理由
长跑服务(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 适合"我要跑一段代码"。理解这个差异后,选型就不再纠结。

本节要点回顾

  • EC2 实例类型族按用途划分:T 突发、M 通用、C 计算、R 内存、P/G GPU。
  • 4 种计费模式各有适用场景:On-Demand(短期)、Reserved(稳定 1-3 年)、Savings Plans(承诺总额)、Spot(可中断)。
  • AWS CLI 是工业级工作流:所有控制台操作都有 CLI 对应版本,自动化必备。
  • Lambda 适合"短任务 + 事件驱动":冷启动、15 分钟超时、磁盘限制是三大坑。
  • EC2 与 Lambda 选型不互斥:长跑服务用 EC2/ECS,事件任务用 Lambda,混合部署是常态。

下一节切到 AWS 存储与数据库——S3 + RDS 的工程实战。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U