如何设置AWS EBS卷快照删除策略?

时间:2015-03-25 17:17:30

标签: amazon-web-services backup

我的关键EBS卷很少会定期备份为快照。有什么方法可以设置删除策略,只保留最近的两个快照?

例如: 在其中一个环境中,我有来自10个EBS卷的近300个快照。一旦我有了这个策略,它应该归结为20快照并保持在该级别。

2 个答案:

答案 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文档。