如何在AWS CloudFormation中配置“实例保护”?

8
我需要使用CloudFormation模板为我的Auto Scaling Group中的实例设置“实例保护”属性。
我通常在AWS控制台上执行以下操作:EC2->自动缩放组。

但是我似乎在CloudFormation 文档 上找不到它。

3个回答

10

可以使用CloudFormation完成,但并不容易。

截至2020年6月29日,CloudFormation仍未正式支持自动扩展实例保护功能。该功能于2015年12月7日发布,可惜从未与CloudFormation集成。

作为参考,除了资源文档之外,您还可以参考CloudFormation发布历史记录,以确定所需功能是否已被集成。

其他AWS SDK通常具有更完整的API覆盖范围并且更新频率更高,因此作为解决方法,您可以使用例如带有--new-instances-protected-from-scale-in标志的AWS CLI create-auto-scaling-group命令创建您的AutoScaling Group。
如果不能在CloudFormation之外创建您的自动缩放组,则另一种(更复杂的)解决方法是在现有CloudFormation资源之上打补丁以更新新创建的自动缩放组,使用其中一个已更新的SDK设置新功能。它有效,但您需要创建lambda函数和所有支持的IAM角色和权限,并将它们全部连接到自定义资源中。关于如何支持另一个CloudFormation不支持的功能(将ACM证书附加到CloudFront分发),请参见我的SO答案

当然,最简单的方法是等待AWS将此功能正式支持到CloudFormation中,他们最终会这样做。 [更新于2020年6月] 好吧,在经过四年的等待后,我放弃了。我承认我错了!


太好了。我需要这个确认,我以为我没有搜索到足够的信息。我想我只能等待了。谢谢! - imTachu
2
很遗憾,引入这个功能一年半后,仍然是正确的答案。 - kadrach
https://www.terraform.io/docs/providers/aws/r/autoscaling_group.html#protect_from_scale_in - Hamish Mackenzie
现在支持吗? - Matteo
不,还是没有任何进展 - 我已经更新了我的答案,承认我之前错误地预测它最终会得到支持! - wjordan

2

目前似乎CloudFormation不支持这个功能。

如果你查看CFN关于自动扩展的文档,它有一个名为 TerminationProtection 的元素,它是一个字符串列表。我在文档中找不到可用选项的清单,但当我使用CLI时,似乎没有相关内容:

$> aws autoscaling describe-termination-policy-types
{
    "TerminationPolicyTypes": [
        "ClosestToNextInstanceHour", 
        "Default", 
        "NewestInstance", 
        "OldestInstance", 
        "OldestLaunchConfiguration"
    ]
}

是的,这是自动扩展组中的另一个因素,但是没有任何东西与CLI上的实例保护相关。 - imTachu

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接