【问题标题】:What happens to changes for Autoscaling instances when terraform changes are made进行 terraform 更改时,Autoscaling 实例的更改会发生什么变化
【发布时间】:2026-01-29 15:55:01
【问题描述】:

假设我在 terraform 中定义了一个自动缩放组,其中 min=2 和 max=10。可以说,我的 ASG 已启动,并且正在进行自动缩放,目前为 6 个实例。

现在我想更改我的 ASG 以添加另一个子网,并且还想更改 max=4。我当前的 6 个实例不会受到影响吗?或者当我运行 terraform apply 时,terraform 会将实例数减少到 4 并添加新子网。

【问题讨论】:

    标签: amazon-web-services terraform


    【解决方案1】:

    会发生什么取决于您的设置。现在你刚刚写了你有min=2 and max=10desired_capacity呢?

    假设您从 desired_capacity == min 开始的标准设置,当您的 ASG 处于 6 个实例时(即,由于自动缩放活动,它的 desired_capacity=6terraform apply终止四个实例并带来它回到desired_capacity=2,因为这就是您的 terraform 中的内容。如果将max 设置为 4,也会发生类似的情况。

    要解决这个问题,您必须忽略 TF 中对 desired_capacity 的更改:

      lifecycle {
        ignore_changes = [ desired_capacity ]
      }
    

    我当前的 6 个实例不会受到影响吗?

    没有。两个将被终止。

    当我运行 terraform apply 时,terraform 是否会将实例数减少到 4 并添加新子网。

    是的。那会发生。但是即使您不更改 max 也会发生这种情况,因为 TF 会将 desired_capacity 设置为您在配置文件中的内容(除非明确忽略)。

    如果新子网位于不同的 AZ,则在该 ASG 之上可能会触发 AZ 重新平衡。 ASG 将尝试将您的实例平均分布在 AZ 中。所以在这个过程中,有些可以被终止并在新的AZ中重新启动。

    【讨论】:

      最近更新 更多