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

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

我们希望将Windows机器(以及附加的EBS卷)的每日快照安排到S3,以便我们可以进行每日备份.

人们会认为这是一个非常常见的要求,并且可以通过AWS管理控制台提供,但是,它不是.有哪些方法?如何在Windows服务器上安排每日快照?

Linux上有几个可用于在线的脚本示例,但对于Windows来说并非如此.我看过http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html以及https://github.com/ronmichael/aws-snapshot-scheduler.有没有人使用过这些方法之一并且有效吗?

我也考虑过像Skeddly这样的服务,乍看起来似乎很便宜,但是当你看到它用于几台服务器时,价格很快升级到这样一个点,在这一点上你可以创建自己的解决方案,然后你可以应用它未来的新服务器.有了Skeddly,我们将为每台服务器付费.

我们如何安排Windows实例的每日快照?

Amazon Web Services最近推出了适用于Windows的 announced PowerShell命令行工具,它与 AWS Tools for .NET SDK一起打包.

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

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工具,并创建一个计划任务,该任务使用类似于上面代码段的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"
}

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...