Fargate 无服务器容器
FreeGuideOnline
最新
2026-07-10
bash aws iam create-role --role-name ecsTaskExecutionRole --assume-role-policy-document file://trust-policy.json aws iam attach-role-policy --role-name ecsTaskExecutionRole --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
### 步骤二:创建 ECS 集群(选择 Fargate 兼容)
```bash
aws ecs create-cluster --cluster-name my-fargate-cluster --capacity-providers FARGATE
步骤三:注册任务定义
创建一个 task-definition.json 文件:
{
"family": "nginx-fargate",
"networkMode": "awsvpc",
"requiresCompatibilities": ["FARGATE"],
"cpu": "256",
"memory": "512",
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"containerDefinitions": [{
"name": "nginx",
"image": "nginx:latest",
"portMappings": [{
"containerPort": 80,
"protocol": "tcp"
}],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/nginx-fargate",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "nginx"
}
}
}]
}
注册任务:
aws ecs register-task-definition --cli-input-json file://task-definition.json
步骤四:创建服务并在 Fargate 上运行
你需要在已有的 VPC 和公有子网中运行(或创建新 VPC)。执行以下命令创建服务:
aws ecs create-service \
--cluster my-fargate-cluster \
--service-name nginx-service \
--task-definition nginx-fargate \
--desired-count 1 \
--launch-type FARGATE \
--network-configuration "awsvpcConfiguration={subnets=[subnet-0abc12345def6789],securityGroups=[sg-0123456789abcdef],assignPublicIp=ENABLED}"
等待任务变为 RUNNING 状态。通过控制台或 CLI 获取任务的公网 IP,在浏览器中访问即可看到 Nginx 欢迎页面。
Fargate 运维最佳实践
1. 资源配置合理化
- 不要盲目分配最高规格。Fargate 支持的最小配置是 0.25 vCPU / 0.5 GB 内存,最大组合需满足 CPU 和内存的比例约束(例如 1 vCPU 可选 2 GB~8 GB 内存)。监控实际使用量,用 AWS Compute Optimizer 获取建议。
2. 使用容量提供者(Capacity Provider)策略
在 ECS 集群中启用 Fargate 和 Fargate Spot 混合策略。Fargate Spot 最高可节省 70% 成本,适合可容错的工作负载(如后台任务、开发环境)。关键任务使用常规 Fargate。
# 创建包含 Spot 的容量提供者
aws ecs put-cluster-capacity-providers \
--cluster my-fargate-cluster \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy capacityProvider=FARGATE,weight=1