如何通过使用 CDK 指定启动配置来创建 AWS 集群

How can I create a AWS cluster by specifying the launch configuration using CDK

我正在使用 aws cdk 创建我的集群。在控制台中,我可以根据指向 AMI 的启动 template/configuration 来定义自动缩放组。

我如何使用 AWS CDK 做到这一点?我问的原因是因为我可以添加一个选项来指定带有名称的 AMI,但没有看到启动配置的任何选项,我在启动配置中有一些自定义配置。

this.cluster = new ecs.Cluster(this, "myCluster", {
      vpc: this.vpc,
    });

this.cluster.addCapacity("myASG", {
        instanceType: new ec2.InstanceType("t3.medium"),
        desiredCapacity: 8,
        minCapacity: 1,
        maxCapacity: 8,
      });

我想知道这是不是一个好方法?

通过指定启动配置名称创建一个autoScallingGroup,并使用autoScalingGroup创建一个capacity provider,将capcity provider添加到集群中。

const autoScalingGroup = new autoscaling.CfnAutoScalingGroup(this, 'myASG', {
        instanceType: new ec2.InstanceType("t3.medium"),
        desiredCapacity: 12,
        minCapacity: 1,
        maxCapacity: 12,
        launchConfigurationName: myASGLaunchConfigurationName,
      });

const capacityProvider = new ecs.AsgCapacityProvider(this, 'AsgCapacityProvider', { autoScalingGroup, machineImageType: ecs.MachineImageType.BOTTLEROCKET });

this.cluster.addAsgCapacityProvider(capacityProvider, { machineImageType: ecs.MachineImageType.BOTTLEROCKET });

如果您想完全控制自动缩放组配置,请创建 ASG 并将其添加到集群。

// Or add customized capacity. Be sure to start the Amazon ECS-optimized AMI.
const autoScalingGroup = new autoscaling.AutoScalingGroup(this, 'ASG', {
  vpc,
  instanceType: new ec2.InstanceType('t2.xlarge'),
  machineImage: ecs.EcsOptimizedImage.amazonLinux(),
  // Or use Amazon ECS-Optimized Amazon Linux 2 AMI
  // machineImage: EcsOptimizedImage.amazonLinux2(),
  desiredCapacity: 3,
  // ... other options here ...
});

cluster.addAutoScalingGroup(autoScalingGroup);

示例取自; https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecs.AddCapacityOptions.html

CDK 目前不支持此功能。看到这个问题:https://github.com/aws/aws-cdk/issues/1403