Terraform - AWS Auto-Scaling-Group 在对 'Terminate' 使用 Suspended-Policy 选项时不删除
Terraform - AWS Auto-Scaling-Group not deleting when using Suspended-Policy option for 'Terminate'
我在网上搜索过,但没有在任何地方找到这个问题的答案,如果它是另一个问题的副本,我们深表歉意。
我从头开始创建了一个 CloudFormation 模板(我已将其转移到 Terraform),它完全创建了一个实例集群,并在开始时输入了特定的要求。其中一部分是 Auto-Scaling-Group,出于某些原因,我想暂停其中的终止策略。现在在 CFT 领域,没有办法(或不能)使用此设置创建 ASG,相反,我必须在创建后作为 CFT 的一部分使用 Lambda 函数来执行此操作。这个,虽然考虑到它所做的一点点复杂,但很有魅力!
在 Terraform 中,无论出于何种原因,我都无法让 Lambda 函数发挥作用。它创建并存在,我可以完美地看到 Lambda 中的代码。但它什么也没做——这是一个单独的问题——因此,我发现 Terraform 的“aws_autoscaling_group”实际上有一个“suspended_processes”选项(见下面的代码)。这会根据需要创建 ASG,策略暂停,但是当我尝试 'Destroy' Terraform 创建的集群时,它挂起并且实际上无法执行 - 就像终止策略阻止它执行此操作一样(这使得感觉,我猜……)。现在 AWS CloudFormation 足够聪明,可以解决这个问题,但 Terraform 似乎不是。有没有一种明智的方法可以让这个系统做我需要的事情而不引起问题?我喜欢 Terraform,但对于这个特定的小任务,我除了遇到问题和困难外什么都没有。
我的代码:
resource "aws_autoscaling_group" "Cluster_Example" {
name = <Stuff>
launch_configuration = <Stuff>
vpc_zone_identifier = <Stuff>
desired_capacity = <Stuff>
placement_group = <Stuff>
min_size = <Stuff>
max_size = <Stuff>
suspended_processes = [ "Terminate" ]
}
澄清一下,我正在尝试将所有这些(原因)自动化。所以是的,在我想删除它的时候进入 ASG 并手动删除暂停是一种选择,但绝对不是我想要的。
如有任何帮助,请提前干杯!
文尼
Okaaaaay 花了我比我想要的更长的时间来解决这个问题,但我确实有一个 'solution'...有点...基本上,它就像向组中添加一个额外条件一样简单,'force-delete',如下:
resource "aws_autoscaling_group" "Cluster_Example" {
<Stuff>
suspended_processes = [ "Terminate" ]
force_delete = "true"
}
这确保没有任何东西阻止组的删除,但是,它可能会导致资源在之后挂起 un-intentionally。幸运的是,在我的例子中,实例总是在被要求删除时被删除,但只是因为暂停而不能删除。所以一旦这个团体死去,他们也死了!
考虑到这个选项并不是真正用于此目的,它不是最好的解决方案,老实说,但就我而言,它是目前的解决方案。
我在网上搜索过,但没有在任何地方找到这个问题的答案,如果它是另一个问题的副本,我们深表歉意。
我从头开始创建了一个 CloudFormation 模板(我已将其转移到 Terraform),它完全创建了一个实例集群,并在开始时输入了特定的要求。其中一部分是 Auto-Scaling-Group,出于某些原因,我想暂停其中的终止策略。现在在 CFT 领域,没有办法(或不能)使用此设置创建 ASG,相反,我必须在创建后作为 CFT 的一部分使用 Lambda 函数来执行此操作。这个,虽然考虑到它所做的一点点复杂,但很有魅力!
在 Terraform 中,无论出于何种原因,我都无法让 Lambda 函数发挥作用。它创建并存在,我可以完美地看到 Lambda 中的代码。但它什么也没做——这是一个单独的问题——因此,我发现 Terraform 的“aws_autoscaling_group”实际上有一个“suspended_processes”选项(见下面的代码)。这会根据需要创建 ASG,策略暂停,但是当我尝试 'Destroy' Terraform 创建的集群时,它挂起并且实际上无法执行 - 就像终止策略阻止它执行此操作一样(这使得感觉,我猜……)。现在 AWS CloudFormation 足够聪明,可以解决这个问题,但 Terraform 似乎不是。有没有一种明智的方法可以让这个系统做我需要的事情而不引起问题?我喜欢 Terraform,但对于这个特定的小任务,我除了遇到问题和困难外什么都没有。
我的代码:
resource "aws_autoscaling_group" "Cluster_Example" {
name = <Stuff>
launch_configuration = <Stuff>
vpc_zone_identifier = <Stuff>
desired_capacity = <Stuff>
placement_group = <Stuff>
min_size = <Stuff>
max_size = <Stuff>
suspended_processes = [ "Terminate" ]
}
澄清一下,我正在尝试将所有这些(原因)自动化。所以是的,在我想删除它的时候进入 ASG 并手动删除暂停是一种选择,但绝对不是我想要的。
如有任何帮助,请提前干杯! 文尼
Okaaaaay 花了我比我想要的更长的时间来解决这个问题,但我确实有一个 'solution'...有点...基本上,它就像向组中添加一个额外条件一样简单,'force-delete',如下:
resource "aws_autoscaling_group" "Cluster_Example" {
<Stuff>
suspended_processes = [ "Terminate" ]
force_delete = "true"
}
这确保没有任何东西阻止组的删除,但是,它可能会导致资源在之后挂起 un-intentionally。幸运的是,在我的例子中,实例总是在被要求删除时被删除,但只是因为暂停而不能删除。所以一旦这个团体死去,他们也死了!
考虑到这个选项并不是真正用于此目的,它不是最好的解决方案,老实说,但就我而言,它是目前的解决方案。