amazon-web-services - 如何删除太多状态为 DELETE_COMPLETE 的 Cloudformation 堆栈
问题描述
在我当前的站点上,一个帐户中有大量的 cloudformation 堆栈。
如果我们调用 AWS CLI 来列出所有堆栈,我们会收到一条错误消息,指出请求已被动态限制,并且请求失败。
根据 AWS 文档建议以避免动态限制,我使用分页和指数延迟实现了一个以更小块下载的脚本。
这成功了,但是如果我们可以摆脱DELETE_COMPLETE
状态中的许多堆栈,这将删除大约 800 个堆栈并且将成功完成。
如何删除处于DELETE_COMPLETE
状态的 AWS Cloudformation 堆栈?
我们还在 Cloudformation 控制台中看到问题,由于堆栈数量众多,最简单的操作会超时。AWS 已为此提出请求。尽管我们所有的部署都是自动化的,但控制台对于开发和调试很有用。
我发现一个旧论坛帖子说这些堆栈将在 90 天后自动删除,但我们有 800 多个这样的堆栈,有些比这更老,而且它们仍然存在。
如果我使用 CLI 调用删除其中一个堆栈,如下所示:
aws cloudformation delete-stack --stack-name arn:aws:cloudformation:eu-west-1:123456789:stack/my-stack-name-here/87654321-1aaa-11aa-00a1-0aa1a0000000
删除调用没有错误地终止,但堆栈保持原样。我可以看到调用已在 Cloudtrail 中执行。delete-stack
如果状态已设置为 ,则该操作看起来什么都不做DELETE_COMPLETE
。
我们需要删除这些堆栈,因为它们大约有 800 个,而且我们有太多的堆栈,控制台会在最简单的任务中给我们错误,比如搜索一个堆栈来编辑它。
我们确实通过 AWS 请求增加了配额大小(最大堆栈数),但是当我们尝试将它们全部列出时,限制就会启动,因为它们太多了。
解决方案
我发现一个旧论坛帖子说他们将在 90 天后自动删除
删除的堆栈记录在一定时间后过期是当前可以删除已删除堆栈记录的唯一方法
我们通过 AWS 请求增加了配额大小(最大堆栈数)
最大堆栈数的配额仅适用于活动堆栈,因此无关紧要
使用控制台进行普通操作时会出现节流,因为它们太多了
控制台在搜索栏旁边有一个堆栈状态下拉列表,用于按堆栈状态进行过滤