如何计划AWS EC2 Windows实例的自动(每日)快照?

我有一些在Amazon EC2上托pipe的Windows服务器。 一些运行Windows Server 2003和其他运行Windows Server 2008.这些是EBS支持的实例。 大多数实例还附加了一些额外的EBS卷。

我们希望将每天的Windows机器快照(以及连接的EBS卷)安排到S3,以便我们每天都有可用的备份。

有人会认为这是一个非常普遍的要求,可以通过AWSpipe理控制台提供,但是,事实并非如此。 有什么方法可用? 我如何在Windows服务器上安排每日快照?

有几个在线的脚本例子可以在Linux上使用,但是对于windows而言则不是那么多。 我曾看过http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html以及https://github.com/ronmichael/aws-snapshot-调度程序 。 有没有人使用这些方法之一,它的工作?

我也考虑过像Skeddly这样的服务,乍一看似乎不贵,但是当你把它用于多台服务器时,价格很快就会boost到这样一个点,看起来更好的select是创build你自己的解决scheme,然后将它应用到未来的新服务器。 用Skeddly我们会支付每个服务器。

我们如何计划Windows实例的每日快照?

Amazon Web Services最近宣布推出用于Windows的PowerShell命令行工具,并将其与AWS Tools for .NET SDK一起打包。

AWS Powershell工具使创build快照变得非常容易:

New-EC2Snapshot "vol-371acd04" -Description "My Snapshot" 

你可以像这样查询你的快照:

 PS C:\Program Files (x86)\AWS Tools\PowerShell> Get-EC2Snapshot | more SnapshotId : snap-18be2b28 VolumeId : vol-371acd04 Status : completed StartTime : 2012-12-28T08:17:00.000Z Progress : 100% OwnerId : 383816850479 VolumeSize : 30 Description : My Snapshot OwnerAlias : Tag : {} 

确保安装了AWS Powershell工具,并创build一个计划任务,使用类似于上面代码片段的PowerShell脚本来安排快照,而且应该很好。

已更新为查询附加的EBS卷:

要查询连接到您的实例的EBS卷,然后快照每个人,你可以做这样的事情:

 # Find my instance ID from the EC2 metadata $myInstanceID = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id") # Query for volumes that are attached to my Instance Id $volumes = (Get-EC2Volume).Attachment | where {$_.InstanceId -eq $myInstanceID } | Select VolumeId # Iterate through these volumes and snapshot each of them foreach ($volume in $volumes) { New-EC2Snapshot $volume.VolumeId -Description "My Snapshot" } 

跳进一个让我开始寻找的旧的答案。 对Ameer的荣誉上面的脚本,顺便说一句。

发现这篇文章深入到PowerShell脚本深入到全面自动化数据收集和EBS快照过程:

http://messor.com/aws-disaster-recovery-automation-w-powershell/

然后当然发现这些都是为AWS SDK的现在已经贬值的v1.0编写的,所以我花了最后一天修复这个问题,并让他们都使用v2.0:

https://github.com/noahlh/aws-automated-backup-powershell

请享用!

AutomatiCloud正是你所需要的。 这是一个易于使用的Windows工具,您可以安排备份您的EBS卷或RDS实例: http://www.automaticoud.net

您可以

  • 根据实例ID或标签创build快照和AMI
  • 使用macros创builddynamic标签
  • 定义3个保留期限级别(GFS备份)
  • 发送电子邮件通知
  • 为Windows实例添加VSS代理
  • 在备份之前/之后运行脚本
  • 以及更多…

您现在可以使用AWS Lambda自动创buildAMI 。 整个安装过程应该在10分钟左右完成,并附上您喜欢的时间表。 看看他们的Github回购也贡献。 自己运行脚本,避免给第三方权限。

截至2017年,还有另一种创build定期快照的方法 – 使用Cloudwatch Events 。

这可以让您安排快照,但是它不能解决正在使用的卷的问题,所以这只是一个部分的解决scheme。 使用CloudWatch事件可能会有一种方法触发停顿音量的操作。

  1. 通过以下url打开CloudWatch控制台: https: //console.aws.amazon.com/cloudwatch/。

  2. 在导航窗格中,select“事件”。

  3. select创build规则。

  4. 对于事件源,请执行以下操作:

    – >select时间表。

    – >select固定费率并指定计划间隔(例如5分钟)。 或者,selectCronexpression式并指定Cronexpression式(例如,从当前时间开始,每隔15分钟周一到周五)。

  5. 对于目标,请select添加目标,然后selectEC2创build快照API调用。

  6. 对于卷ID,select一个EBS卷。

  7. selectconfiguration详情。

  8. 对于规则定义,input规则的名称和描述。

  9. 对于AWS权限,请select创build新angular色的选项。 这将在新选项卡中打开IAM控制台。 新angular色授予内置目标权限,以您的名义访问资源。 select允许。 带有IAM窗口的选项卡closures。

  10. select创build规则。

您可以编写一个与EC2 API对话的脚本来安排这些快照。 它可以在你现有的一个实例上运行,或者你可以在t1.micro上为此设置一个小型的linux实例,其唯一的function是启动Windows主机的快照。 脚本可以放在Linux主机上作为cron作业,在您select的时候每天运行。

第一个链接是从Windows主机进行脚本编写的示例,可以使用Windows中的计划任务轻松实现自动化。

我还没有使用你的第二个链接链接的应用程序。

Windows实例的当前EBS快照function在这里解释: http : //docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

为了获得一致的快照,您必须暂停写入该卷足够长的时间才能完成快照。 通常,这意味着您必须卸载卷。 AWS文档没有讨论如何通过Windows上的命令行来实现这一点,但是您可以在这个超级用户线程中find相关信息: https : //superuser.com/questions/704870/mount-and-dismount-hard-drive-through -a脚本软件

要获得系统启动卷的快照,您需要停止您的实例。

希望有所帮助。

我意识到这是一个老问题,但我会分享我们的解决scheme。

我们使用一个名为Ylastic的服务。 他们的Pro计划($ 50 /月)包括EBS快照的调度,不限制服务器或磁盘的数量。 如果需要,它也会删除较旧的备份。 您可以使用自己的保留策略创build多个日程表(例如,每日,每周等)。

该界面还允许您从备份创build新的实例。

多年来我们的工作可靠,约有二十个实例和四十个EBS卷。 有可能更便宜的方法,但价格足够低,我们没有打扰,build立和维护自己的东西。

有关此function的详细信息,请参阅http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management

按照下面的链接,

http://jayaraj.sosblogs.com/The-first-blog-b1/AWS-Automated-EBS-Snapshot-Script-b1-p3.htm

希望这可以帮助。 🙂

注意:这个脚本只适用于linux