阿里云快照删除失败主因是快照正被用于创建自定义镜像,需先调用DescribeImages确认无关联镜像;AWS则因快照状态非completed,须轮询describe_snapshots直至State=='completed'才可删除。

云服务器快照自动化管理不能只靠定时调用 API,关键在于状态校验、生命周期控制和失败重试机制——缺一不可。
如何用 boto3 或 aliyun-python-sdk-ecs 创建带标签的快照
直接调用创建接口容易生成“孤儿快照”(无归属、无清理标记),必须在创建时绑定资源 ID 和业务标签。
- 阿里云需在
CreateSnapshotRequest中显式设置SnapshotName(非必填但建议设为vol-{volume_id}-{date})和Description(填入实例 ID 或项目名) - AWS EC2 要在
create_snapshot()的TagSpecifications参数里指定ResourceType='snapshot',否则标签不会生效 - 避免使用中文或空格作为
SnapshotName,部分地域(如阿里云华北 2)会静默截断或报InvalidParameter
为什么快照删除常失败?重点检查这三处
常见错误不是权限不足,而是依赖关系未解除或状态未就绪。
图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
-
OperationNotSupported(阿里云):目标快照正被用于创建自定义镜像,需先调用DescribeImages确认无关联镜像 -
IncorrectState(AWS):快照状态不是completed,必须轮询describe_snapshots()直到State == 'completed'才能删除 - 批量删除时并发超限:阿里云默认 QPS=10,超过会返回
Throttling,建议加time.sleep(0.2)或用botocore.config.Config(max_pool_connections=20)
基于时间 + 标签的快照自动清理逻辑怎么写才安全
按天保留最近 7 天、按周保留最近 4 周、按月保留最近 6 个月——这种策略必须结合快照创建时间和业务标签双重过滤,否则可能误删。
立即学习“Python免费学习笔记(深入)”;
- 先用
describe_snapshots(Filters=[{'Name': 'tag:Project', 'Values': ['my-app']}])拉取目标快照列表 - 解析每个快照的
StartTime(ISO 格式字符串),转成datetime后比对:AWS 返回的是 UTC 时间,阿里云是本地时区,统一转为 UTC 再计算 - 删除前强制加 dry-run 模式:用
print(f"[DRY] Would delete {snap_id}")先跑一遍,确认匹配逻辑无误再放开真实调用
真正难的不是调 API,是判断“这个快照到底还能不能删”——比如它是否被某个未上线的灾备脚本悄悄引用,或者其源云盘已被释放但快照状态还没同步更新。这类问题只能靠日志埋点+定期人工抽检来兜底。

















