2

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

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_launch_configuration()我会得到:

此名称的 AutoScalingGroup 已存在

我看到 AutoScalingGroup 有一个update方法;我是否需要get_all_groups()使用同名的新 LaunchConfiguration 进行更新?或者我是否LaunchConfiguration每次都创建一个新命名的(即我会遇到一些限制)?

4

2 回答 2

8

我在尝试更新现有的自动缩放组时遇到了类似的问题,并设法按照您在原始帖子中建议的过程对其进行了整理:使用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()
于 2014-02-25T20:56:38.627 回答
2

我不熟悉boto,但我可以清除一些关于 AWS 中的自动缩放的疑虑。要更新自动缩放组的启动配置,您必须创建新的启动配置并更新自动缩放组的启动配置。您可以为 launchconfig 保留两个名称。因此,如果第一个名称正在使用中,则删除具有第二个名称的启动配置,并在该更新自动缩放组之后创建一个具有第二个名称的新配置,如果使用中的启动配置具有第二个名称,则相同。因此,您一次将只有两个启动配置。

希望我已经正确理解了您的问题。

于 2013-06-27T06:02:42.407 回答