0

注意:这里的代码是 Go,但很高兴看到任何 CDK 语言的答案。

在 AWS CDK 中,您可以创建启动配置:

// Create the launch configuration
lc := awsautoscaling.NewCfnLaunchConfiguration(
    stack,
    jsii.String("asg-lc"),
    &awsautoscaling.CfnLaunchConfigurationProps{
        ...
    },
)

但是 Auto-Scaling Group 道具中没有明显的参数或功能可以附加它。

我已经设置了更新策略:

UpdatePolicy: awsautoscaling.UpdatePolicy_RollingUpdate,

我想要做的是能够在 AMI 配置发生更改时在 CI 系统中调用自动刷新:

aws autoscaling start-instance-refresh --cli-input-json file://asg-refresh.json

问题在于,启动配置似乎是在首次创建堆栈时自动创建的,并且在更新时不会更改并且具有不正确的值(AMI ID 已过时)。

有没有办法使用 CDK 定义/刷新启动配置以更新 AMI ID?这是 UI 中的一个简单更改。

4

1 回答 1

1

如果您使用 L2 AutoScalingGroup 构造,您可以cdk deploy在更新 AMI 后运行,它应该会为您启动一个新的。同样使用此构造,为您创建启动配置。你真的不需要担心它。

            IMachineImage image = MachineImage.Lookup(new LookupMachineImageProps()
            {
                Name = "MY-AMI", // this can be updated on subsequent deploys
            });

            
            AutoScalingGroup asg = new AutoScalingGroup(this, $"MY-ASG", new AutoScalingGroupProps()
            {
                AllowAllOutbound = false,
                AssociatePublicIpAddress = false,
                AutoScalingGroupName = $"MY-ASG",
                Vpc = network.Vpc,
                VpcSubnets = new SubnetSelection() { Subnets = network.Vpc.PrivateSubnets },
                MinCapacity = 1,
                MaxCapacity = 2,
                MachineImage = image, 
                InstanceType = new InstanceType("m5.xlarge"),
                SecurityGroup = sg,
                UpdatePolicy = UpdatePolicy.RollingUpdate(new RollingUpdateOptions()
                {
                    
                }),
            });
于 2021-11-09T23:31:54.540 回答