aws-cloudformation - 使用 CDK 将启动配置分配给 Auto-Scaling 组

标签 aws-cloudformation aws-cdk autoscaling amazon-ami launch-configuration

注意:这里的代码是 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 中的一个简单更改。

最佳答案

如果您使用 L2 AutoScalingGroup 构造,则可以在更新 AMI 后运行 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()
                {
                    
                }),
            });

关于aws-cloudformation - 使用 CDK 将启动配置分配给 Auto-Scaling 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69905218/

相关文章:

aws-cdk - AWS CDK |创建跨越多个 CDK 堆栈的 REST API

windows - 如何在 Windows EC2 实例中执行 UserData 内容

aws-cloudformation - 一个 CloudFormation 堆栈还是使用 Export 和 ImportValue 分成多个堆栈?

amazon-web-services - 如何使用 AWS CDK 跨多个区域部署相同的堆栈

amazon-web-services - 云形成 : How to update a particular without updating the entire stackset?

Kubernetes 自动缩放策略不起作用

azure - 在启用自动缩放之前,如何确保 Multi-Tenancy Azure 应用程序中的 Quartz.NET 调度兼容性?

amazon-web-services - 将 Azure 管道变量作为类型 : Number 的参数传递给 AWS Cloudformation 模板

amazon-web-services - 为什么在 AWS 实例配置文件中使用路径时收到 'No roles attached to instance profile'

json - 在cloudformation中创建ELB时出现错误