Terraform 不会删除启用了缩减保护的自动缩放组



Terraform在启用扩展保护时无法销毁自动扩展组,对此有什么解决方法吗?

尝试使用它,但在AWS控制台中自动缩放组的活动部分,我看到它被取消了,因为启用了保护中的缩放。

provisioner "local-exec" {
when    = destroy
command = "aws autoscaling update-auto-scaling-group --auto-scaling-group-name ${self.name} --min-size 0 --desired-capacity 0"
}

您可以在aws_autoscaling_group资源上使用force_delete参数来删除ASG,而无需等待实例终止。AWS Go SDK文档上的这条评论进一步解释了这一点:

// Specifies that the group is to be deleted along with all instances associated
// with the group, without waiting for all instances to be terminated. This
// parameter also deletes any outstanding lifecycle actions associated with
// the group.
ForceDelete *bool `type:"boolean"`

请注意,如果您依赖于自动缩放组生命周期挂钩(例如终止生命周期挂钩,它会在实例终止之前耗尽任何ECS任务的容器实例(,那么这些挂钩将被跳过。

如果您依赖于终止生命周期挂钩,那么您可以使用销毁时间设置器来向AWS CLI抛出外壳,就像您已经尝试过的那样,但使用aws autoscaling set-instance-protection命令来消除保护中的规模:

resource "aws_autoscaling_group" "autoscaling_group" {
# ...
provisioner "local-exec" {
when    = destroy
command = <<EOF
AUTOSCALING_INSTANCE_IDS=$(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names ${self.name} --query 'AutoScalingGroups[0].Instances[].InstanceId' --output text)
aws autoscaling set-instance-protection --auto-scaling-group-name ${self.name} --instance-ids "$${AUTOSCALING_INSTANCE_IDS}" --no-protected-from-scale-in
EOF
}
}

相关内容

  • 没有找到相关文章

最新更新