如何为每个 AMI/EBS 设置自动计划快照?
Posted
技术标签:
【中文标题】如何为每个 AMI/EBS 设置自动计划快照?【英文标题】:How to setup automatic scheduled snapshots for each single AMI/EBS? 【发布时间】:2012-10-13 07:58:18 【问题描述】:Amazon 是否支持可以为每个 AMI/EBS 配置的任何类型的自动计划快照?
我的目标是定期备份每个 AMI,而不依赖于外部脚本等。
【问题讨论】:
您更关心的是备份 EBS 卷还是定期从机器上实际创建一个新的 AMI?您实际上要备份的是什么? 我更关心备份 EBS 卷。 亚马逊没有内置的。但是您可以设置 cronjob 来完成任务。您可以在此处阅读我的说明如何通过 10 个步骤进行设置:***.com/questions/7003409/… 【参考方案1】:AWS 现在提出了数据生命周期管理(请参阅documentation),这可能会对您有所帮助。 AWS 将其定义为一种“调度和管理 EBS 快照的创建和删除”的方式
您可以从 EC2 控制台访问它并搜索“Lifecycle Manager”。然后引导您开始使用
【讨论】:
【参考方案2】:我创建了一个小的 Perl 程序,https://github.com/sciclon/EBS_Snapshots
一些特性: * 程序以守护程序模式或脚本模式(crontab)运行
您也可以只选择本地附加卷或远程卷
您可以定义日志文件
您可以为每个卷定义快照数量
您可以为每个卷定义其中的频率
当达到删除最旧快照的限制时,频率和数量将像“循环”一样工作。
您可以一步调整数量,我的意思是如果您有 6 个快照,并且您在 3 中修改数量,该过程将自动重新调整。
您可以定义“prescript”执行,您可以在执行快照之前添加要执行的代码,例如您想尝试卸载卷或停止某些服务,或者检查实例负载.父进程会等待退出码,“0”表示成功,你可以根据退出码定义是否继续。
您可以定义“后记”执行以在拍摄快照后执行任何脚本(例如告诉您有关它的电子邮件)
您可以添加“受保护的快照”以跳过您定义的快照,我的意思是它们将处于“只读”状态并且永远不会被删除。
当脚本以守护程序模式运行时,您可以“即时”重新配置脚本,脚本接受信号和 IPC。
它有一个“本地缓存”以避免多次请求 API。您可以在配置文件中添加或修改任何配置并重新加载而不终止进程。
【讨论】:
【参考方案3】:AWS 管理控制台没有用于创建维护 EBS 快照的内置自动化功能。您可以尝试使用脚本、具有 EBS 快照基本自动化功能的第三方云管理控制台或用于 EC2 实例和 EBS 卷的基于快照的专用备份和恢复管理解决方案,这些解决方案可在 AWS 市场或其他地方获得。
【讨论】:
【参考方案4】:使用这个python代码
from boto.ec2.connection import EC2Connection
from datetime import datetime
import sys
if __name__ == '__main__':
conn = EC2Connection('aws_access_key_id', 'aws_secret_access_key')
volumes_id='vol-2354534'
description = 'Created by crontab at ' + datetime.today().isoformat(' ')
for vol_id in volumes_id :
snapshot = conn.create_snapshot( vol_id ,description)
【讨论】:
【参考方案5】:您可以使用 AWS 命令行工具自动生成 EBS 快照。只需安排一个 cron 作业或类似作业,以在您的 ebs 卷上以所需的时间间隔运行 ec2-create-snapshot
命令。
如果您不想安装命令行工具,也可以通过 http 调用 API 来做同样的事情。
有关创建 EBS 快照的更多信息,请参阅链接。
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html
【讨论】:
以上是关于如何为每个 AMI/EBS 设置自动计划快照?的主要内容,如果未能解决你的问题,请参考以下文章