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