注意:这里的代码是 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/