Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我可以通过编程将S3对象移动到Glacier存储类吗?_Php_Amazon Web Services_Amazon S3_Amazon Glacier - Fatal编程技术网

Php 我可以通过编程将S3对象移动到Glacier存储类吗?

Php 我可以通过编程将S3对象移动到Glacier存储类吗?,php,amazon-web-services,amazon-s3,amazon-glacier,Php,Amazon Web Services,Amazon S3,Amazon Glacier,我在一个S3存储桶中有1000个大文件(5-500Mb,大多数是~100Mb),根本没有组织,没有“目录”。这些文件都有不同的过期时间(一些在60天后过期,另一些在90天后过期,等等),在此之后,我想将它们转移到Glacier storage类 我已经查看了生命周期功能,但找不到如何将特定规则应用于一个文件。它们似乎只在使用前缀时起作用,我宁愿不改变我的命名约定 我曾尝试使用PHPSDK,将“StorageClass”参数设置为“GLACIER”来创建copyObject,但可以预见,这会导致一

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

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

我曾尝试使用PHPSDK,将“StorageClass”参数设置为“GLACIER”来创建copyObject,但可以预见,这会导致一个例外。我猜文档是最新的,实际上没有这样的值:-)


我真的希望我遗漏了什么,因为我不想下载这些文件,然后“手动”上传到Glacier。我也会错过S3控制台的轻松还原功能。

没有命令告诉Amazon S3将特定对象归档到Amazon Glacier。相反,它们用于标识对象

文档显示了每个规则,包括:

  • 规则元数据,其中包括规则ID和指示规则是启用还是禁用的状态。如果规则被禁用,AmazonS3将不会执行规则中指定的任何操作
  • 前缀通过应用规则的键前缀识别对象
  • 当您希望Amazon S3执行指定的操作时,在对象的生命周期中有一个或多个带有日期或时间段的转换/过期操作
识别要转换哪些对象的唯一方法是通过prefix参数。因此,需要为每个对象指定单独的规则。(前缀可以包括完整的对象名称。)

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

是的,您可以一次一个地将对象移动到Amazon Glacier,但这实际上需要将档案上传到Glacier,而不是从S3“移动”它们。另外,要小心——冰川的“每次请求”费用要比S3高,这实际上可能会比存储成本的节省更高


同时,考虑使用“强”>保存不到访问数据的S3存储开销的50%左右。

< P>你可以编程使用S3到冰川中的特定对象(用你希望存档的确切对象的前缀)来存档。

有一个API。此API将替换整个生命周期配置,因此,如果在此过程之外有规则,则需要将它们添加到上载的每个生命周期中。如果要存档特定文件,可以执行以下操作之一:

  • 对于每个文件,使用一条规则创建一个生命周期,等待文件传输完毕,然后对下一个文件执行相同的操作
  • 使用每个文件一条规则创建生命周期配置
第二个将更快地完成(因为您不需要在两个文件之间等待),但需要提前知道要归档的所有文件


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

谢谢!我花了一些时间得出了同样的结论,所以我相信你的答案对未来的搜索者会很有用。我最终使用的解决方案是:当“过期”时,将文件复制到一个新的存储桶中,该存储桶的生命周期为0天后将其放入冰川存储类。感谢你们两位给出的好答案。最后,我做了一件类似的事情,在我现有的存储桶中创建了一个名为“归档”的文件夹,其中包含一个生命周期策略,可以在0天后归档到glacier。使用aws sdk的move_功能,我可以在归档现有文件时将其移动到该文件夹中。给我一个快速而肮脏的“归档”策略。谢谢。我阅读文档的方式是,每个bucket只能有一个生命周期配置,最多可以有1000条规则。既然我有数百万个文件,那就不行了。@erikdebruin这是正确的。对于数以百万计的文件,而且可能是一般的文件,我认为您选择的解决方案是将所有文件复制到一个新的存储桶中,并将该存储桶中的所有文件归档,这样做会更好(至少更快)。