Arm*_*man 21 amazon-s3 amazon-glacier
我想知道是否有一种简单的方法可以将Glacier对象永久恢复到S3.在恢复到S3时,您似乎可以恢复Glacier对象一段时间.因此,例如,我们现在有数千个文件已恢复到S3,这些文件将在90天内返回Glacier,但我们不希望它们返回Glacier.
Mic*_*bot 31
为了澄清一点上的技术性,你的文件将不会在90天内"返回"Glacier - 因为它们仍在Glacier中,但是由于你已经完成了恢复,因此存在S3中的临时副本减少了冗余存储(RRS) )S3将在90天内删除(或者在执行还原操作时指定的任何日期值.恢复文件不会删除Glacier副本.
你的问题的答案是否定的,是的.
从技术上讲,您无法将对象从Glacier存储类更改回标准或RRS类...
对象到GLACIER存储类的转换是单向的.您不能使用生命周期配置规则将对象的存储类从GLACIER转换为Standard或RRS.
......但是......
如果要将已存档对象的存储类更改为Standard或RRS,则必须先使用还原操作来创建临时副本.然后使用复制操作将对象覆盖为标准或RRS对象.
http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
您可以将该对象复制到技术上是一个新对象,但是与新对象具有相同键(路径)的对象...所以出于实际目的,是的,您可以.
PUT/COPY行动将在此处讨论:http: //docs.aws.amazon.com/AmazonS3/latest/dev/ChgStoClsOfObj.html
首先,从 Glacier 恢复(就像您所做的那样)。这使得该文件可用,以便您可以复制它。
然后,文件可用后,您可以使用 AWS CLI 复制/覆盖它:
aws s3 cp --metadata-directive "COPY" --storage-class "STANDARD" s3://my-bucket/my-image.png s3://my-bucket/my-image.png
Run Code Online (Sandbox Code Playgroud)
在上面的命令中:
from文件to路径是相同的(我们正在覆盖它)。--metadata-directive "COPY"。这告诉您cp将元数据与文件内容一起复制(此处的文档)。--storage-class "STANDARD". 这告诉我们对新文件cp使用s3 存储类别(文档位于此处)。STANDARD此过程基于此处AWS 文档中的信息。
如果您想批量执行此操作(多个文件/对象),可以使用以下命令:
此命令将列出传递的存储桶和前缀处的 Glacier 文件:
aws s3api list-objects --bucket my-bucket --prefix some/path --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text | xargs -I {} echo 'Would be copying {} to {}'
Run Code Online (Sandbox Code Playgroud)
一旦您对要升级的文件列表感到满意,请运行以下命令来升级它们。
运行之前,请确保存储桶和前缀与您在试运行中使用的内容匹配。另请确保您已对所有文件运行标准 S3/Glacier“恢复”操作(如上所述)。
这将单个文件/对象升级命令与试运行中的 list-objects 命令结合起来,使用xargs.
aws s3api list-objects --bucket my-bucket --prefix some/path --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text | xargs -I {} aws s3 cp --metadata-directive "COPY" --storage-class "STANDARD" s3://adplugg/{} s3://adplugg/{}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5846 次 |
| 最近记录: |