我在S3存储桶中有1000个大型(5 - 500Mb,大多数是~100Mb)文件,根本没有组织 - 没有“目录”。这些文件都有不同的到期时间(一些在60天后过期,其他在90后过期等),之后我想将它们移到Glacier存储类。
我查看了生命周期功能,但我找不到如何将特定规则应用于一个文件。他们似乎只使用前缀工作,我宁愿不改变我的命名约定。
我已经尝试过 - 使用PHP SDK - 将'StorageClass'参数设置为“GLACIER”来执行copyObject,但这可以预见到一个异常。我想文档是最新的,并且确实没有这样的价值: - )
我真的希望我遗失了一些东西,因为我不想下载这些文件,然后“手动”将它们上传到Glacier。我也错过了S3控制台的简易恢复功能。
答案 0 :(得分:2)
没有命令告诉Amazon S3将特定对象存档到Amazon Glacier。相反,Lifecycle Rules用于标识对象。
Lifecycle Configuration Elements文档显示了包含以下内容的每条规则:
识别转换了哪些对象的唯一方法是通过前缀参数。因此,您需要为每个对象指定单独的规则。 (前缀可以包含完整的对象名称。)
但是,每个生命周期配置都有限制1000条规则。
是的,您可以将对象一次一个地移动到Amazon Glacier,但这实际上涉及将档案上传到Glacier而不是从S3“移动”它们。另外,请注意 - Glacier的每次请求收费比
与此同时,请考虑使用Amazon S3 Standard - Infrequent Access storage class,可以为不常访问的数据节省大约50%的S3存储费用。
答案 1 :(得分:0)
您可以使用Lifecycle Rules(使用您希望存档的确切对象的前缀)以编程方式将S3上的特定对象存档到Glacier。
有一个PUT lifecycle API。此API取代了整个生命周期配置,因此如果您在此过程之外有规则,则需要将它们添加到您上传的每个生命周期中。如果要存档特定文件,可以:
第二个将更快完成(因为您不需要在文件之间等待),但要求您事先知道要归档的所有文件。
每个生命周期配置限制为1,000个规则,因此如果您要存档大量文件,则需要将它们拆分为单独的生命周期配置。