作为 CDK 管道的一部分,EC2 实例通过以下代码作为 AutoScaling 组的一部分启动:
launch_template = ec2.LaunchTemplate(
self,
f"{self.resources_prefix}-launch-template",
instance_type=ec2.InstanceType(instance_type_identifier=self.ec2_type),
machine_image=self.linux_ami,
role=self.ec2_role,
security_group=self.ec2_sg,
user_data=ec2.UserData.custom(self.user_data),
)
asg = autoscaling.AutoScalingGroup(
self,
f"{self.resources_prefix}-auto-scaling",
vpc=self.ss_vpc,
vpc_subnets=ec2.SubnetSelection(subnets=[
self.subnet_a,
self.subnet_b,
]),
launch_template=launch_template,
desired_capacity=1,
min_capacity=1,
max_capacity=1,
)
但是,如果我更改 user_data 并再次触发管道,则 EC2 实例不会刷新以反映更改后的 user_data。
我尝试使启动模板 ID 唯一并附加 UUID,但这没有任何区别。
如何确保每次运行管道时都会重新创建此 EC2 实例?
您可以尝试使用 AutoScaling Group 生命周期挂钩:
这将使用 Lambda 函数来启动实例刷新。部署堆栈后将触发 Lambda 函数,以确保使用新用户数据重新创建实例。