如何为每个 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 设置自动计划快照?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 iphone 应用程序设置动画以逐字显示文本?

如何为特征的每个实现自动生成递增的数字标识符?

如何为网页中的每个注册显示自动递增的 id 值?

如何为系统包设置自动完成

如何为 UITableView 设置自动高度?

如何为不同的屏幕设置自动大小文本