为什么申请与回收要一起设计
资源生命周期自动化最容易只做申请侧:模板化、审批、一键创建都很顺,但回收没有责任人和触发条件。结果是资源规模与成本单边增长,离职人员的权限长期留存,测试环境堆满没人认领的实例。回收侧真正的难点不是删除动作,而是判断「哪些可以退」——这依赖资源标签、到期时间与用量数据,都必须从申请那一刻就开始采集。
基本信息
| 生命周期节点 | 申请、审批、创建配置、交付、运维、到期、回收、销毁 |
|---|---|
| 驱动方式 | 事件驱动为主,定时扫描补偿(弥补漏报事件) |
| 判定依据 | 资源标签、到期时间、连续低用量、身份变更事件 |
| 必备属性 | 归属人、归属租户、到期时间、保护标记、用途备注 |
| 执行要求 | 幂等、可审计、可中断续做、失败可定位到具体资源 |
典型使用场景
- 标准环境交付:按目录申请,模板保证配置一致,成本可预期
- 临时环境到期:测试、演示、培训类资源默认带到期时间
- 闲置清理:连续多天低用量资源先提醒归属人,再进入回收
- 人员变更联动:离职、转岗事件触发资源与权限核查
- 成本分摊核对:按标签把用量归集到租户与项目
自动化环节对照
| 环节 | 触发方式 | 主要风险与对策 |
|---|---|---|
| 到期提醒 | 到期前定时扫描 | 未设到期时间的资源不会产生提醒,需强制填写 |
| 到期宽限 | 到期日进入宽限期 | 宽限期内仍可运行但不接受新申请,给出明确截止时间 |
| 闲置判定 | 连续多日用量低于阈值 | 业务周期性强的资源被误判,需人工复核通道 |
| 确认后回收 | 提醒确认或二次审批 | 缺失确认直接删除是重大事故来源 |
| 离职回收 | 身份系统事件 | 流程延迟导致权限长期留存,需定期全量核对 |
| 账单归集 | 按标签汇总用量 | 标签缺失或可被改写导致错收漏收 |
回收策略的最小表达
回收策略的最小表达
reclaim_policy:
remind_before: 7d # 到期前 7 天提醒归属人
grace_period: 3d # 宽限期内可用,不接受新申请提交
require_confirm: true # 进入回收前必须有一次显式确认
protect_labels: [keep, prod-core] # 命中保护标签直接跳过自动回收
order: 先摘流量再停止实例,最后释放存储 # 顺序错误会造成业务中断或数据丢失
idempotency_key: resource_id + reclaim_round # 重跑不重复删除、不重复记账回收任务必须幂等:同一资源被重复扫描或多实例并行执行时不报错、不重复删除、不重复记账。用 resource_id 加轮次作为幂等键是最简单的做法。
自动回收的破坏力与自动化程度成正比。上线顺序应是先只读统计、再提醒、再建议、最后才执行删除,且始终保留保护名单与二次确认两道闸门。