Glacier和S3使用生命周期规则,指定的密钥不存在

时间:2017-12-11 21:27:53

标签: amazon-s3 amazon-glacier

我对AWS Glacier的生命周期规则感到非常困惑。我的印象是我可以将文件上传到S3,让它进入冰川,然后将其从S3中删除并稍后从冰川中检索。

我正在为AWS SDK使用clojure包装器并使用方法" restore-object" (aws/restore-object credentials bucket-name _key restore-method)

方法调用似乎是正确的,因为当我在尚未归档到S3的文件上调用它时,我得到一个错误,即密钥不是存储类冰川。但是当我在已经存档和删除的文件上调用它时,消息是

The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: D101BCAC349AF0DA)

因此,S3中的密钥不应该存在,因为它已归档。关键在哪里?如何查看确实存在哪些密钥?

enter image description here

我非常想跳过这个反馈循环。使用生命周期规则,我可以看到的唯一操作是将规则应用于文件夹,如果过期,文件在一天后消失,我无法浏览冰川,因为那里没有GUI 。不确定我是否应该"到期"对象。我假设"到期"表示从S3中删除它并使其仅在Glacier中可用。在冰川之后,它会显示"存储类=冰川"在S3界面内?

您无法手动将S3对象的存储类更改为Glacier。我可以更改为减少冗余,调用restore-object仍然会导致

Restore is not allowed, as object's storage class is not GLACIER (Service: Amazon S3; Status Code: 403; Error Code: InvalidObjectState; Request ID: 85A4913F2CE81872)

那么我应该怎么测试这个呢?

我将通过删除"到期"来尝试对此进行测试。财产,只是交叉我的手指明天这个时候,存储类改变为" Glacier"在S3中,我可以继续测试。如果有人有任何指示缩短此反馈,我将非常感激!

1 个答案:

答案 0 :(得分:3)

  

我的印象是我可以将文件上传到S3,让它转到冰川,然后从S3中删除它并稍后从冰川中检索它。

没有。

当S3将您的对象从一个S3存储类(STANDARDSTANDARD_IAREDUCED_REDUNDANCY)移动到GLACIER存储类中时,您拥有的内容point是S3在Glacier中存储的S3对象,在S3拥有并控制的Glacier帐户中,这对您来说是不可见的,S3会向您收取Glacier存储费用。

它仍然是一个S3对象,但具有GLACIER存储类。

当您需要访问其中一个对象时,您启动一​​个还原,该对象将该对象保留在Glacier中,并在S3中生成一个临时副本,该副本在RRS中保留并可下载,直到它在您指定的天数后过期请求恢复。然后它从RRS中删除,此时(仍然)在Glacier。

如果从S3中删除对象,则会从Glacier中删除该对象。

如果您有一个使对象失效的生命周期策略,它们将从S3存储它们的任何地方清除,包括Glacier。如果从S3控制台中删除它们,它们将从存储的任何位置删除,包括Glacier。