如何通过使用 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
我正在使用 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