You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

手动添加EC2实例后,无法以awsvpc网络类型运行ECS任务求帮助

解决ECS EC2启动类型服务部署的属性缺失问题

核心排查方向(针对awsvpc网络类型)

由于你使用了awsvpc网络模式,手动添加的EC2实例必须满足特定配置项,可对照向导自动创建的实例逐一检查:

1. 验证EC2实例的IAM角色权限

手动创建的EC2必须关联包含AmazonEC2ContainerServiceforEC2Role权限的IAM角色(向导自动创建的实例会默认配置该角色):

  • 进入EC2控制台,找到目标实例→查看IAM角色标签,确认角色带有AmazonEC2ContainerServiceforEC2Role托管策略,或自定义策略包含以下权限:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:RegisterContainerInstance",
                    "ecs:DeregisterContainerInstance",
                    "ecs:SubmitContainerStateChange",
                    "ecs:SubmitTaskStateChange",
                    "ecr:GetAuthorizationToken",
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:GetDownloadUrlForLayer",
                    "ecr:BatchGetImage",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents"
                ],
                "Resource": "*"
            }
        ]
    }
    

2. 检查ECS代理配置与实例属性

手动添加的EC2实例,ECS代理可能未正确配置awsvpc相关属性:

  • 登录EC2实例,查看ECS代理配置文件/etc/ecs/ecs.config,确认包含以下配置:
    ECS_CLUSTER=你的集群名称
    ECS_ENABLE_AWSVPC_TRUNKING=true
    ECS_AWSVPC_BLOCK_IMDS=true
    
  • 重启ECS代理服务:
    sudo systemctl restart ecs
    
  • 进入ECS控制台→集群→容器实例→选中目标实例→查看属性标签,确认存在ecs.capability.awsvpc.trunking和ecs.capability.awsvpc.ipv4两个属性。

3. 确认EC2实例的网络配置

  • 实例必须部署在支持ECS awsvpc网络的子网中,且子网关联的路由表可访问互联网(或配置VPC端点),确保ECS代理能拉取镜像、上报状态。
  • 实例安全组需允许出站访问ECS服务端口(443)、ECR端口(443)、CloudWatch Logs端口(443)。

4. 检查任务定义的属性约束

查看任务定义是否添加了实例属性约束,而手动实例未包含这些属性:

  • 进入ECS控制台→任务定义→选中目标任务→查看JSON标签,检查requiresAttributes字段,比如若存在ecs.capability.docker-remote-api.1.24这类属性,需确认手动实例的ECS代理支持对应版本。

5. 用AWS CLI定位缺失的具体属性

若以上步骤未解决问题,可通过CLI对比任务所需属性与实例已注册属性:

  1. 获取任务定义的所需属性:
    aws ecs describe-task-definition --task-definition 你的任务定义名称 --query 'taskDefinition.requiresAttributes'
    
  2. 获取容器实例的已注册属性:
    aws ecs describe-container-instances --cluster 你的集群名称 --container-instances 实例ID --query 'containerInstances[0].attributes'
    
  3. 对比两组结果,找出实例缺失的属性后针对性修复。

内容的提问来源于stack exchange,提问作者YoavKlein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:05:24