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

jdk*_*aly 2 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 中,因为它已存档。关键在哪里?我怎样才能看到哪些键确实存在?

在此处输入图片说明

我非常想启动这个反馈循环。使用生命周期规则,我能看到的唯一操作是将规则应用于文件夹,如果过期,文件在一天后消失,我无法浏览冰川,因为没有 GUI。不确定我是否应该“过期”对象。我认为“过期”意味着从 S3 中删除它并使其仅在 Glacier 中可用。在 Glacier 中之后,它会在 S3 界面中显示“storage class = Glacier”吗?

您无法手动将 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)

那么我到底应该如何测试这个呢?

我将尝试通过删除“expiration”属性来测试这个,明天这个时候只是交叉手指,存储类在 S3 中更改为“Glacier”,我可以继续测试。如果有人有任何指示可以缩短此反馈外观,我将不胜感激!

Mic*_*bot 5

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

不。

当 S3 将您的对象从 S3 存储类(STANDARDSTANDARD_IAREDUCED_REDUNDANCY)之一移动到GLACIER存储类中时,您此时拥有的是 S3 为您存储在 Glacier 中的 S3 对象,位于 S3 拥有和控制的 Glacier 帐户中,您看不到,S3 将为此向您收取 Glacier 存储费。

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

当您需要访问这些对象之一时,您将启动还原,这会将对象留在 Glacier 中,并在 S3 中制作一个临时副本,该副本将保留在 RRS 中并可下载,直到它在您请求还原时指定的天数后到期. 然后它从 RRS 中移除,此时(仍然)在冰川中。

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

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