Amazon ec2 使用boto中的新启动配置更新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

我有一个脚本,需要为一些新创建的AMI使用新的启动配置更新命名的AutoScalingGroup。不幸的是,文档不好,我厌倦了反复试验。这就是我到目前为止所做的:

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)