我的关键EBS卷很少会定期备份为快照。有什么方法可以设置删除策略,只保留最近的两个快照?
例如: 在其中一个环境中,我有来自10个EBS卷的近300个快照。一旦我有了这个策略,它应该归结为20快照并保持在该级别。
答案 0 :(得分:1)
这是一些快照所有EBS卷的代码,然后只保留最新的2个快照。您还可以将其修改为仅具有特定标记的快照卷。适当地替换您自己的区域。
#!/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('ap-southeast-2')
# 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])
只需将其作为每日cron
作业运行。
答案 1 :(得分:0)
从2018年中开始,现在可以使用Amazon Data Lifecycle Manager自动执行此操作。您可以设置规则,例如多长时间拍摄一次快照,保留多少快照(或保留多长时间),其余全部由快照完成。 (保留快照数量与停止拍摄快照后可保留多长时间之间的差异。)
我知道,一般而言,堆栈溢出对仅作为链接的答案不满意,但是虽然从概念上讲很简单,但有太多内容需要我解释,无法在此处完整记录。请参阅官方的AWS文档。