【问题标题】:Can I use S3 lifecycle policy and versioning at the same time?我可以同时使用 S3 生命周期策略和版本控制吗?
【发布时间】:2014-04-05 07:48:17
【问题描述】:

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

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

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

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

另外,在这种情况下如何恢复工作。例如,在第 1 天,我的存储桶中有文件 A、B、C。在第 20 天,我有文件 A、B1、C1、D。在第 30 天,对象被移动到 S3。现在,当我在第 40 天进行恢复时,我的存储桶中是否还有文件 B 的所有版本?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      在相同的情况下,我使用以下解决方案:

      1) 首先将所有版本移动到“扁平存储桶”中 2)从扁平桶归档到Glacier。

      Flat bucket 是一个允许在非版本化存储桶上存储版本的概念。 OpenStack 项目swift 这样做的方式是,版本化存储桶中的每个键在平面上以<hexprefix><original_key_name>/<epochtimeinmilis> 的形状获得特殊名称

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

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

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

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

      【讨论】:

      猜你喜欢
      • 2023-01-02
      • 2021-06-29
      • 2022-09-29
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多