我计划使用 CloudWatch 自动创建 EBS 快照
如何计划自动删除旧快照?
问问题
708 次
2 回答
1
这可能会有所帮助。这是我编写的一个 Python 程序,它拍摄所有卷的快照并保留最后 2 个快照。
您可以在 EC2 实例上运行这样的程序,或者将其转换为作为计划的 AWS Lambda 函数运行。
#!/usr/bin/env python
import boto.ec2, os
MAX_SNAPSHOTS = 2 # Number of snapshots to keep
# Connect to EC2 in this region
connection = boto.ec2.connect_to_region('<insert region here>')
# Get a list of all volumes
volumes = connection.get_all_volumes()
# Create a snapshot of each volume
for v in volumes:
connection.create_snapshot(v.id)
# Too many snapshots?
snapshots = v.snapshots()
if len(snapshots) > MAX_SNAPSHOTS:
# Delete oldest snapshots, but keep MAX_SNAPSHOTS available
snap_sorted = sorted([(s.id, s.start_time) for s in snapshots], key=lambda k: k[1])
for s in snap_sorted[:-MAX_SNAPSHOTS]:
print "Deleting snapshot", s[0]
connection.delete_snapshot(s[0])
于 2017-03-08T09:12:53.940 回答
0
您可以拍摄快照并在这些快照上放置“DeleteOn:”之类的标签。
编写另一个基于此标签读取快照的 lambda,并在该特定日期将其删除。botocore Doc中有详细说明:https ://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html
于 2019-02-08T02:32:52.503 回答