【问题标题】:Can I programmatically move S3 objects to the Glacier storage class?我可以以编程方式将 S3 对象移动到 Glacier 存储类吗?
【发布时间】:2017-02-08 20:34:14
【问题描述】:

我在 S3 存储桶中有 1000 多个大文件(5 - 500Mb,大多数是 ~100Mb),根本没有组织 - 没有“目录”。这些文件都有不同的过期时间(有些在 60 天后过期,有些在 90 天后过期,等等),之后我想将它们移到 Glacier 存储类。

我查看了生命周期功能,但找不到如何将特定规则应用于一个文件。它们似乎只能通过使用前缀来工作,我宁愿不改变我的命名约定。

我尝试过 - 使用 PHP SDK - 执行一个将“StorageClass”参数设置为“GLACIER”的 copyObject,但可以预见的是,这会引发异常。我猜文档是最新的,确实没有这样的价值:-)

我真的希望我遗漏了一些东西,因为我不想下载这些文件,然后“手动”将它们上传到 Glacier。我也会错过 S3 控制台的轻松恢复功能。

【问题讨论】:

    标签: php amazon-web-services amazon-s3 amazon-glacier


    【解决方案1】:

    您可以使用 Lifecycle Rules 以编程方式将 S3 上的特定对象存档到 Glacier(带有您要存档的确切对象的前缀)。

    有一个PUT lifecycle API。此 API 替换了整个生命周期配置,因此如果您有此流程之外的规则,则需要将它们添加到您上传的每个生命周期中。如果要归档特定文件,您可以:

    • 为每个文件创建一个包含一条规则的生命周期,等待文件传输完毕,然后对下一个文件执行相同操作
    • 创建每个文件一个规则的生命周期配置

    第二个会更快完成(因为您不需要在文件之间等待),但要求您提前知道要归档的所有文件。

    每个生命周期配置限制为 1,000 条规则,因此,如果您有大量文件要归档,则需要将它们拆分为单独的生命周期配置。

    【讨论】:

    • 谢谢。我阅读文档的方式是每个存储桶只能有一个生命周期配置,并且最多可以有 1000 条规则。因为我有数百万个文件,所以这行不通。
    • @erikdebruin 没错。对于数百万个文件,可能是一般情况下,我认为您选择的将所有文件复制到新存储桶并归档该存储桶中的所有内容的解决方案会更好(至少,它会更快)。
    【解决方案2】:

    没有命令告诉 Amazon S3 将特定对象存档到 Amazon Glacier。相反,Lifecycle Rules 用于识别对象。

    Lifecycle Configuration Elements 文档显示每个规则包括:

    • 规则元数据,包括规则 ID,以及指示规则是启用还是禁用的状态。如果禁用某个规则,Amazon S3 将不会执行该规则中指定的任何操作。
    • 前缀通过应用规则的键前缀标识对象。
    • 当您希望 Amazon S3 执行指定操作时,在对象的生命周期中执行一个或多个具有日期或时间段的过渡/到期操作。

    识别哪些对象被转换的唯一方法是通过prefix参数。因此,您需要为每个对象指定单独的规则。 (前缀可以包含完整的对象名称。)

    但是,每个生命周期配置有 1000 条规则的限制。

    是的,您可以一次将一个对象移动到 Amazon Glacier,但这实际上涉及将档案上传到 Glacier,而不是从 S3 中“移动”它们。另外,请注意 - Glacier 的“每次请求”费用高于 S3,这实际上可能比您节省的存储成本更多。

    同时,考虑使用Amazon S3 Standard - Infrequent Access storage class,它可以为不经常访问的数据节省大约 50% 的 S3 存储成本。

    【讨论】:

    • 谢谢!我花了一些时间得出相同的结论,所以我相信您的回答对未来的搜索者很有用。我最终使用的解决方案是:当“过期”时,将文件复制到具有生命周期的新存储桶中,在 0 天后将其放入 Glacier 存储类。
    • 感谢你们两位的好答案。我最终做了类似的事情,在我现有的存储桶中创建了一个名为“存档”的文件夹,其中包含一个生命周期策略,可以在 0 天后存档到冰川。使用 aws sdk 的 move_to 函数,我可以在需要归档现有文件时将它们移动到该文件夹​​中。给我一个快速而肮脏的“存档”策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多