将快照保存到不同的区域

时间:2015-12-14 18:21:17

标签: amazon-web-services aws-sdk

这是我的连接代码。 “RegionEndpoint”似乎对快照的存储位置没有任何影响。如果我没有设置它,它说,“没有配置区域端点或服务URL”。

它是什么,我如何定位一个地区?我是否需要先创建快照然后将其复制到正确的区域?

private static IAmazonEC2 GetEc2Client()
{
    var settings = ConfigurationManager.AppSettings;

    AWSCredentials awsCredentials = new BasicAWSCredentials(settings["AWSAccessKey"], settings["AWSSecretKey"]);

    var region = (RegionEndpoint) Enum.Parse(typeof(RegionEndpoint), settings["TargetRegion"], true);

    return AWSClientFactory.CreateAmazonEC2Client(awsCredentials, region);
}

2 个答案:

答案 0 :(得分:1)

快照存储在与用于创建快照的实例相同的区域中。因此,如果您有一个位于eu-west-1区域的实例,那么当您创建快照时,它也将存在于eu-west-1区域。

您需要指定一个区域,以告知AWS您希望您的实例位于哪个区域。某些SDK默认使用us-east-1区域,因为那是亚马逊推出AWS的第一个区域。 SDK&工具明确要求您指定区域,不要使用默认值。

如果您不熟悉地区以及他们服务的目的,我强烈建议您阅读AWS documentation on regions以获得对它们的基本了解。

答案 1 :(得分:0)

是的,如果希望快照在源卷所在的区域中可用,则必须先创建快照,然后将其复制到所需的区域。

快照最初总是在与正在创建的卷相同的区域中创建,并且可能这与快照的工作方式有关 - 在本地区域创建快照仅复制尚未被捕获的块没有删除相同卷的快照。在较低级别,本地快照实际上是指向包含该快照的数据块的指针列表,EBS代表您存储在S3中(并且您无法在S3控制台中看到它们)。从快照创建卷时,新卷的数据会从S3延迟加载到磁盘上。如果您在同一卷中创建了大量连续快照,但实际上在卷上实际上没有或几乎没有变化,则不会在本地区域收取重复存储费用。仅当没有剩余的快照引用它们时,才会从快照存储中清除块。

将快照复制到另一个区域后,在将快照副本标记为完成之前,所有数据显然都是由远程区域中的EBS复制到S3中,然后从现在重复的数据块加载来自该副本的卷在该地区的S3支持商店。当然,具体细节不公开。