能否使用AWS CLI通过字符串匹配批量删除以ABC开头的AWS artifact及资源?
AWS 批量删除"ABC"前缀多类型资源操作说明
核心结论
AWS 没有提供跨服务的全局一键删除能力,无法通过单条CLI命令直接匹配账户下所有服务、所有类型的"ABC"前缀资源完成删除。所有匹配删除操作必须按资源所属的服务类型,逐类枚举过滤、逐类执行删除流程,不存在覆盖全资源类型的统一匹配入口。
分类型匹配删除的具体实现
针对你提及的三类核心资源,可通过如下CLI逻辑完成前缀匹配删除:
- S3 存储桶(Buckets)
- 第一步先枚举所有桶,筛选出名称以"ABC"开头的目标集合:
aws s3api list-buckets --query "Buckets[?starts_with(Name, 'ABC')].Name" - 注意:S3桶无法直接删除非空桶,需要先通过
--force参数清空桶内所有对象、历史版本、未完成的分段上传内容,再执行删除操作 - 对筛选出的目标桶,循环执行删除命令:
aws s3 rb s3://目标桶名 --force
- 第一步先枚举所有桶,筛选出名称以"ABC"开头的目标集合:
- Lambda 函数
- 第一步枚举所有函数,筛选名称以"ABC"开头的目标集合:
aws lambda list-functions --query "Functions[?starts_with(FunctionName, 'ABC')].FunctionName" - 对筛选出的目标函数,循环执行删除命令:
aws lambda delete-function --function-name 目标函数名
- 第一步枚举所有函数,筛选名称以"ABC"开头的目标集合:
- CloudFormation 栈
- 第一步枚举处于正常运行状态的栈,筛选栈名称以"ABC"开头的目标集合(需过滤处于删除中、已删除状态的无效栈):
aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE UPDATE_ROLLBACK_COMPLETE --query "StackSummaries[?starts_with(StackName, 'ABC')].StackName" - 对筛选出的目标栈,执行删除命令:
aws cloudformation delete-stack --stack-name 目标栈名,执行后轮询栈状态即可确认删除完成
- 第一步枚举处于正常运行状态的栈,筛选栈名称以"ABC"开头的目标集合(需过滤处于删除中、已删除状态的无效栈):
操作注意事项
- 不同服务的资源标识规则存在差异:部分服务的唯一标识为ARN格式而非纯资源名称,无法直接通过简单字符串前缀匹配(比如IAM角色、API Gateway资源),需要拉取完整资源元数据做二次校验,不能盲删。
- 注意资源依赖顺序:如果"ABC"前缀的资源之间存在关联依赖(比如CloudFormation栈创建的底层S3桶、Lambda关联的IAM执行角色),需要按照依赖逆序删除,避免触发资源占用报错。
- 删除前必须做校验:将枚举过滤得到的待删资源列表导出核对,确认不存在非"ABC"前缀的误匹配资源,尤其是跨权限拉取资源的场景下,避免误删业务核心资源。
- 即使使用AWS资源组、AWS Config这类全局资源盘点工具,也需要逐服务配置前缀匹配规则,不存在零配置的全局批量匹配删除能力。
内容的提问来源于stack exchange,提问作者Cogito Ergo Sum
相关产品推荐
相关产品推荐

