使用boto中的新LaunchConfiguration更新AutoScalingGroup

jbe*_*man 2 amazon-ec2 boto autoscaling

我有一个脚本需要使用新的LaunchConfiguration更新一个名为AutoScalingGroup的新的刚刚创建的AMI.不幸的是文档不好,我厌倦了反复试验.这是我到目前为止:

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)
Run Code Online (Sandbox Code Playgroud)

失败的最新方式是:

通过此名称启动配置已存在

如果我发表评论,那么create_launch_configuration()我得到:

此名称的AutoScalingGroup已存在

我看到AutoScalingGroup有一个update方法; 我是否需要get_all_groups()使用具有相同名称的新LaunchConfiguration进行更新?或者,如果我LaunchConfiguration每次创建一个新命名(即我会遇到某种限制),这是否重要?

And*_*rew 7

我在尝试更新现有的自动缩放组时遇到了类似的问题,并设法使用您在原始帖子中建议的过程对其进行排序:使用get_all_groups()以获取自动缩放组,然后calling 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()
Run Code Online (Sandbox Code Playgroud)