Amazon ec2 使用boto中的新启动配置更新AutoScalingGroup
我有一个脚本,需要为一些新创建的AMI使用新的启动配置更新命名的AutoScalingGroup。不幸的是,文档不好,我厌倦了反复试验。这就是我到目前为止所做的:Amazon ec2 使用boto中的新启动配置更新AutoScalingGroup,amazon-ec2,boto,autoscaling,Amazon Ec2,Boto,Autoscaling,我有一个脚本,需要为一些新创建的AMI使用新的启动配置更新命名的AutoScalingGroup。不幸的是,文档不好,我厌倦了反复试验。这就是我到目前为止所做的: build_autoscale_name = "build_autoscaling" build_autoscale_lc = LaunchConfiguration( ...launch config stuff... , i
build_autoscale_name = "build_autoscaling"
build_autoscale_lc = LaunchConfiguration(
...launch config stuff...
, image_id=imid # new AMI
)
as_conn.create_launch_configuration(build_autoscale_lc)
ag = AutoScalingGroup(
group_name=build_autoscale_name
, launch_config=build_autoscale_lc
...other ASG stuff...
)
as_conn.create_auto_scaling_group(ag)
最新的失败方式是:
此名称的启动配置已存在
如果我注释掉create\u launch\u configuration()
此名称的自动缩放组已存在
我看到AutoScalingGroup有一个
update
方法;我是否需要获取所有组()
然后使用相同名称的新启动配置进行更新?或者,如果我每次都创建一个新命名的启动配置
,这是否重要(即,我是否会遇到一些限制) 我不熟悉boto
,但我可以澄清一些关于AWS自动校准的疑问。要更新自动缩放组的启动配置,您必须创建新的启动配置并更新自动缩放组的启动配置。您可以为launchconfig保留两个名称。因此,如果使用的是第一个名称,则删除具有第二个名称的启动配置,并在更新autoscaling组之后创建具有第二个名称的新启动配置,如果使用的launchconfig具有第二个名称,则相同。因此,您一次只有两个启动配置
希望我正确地理解了您的问题。我在尝试更新现有的自动缩放组时遇到了类似的问题,并按照您在原始帖子中建议的流程解决了问题:使用
获取所有组()
获取自动缩放组,然后调用update()
更新属性后,在对象上
完整示例:
autoscaling_group_name = 'my-test-asg'
launch_config_name = 'my-test-lc'
launch_config = LaunchConfiguration( name=launch_config_name,
image_id=image_id,
key_name=ssh_key_name,
security_groups=security_groups,
user_data=user_data,
instance_type=instance_type,
associate_public_ip_address=associate_public_ip )
as_group = as_conn.get_all_groups(names=[autoscaling_group_name])[0]
setattr(as_group, launch_config_name, launch_config)
as_group.update()
谢谢你的指导。我可能会用两个启动配置来尝试这种方法。真遗憾,这太笨重了!launch_config在定义之后没有在代码中使用?@Sirex-是的,我现在已经修复了它(两年多后,lol)