在 AWS 的 Serverless 宇宙中,Fargate 和 Lambda 如同两颗耀眼的明星,常让开发者陷入选择困境。本文深入剖析两者的核心差异,助你做出精准的技术决策。
🔍 核心概念速览
-
AWS Lambda
-
事件驱动的函数计算服务(Function as a Service)
-
执行单元:单次函数调用
-
生命周期:毫秒级启动,最长运行15分钟
-
计费:按每次请求和运行时间(GB-秒)计费
-
-
AWS Fargate
-
无服务器容器运行服务(Serverless Containers)
-
执行单元:持续运行的容器任务
-
生命周期:分钟级启动,可无限运行
-
计费:按vCPU和内存配置时长计费
-
⚡ 关键技术差异对比
| 特性 | AWS Lambda | AWS Fargate |
|---|---|---|
| 启动时间 | 毫秒级(冷启动除外) | 1-2分钟 |
| 最大运行时长 | 15分钟 | 无限制 |
| 运行时环境 | 预置运行时或自定义容器镜像 | 完全自定义容器镜像 |
| 文件系统 | 临时存储(512MB)/ 可挂载EFS | 支持EFS持久化存储 |
| 网络控制 | 默认公网,可配置VPC | 深度VPC集成,固定私有IP |
| 成本模型 | 按调用次数+持续时间 | 按资源配置持续计费 |
🛠 经典场景对决
✅ 选择 Lambda 的黄金场景
# 图片缩略图生成:事件驱动+短时任务
import boto3
from PIL import Image
def lambda_handler(event, context):
s3 = boto3.client('s3')
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
# 下载原图 -> 处理 -> 上传缩略图
image = Image.open(s3.get_object(Bucket=bucket, Key=key)
image.thumbnail((200, 200))
thumbnail_key = f"thumbnails/{key}"
image.save(f"/tmp/{thumbnail_key}")
s3.upload_file(f"/tmp/{thumbnail_key}", bucket, thumbnail_key)
-
优势:S3事件触发 + 毫秒级响应 + 零闲置成本
✅ 选择 Fargate 的王者场景
# Dockerfile - 长期运行的API服务
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8080
CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", "app:main"]
部署架构:
Application Load Balancer → Fargate Tasks (Auto Scaling Group) → RDS数据库
-
优势:稳定长连接 + 自定义运行时环境 + 精确资源控制
💡 混合架构实战:API网关分流术

通过路由策略将/async-process指向Lambda,/data-api指向Fargate服务
📊 成本对比模型(假设场景)
| 场景 | Lambda方案 | Fargate方案 |
|---|---|---|
| 100万请求/月 | $1.2 (计算) + $0.2 (请求) | $24 (1vCPU+2GB 24/7) |
| 低流量后台服务 | $0.05 (零星调用) | $24 (最低配置持续运行) |
关键结论:高频短任务选Lambda,稳定长时服务选Fargate
🔮 终极决策树
-
任务是否 <15分钟? → 是 → Lambda
-
需要 自定义二进制/特殊依赖? → 是 → Fargate
-
流量是否 突发不可预测? → 是 → Lambda
-
要求 固定IP/VPC深度集成? → 是 → Fargate
-
需要 持久化TCP连接? → 是 → Fargate
🚀 技术选型忠告
-
Lambda 警惕:冷启动延迟(尤其VPC内)、扩展限制(1000并发/Region)
-
Fargate 注意:镜像构建复杂度、最低计费时长(1分钟)
真正的架构高手往往 混合使用两者:用Lambda处理事件驱动任务,Fargate承载核心服务,通过EventBridge/SQS实现无缝协同。
在Serverless的征途上,没有绝对的“正确选择”,只有与业务场景的精准匹配。掌握二者的基因差异,方能在AWS架构中游刃有余。

1077

被折叠的 条评论
为什么被折叠?



