Это потому, что если вы явно не передаете кластер, он использует кластер по умолчанию, который существует в вашей учетной записи. Однако кластер по умолчанию начинается без емкости EC2, поскольку инстансы EC2 при запуске стоят денег. Вы можете использовать пустой кластер по умолчанию в режиме Fargate, поскольку Fargate не требует емкости EC2, он просто запускает ваш контейнер внутри Fargate, но кластер по умолчанию не будет работать с режимом EC2, пока вы не добавите экземпляры EC2 в кластер.
Простым решением здесь является переключение на ApplicationLoadBalancedFargateService
, поскольку службы Fargate работают с использованием емкости Fargate, поэтому им не требуются экземпляры EC2 в кластере. В качестве альтернативы вы должны определить свой собственный кластер, используя что-то вроде:
// Create an ECS cluster
const cluster = new ecs.Cluster(this, 'Cluster', {
vpc,
});
// Add capacity to it
cluster.addCapacity('DefaultAutoScalingGroupCapacity', {
instanceType: new ec2.InstanceType("t2.xlarge"),
desiredCapacity: 3,
});
Затем передайте этот кластер в качестве свойства при создании ApplicationLoadBalancedEc2Service
Надеюсь, это поможет!