如何批量删除名称以'removablestack'开头的CloudFormation堆栈?
批量删除以'removablestack'开头的CloudFormation堆栈的SSM文档方案
可用的SSM自动化文档
下面是一个专门用来批量删除名称以removablestack开头的CloudFormation堆栈的SSM文档,包含堆栈过滤、循环删除的完整逻辑:
description: 批量删除名称以'removablestack'开头的CloudFormation堆栈 schemaVersion: '0.3' assumeRole: '{{ AutomationAssumeRole }}' parameters: AutomationAssumeRole: type: String description: 执行此自动化所需的IAM角色ARN,需具备CloudFormation删除和列表权限 StackNamePrefix: type: String default: 'removablestack' description: 要匹配的堆栈名称前缀 mainSteps: - name: ListTargetStacks action: 'aws:executeAwsApi' inputs: Service: cloudformation Api: ListStacks StackStatusFilter: - CREATE_COMPLETE - ROLLBACK_COMPLETE - UPDATE_COMPLETE - UPDATE_ROLLBACK_COMPLETE - DELETE_FAILED outputs: - Name: StackNames Selector: '$.StackSummaries[?starts_with(StackName, `{{ StackNamePrefix }}`)].StackName' Type: StringList - name: DeleteStacks action: 'aws:executeAwsApi' inputs: Service: cloudformation Api: DeleteStack StackName: '{{ item }}' loop: Items: '{{ ListTargetStacks.StackNames }}' Parallelism: 0
关键说明
- 权限配置:得确保指定的
AutomationAssumeRole具备以下权限:cloudformation:ListStackscloudformation:DeleteStack- 若堆栈包含S3桶、IAM角色这类需要额外权限才能删除的资源,需补充对应资源的删除权限
- 堆栈状态过滤:文档默认只处理可删除状态的堆栈(包含
DELETE_FAILED,失败的堆栈也能重试删除),如果需要覆盖其他状态,修改StackStatusFilter列表即可 - 并行删除:
Parallelism: 0表示串行删除,想提速的话可以设成具体数字(比如5),但要注意CloudFormation的并发操作限制 - 参数自定义:
StackNamePrefix默认是removablestack,执行时可以根据需要修改前缀值
执行步骤
- 登录AWS控制台,进入Systems Manager > 文档 > 创建文档
- 选择自动化类型,把上面的YAML内容粘贴进去,设置文档名称(比如
BatchDeleteCFNStacksByPrefix) - 文档创建完成后,进入自动化 > 执行自动化,选择刚创建的文档
- 指定具备对应权限的
AutomationAssumeRoleARN,确认参数后启动执行
排查之前失败的可能原因
如果之前的boto3脚本或SSM自动化没生效,大概率是以下问题:
- IAM权限不足:比如缺少列表堆栈的权限,或者删除嵌套资源的权限没配齐
- 堆栈状态覆盖不全:脚本只处理了
CREATE_COMPLETE状态的堆栈,忽略了DELETE_FAILED等其他可删除状态 - 循环逻辑错误:SSM自动化的循环配置不正确,没有正确遍历获取到的堆栈列表
内容的提问来源于stack exchange,提问作者Raj R
相关产品推荐
相关产品推荐

