一、背景与方案概述
整体方案逻辑:
整套架构建议采用「定时轮询为主,告警事件为辅」双链路:
- SCF 定时触发器(主链路):按周期定时执行函数,遍历账号下多地域 CVM,读取监控指标,判定是否长期闲置。
- Cloud Monitor 云监控(辅助):采集 CVM CPU、带宽、磁盘指标,指标持续低于阈值产生告警,通过告警回调投递事件到 SCF,作为补充触发。
- SCF 云函数执行逻辑:接收定时任务或告警事件,读取实例标签做白名单过滤,过滤包年包月实例;优先发送邮件 / 消息通知,确认条件满足后调用 CVM API 执行销毁。
不建议仅依靠监控告警单一链路,7 天以上闲置会出现告警静默,自动化会失效。
二、安全策略:CAM 权限控制、标签白名单与防护机制
为避免自动化脚本误删线上核心业务资源,必须配置多层防护:
最小权限 CAM 角色配置 为 SCF 创建独立服务角色,授予最小必要权限:
- CVM:cvm:TerminateInstances(销毁实例)、cvm:DescribeInstances(查询实例)
- 标签:tag:DescribeResourceTagsByResourceIds(读取实例标签,过滤白名单)
不要直接授予全量管理员权限。
标签 Tag 业务隔离规则
- 自动释放候选:实例打上标签 AutoRelease:True,只有带该标签的按量实例才会进入销毁判断逻辑。
- 生产白名单:打上 Env:Production的实例直接跳过所有处理逻辑,永不执行销毁。
业务防护硬性逻辑
- 自动跳过所有包年包月 CVM 实例;
- 销毁前建议优先创建快照备份;
- 正式销毁前发送邮件 / 消息通知,可配置人工确认开关,不建议收到条件就直接无条件删除。
三、配置参考步骤
闲置资源判定参考指标
监控统计粒度 5 分钟,适合测试、临时计算实例,生产业务可按需调整阈值。
表格
| 监控指标 | 建议阈值 | 持续时间 | 判定逻辑 |
| CPU 使用率 | < 5% | 连续 7 天 | 长期处于极低负载 |
| 公网出带宽 | < 100 Kbps | 连续 7 天 | 无外部业务交互流量 |
| 磁盘读写 IOPS | < 10 次 / 秒 | 连续 7 天 | 无后台批处理任务 |
- 创建 SCF 云函数在腾讯云国际 SCF 控制台选择对应海外地域新建 Python 云函数,绑定上面创建好的 CAM 服务角色。
同时开启两个触发器: ① 定时触发器(主链路,建议每日执行一次,做全账号多地域巡检兜底); ② 告警回调触发器(辅助链路,接收云监控告警事件)。 脚本需要遍历全部业务地域,调用 CVM API 时显式传入 region 参数,保证多地域实例都能被扫描到。 解析告警 JSON 事件提取实例 ID 作为补充输入;具体 SDK 代码请参考腾讯云国际官方 API 文档。
- 配置云监控告警策略(仅做辅助通知)进入 Cloud Monitor 可观测平台,新建告警策略,绑定目标 CVM 实例; 配置上面闲置指标阈值;在通知模板开启告警回调,回调地址填写 SCF 回调格式 SCF:$region/$namespace/$functionName,同时配置邮件、站内信告警渠道,方便人工接收预警腾讯云。
- 给实例打标签测试 / 临时实例打上 AutoRelease:True;生产业务实例打上 Env:Production。
- 上线前模拟测试修改脚本为仅输出日志,不实际调用销毁接口;执行定时触发器,查看 SCF 执行日志,确认标签过滤、地域遍历、计费模式过滤逻辑符合预期,验证无误后再开启真实销毁动作。
四、资源清理注意事项
- CVM 实例被销毁不等于所有费用停止:脚本建议增加逻辑,识别独立弹性 CBS 云硬盘、闲置 EIP,避免遗留资源持续扣费腾讯云。
- 按量计费实例销毁后会进入回收站保留 2 小时,回收站期间磁盘、EIP 仍会计费,需要彻底释放独立存储资源。
- 可以配置销毁前自动打快照,防止误删后数据丢失。
- 上线后定期查看 SCF 执行日志与费用中心账单,校验自动化执行效果。
五、常见问题解答(FAQ)
Q1:腾讯云国际版如何自动识别并释放闲置的云服务器?
A:推荐采用SCF 定时轮询为主、云监控告警为辅的双链路架构。SCF 定时遍历多地域 CVM 实例,读取监控指标,结合实例标签白名单过滤,仅对带 AutoRelease:True 标签的按量计费闲置实例,在通知预警后执行 API 销毁;云监控告警作为补充触发手段,不建议作为唯一执行链路。
Q2:为什么不建议完全依赖云监控 7 天闲置告警自动销毁? A:云监控告警生命周期存在限制,如果告警条件连续 7 天未恢复,系统会停止发送告警通知,告警回调不再推送事件到 SCF,自动化链路直接失效;同时告警回调存在事件投递丢包风险,必须增加 SCF 定时触发器兜底巡检腾讯云。
Q3:执行 TerminateInstances 销毁 CVM 之后,还会产生账单吗? A:会。销毁 CVM 只会释放实例计算资源;独立弹性 CBS 数据盘、EIP 弹性公网 IP、快照拥有独立生命周期,不会随 CVM 自动删除,会继续计费,需要脚本或者人工单独清理这些资源腾讯云。
Q4:配置完自动化之后如何验证是否正常工作? A:上线前先关闭真实销毁逻辑,只打印执行日志;手动触发 SCF 定时触发器,在云函数日志查看实例过滤、标签识别、地域遍历结果;确认逻辑完全符合预期之后,再开启销毁动作。
Q5:包年包月实例会被脚本误销毁吗? A:脚本必须增加计费模式判断逻辑,自动跳过所有包年包月实例;同时搭配 Env:Production 生产标签白名单做二次防护,双重规避误操作。