我可以同时使用S3生命周期策略和版本控制吗?

时间:2014-04-05 07:48:18

标签: version-control amazon-web-services amazon-s3 amazon-glacier

我希望我的S3存储桶受版本控制,以防止意外修改。此外,我希望我的S3中的对象在30天后归档到Glacier。

当我去启用版本控制时,它说

  

启用后,无法禁用版本控制,您将无法为此存储桶添加生命周期规则。

但是,我可以为存储桶添加生命周期规则,然后启用版本控制。

此外,在这种情况下如何恢复工作。比方说,例如,在第1天,我在我的存储桶文件A,B,C中。在第20天,我有文件A,B1,C1,D。在第30天,对象被移动到S3。现在当我在第40天进行恢复时,我仍然会在文件夹中包含文件B的所有版本吗?

2 个答案:

答案 0 :(得分:3)

Amazon S3现在支持版本控制的生命周期规则

http://aws.amazon.com/about-aws/whats-new/2014/05/20/amazon-s3-now-supports-lifecycle-rules-for-versioning/

  

Amazon S3现在支持版本控制的生命周期规则。这意味着您现在可以使用S3存储桶的生命周期规则,无论它们是否已启用版本控制。

答案 1 :(得分:0)

不允许同时使用版本化存储桶和生命周期策略

AWS文档声明,版本化存储桶和生命周期的组合是不可能的。

尝试在具有生命周期规则的存储桶上启用版本控制(使用管理控制台)将指示您首先删除规则。

未提供将生命周期规则添加到版本化存储桶中。

如何在版本化存储桶上存档内容

出于同样的情况,我使用以下解决方案:

1)首先将所有版本移入“扁桶” 2)从扁桶存档到冰川。

扁平存储桶是一种允许在非版本存储桶上存储版本的概念。 OpenStack项目swift以某种方式完成它,即版本化存储桶中的每个键在<hexprefix><original_key_name>/<epochtimeinmilis>

形状的平面上获得特殊名称

<hexprefix>是三个字符的长十六进制数字(零填充),告诉您原始密钥名称的长度。这允许您在版本化存储桶上使用任意键名,即使名称类似于扁平存储桶上使用的格式。前缀始终在这里告诉您,读取密钥名称到原始名称的距离。

在我的解决方案中,我使用了一个不同的模式来表示上次修改时间。

建议 - 当移动到扁平桶时,将文件打包成更大的块

由于Amazon Glacier需要支付一些开销,因此建议将存档内容打包到更大的文件中。我用简单的焦油。文件大小的收支平衡点大约为16 kB,较小的文件以较高的成本存储在Amazon Glacier中,而不是在AWS S3中(该点在上次价格下降之前计算,现在预计会更高)。