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

配置EC2服务的CapacityProviderStrategies提示容量提供商未找到

ECS容量提供商绑定服务报错的解决方法

问题场景

创建两组AutoScalingGroup、AsgCapacityProvider,以及两个ECS on EC2服务,尝试将容量提供商与对应服务绑定时报错:The specified capacity provider myapp-dev-admin-cp was not found。已确认容量提供商已添加到集群,使用的是ECS on EC2模式。

错误原因

代码中capacityProviderStrategies直接使用字符串形式的容量提供商名称,而CDK需要通过资源对象引用来管理依赖关系,直接传字符串无法让CDK识别到已创建的容量提供商资源,导致部署时找不到对应资源。

正确配置方式

  1. 直接引用之前创建的AsgCapacityProvider对象,而非手动拼接字符串名称
  2. capacityProviderStrategies是一个数组,每个元素为包含capacityProvider字段的对象,还可按需添加weight(权重)、base(基础任务数)等参数

修正后的代码示例

const adminCapacityProvider = new ecs.AsgCapacityProvider(this, 'admin-asg-capacity-provider', {
  autoScalingGroup: adminAutoScalingGroup,
  capacityProviderName: `myapp-${targetEnv}-admin-cp`
});

const adminCapacityProvider2 = new ecs.AsgCapacityProvider(this, 'admin-asg-capacity-provider2', {
  autoScalingGroup: adminAutoScalingGroup2,
  capacityProviderName: `myapp-${targetEnv}-admin-cp2`
});

cluster.addAsgCapacityProvider(adminCapacityProvider);
cluster.addAsgCapacityProvider(adminCapacityProvider2);

// 修正后的ECS服务配置
const ecsAiService = new ecs.Ec2Service(this, 'AiService', {
  cluster,
  taskDefinition: aiTaskDefinition,
  serviceName: `myapp-${targetEnv}-ai-service`,
  enableExecuteCommand: true,
  securityGroups: [adminServiceSg],
  vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC },
  capacityProviderStrategies: [
    {
      capacityProvider: adminCapacityProvider // 直接引用对象而非字符串
      // 可选:添加weight和base参数,例如 weight: 1, base: 0
    }
  ]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:07:37