如何清理GCP项目资源?保留项目删除指定日期创建的全部资源
清理GCP项目中特定日期创建的资源
前提准备
- 确保已安装并初始化
gcloudCLI,且拥有项目的Editor或Owner权限 - 明确要清理的目标日期范围(比如创建时间在
2024-05-20T00:00:00Z到2024-05-20T23:59:59Z之间),避免模糊范围导致误删
方法1:Cloud Asset Inventory可视化筛选+导出
- 打开GCP控制台的Cloud Asset Inventory页面
- 在筛选条件中选择「创建时间」,设置为指定的日期范围
- 点击「导出」,选择CSV或JSON格式保存到本地
- 导出后逐一核对资源类型,排除项目共享的核心资源(比如固定VPC网络、共享服务账号)
- 对确认删除的资源,可批量生成删除命令,或在控制台进行批量操作(部分资源支持)
方法2:gcloud CLI批量筛选+删除
步骤1:筛选特定日期的资源
针对不同资源类型,用gcloud list结合--filter参数精准筛选,示例:
- Compute Engine实例:
gcloud compute instances list --filter="creationTimestamp >= '2024-05-20T00:00:00Z' AND creationTimestamp <= '2024-05-20T23:59:59Z'" --format="value(name, zone)" - Cloud Storage存储桶:
gcloud storage buckets list --filter="timeCreated >= '2024-05-20T00:00:00Z' AND timeCreated <= '2024-05-20T23:59:59Z'" --format="value(name)" - Cloud Functions函数:
gcloud functions list --filter="createTime >= '2024-05-20T00:00:00Z' AND createTime <= '2024-05-20T23:59:59Z'" --format="value(name, region)"
步骤2:批量删除筛选结果
把筛选结果导出到文件,循环执行删除命令,比如删除Compute实例:
# 保存筛选结果到文件 gcloud compute instances list --filter="creationTimestamp >= '2024-05-20T00:00:00Z' AND creationTimestamp <= '2024-05-20T23:59:59Z'" --format="value(name, zone)" > instances_to_delete.txt # 循环删除(--quiet跳过确认,执行前务必核对列表) while read -r name zone; do gcloud compute instances delete $name --zone=$zone --quiet done < instances_to_delete.txt
方法3:自定义Python脚本(复杂场景适配)
如果需要覆盖更多资源类型,可编写脚本调用GCP SDK:
- 安装依赖:
pip install google-cloud-asset google-cloud-compute - 核心逻辑:
- 通过Cloud Asset Inventory API查询指定日期的所有资源
- 添加过滤规则排除共享核心资源
- 针对不同资源类型调用对应的删除API
关键注意事项
- 先验证再执行:所有删除操作前,务必反复核对筛选出的资源列表,避免误删共享基础设施
- 保留核心资源:学生实践项目通常有固定共享的VPC、子网、服务账号,需在筛选时加入排除条件(比如
NOT name:shared-vpc) - 记录操作日志:保存筛选和删除的命令、结果,方便后续追溯
- 权限管控:给学生账号分配最小操作权限,清理操作由管理员账号执行
内容的提问来源于stack exchange,提问作者Asif Khalil
相关产品推荐
相关产品推荐

