首页 > 解决方案 > 监控从 Glacier 到标准存储的批量转换?

问题描述

我使用 AWS CLIaws s3api restore-object命令启动了从 S3 Glacier 到标准存储的批量恢复操作,目的是稍后将文件下载并复制到不同的备份位置。

我已将恢复请求天数设置为“1 天”,以避免收取超出所需费用的费用(AWS 将在恢复后 1 天删除恢复的副本)。

但是,我很难理解我请求恢复的数千个文件中的哪一个 - 现在可以下载/复制了。界面中是否有一个 AWS API 或一个区域,我可以在其中批量监控当前的 Glacier 恢复情况?

标签: amazon-web-servicesamazon-s3amazon-glacier

解决方案


aws s3api head-object允许您轮询对象以检查其恢复状态。

Restore在输出中查找。此值来自x-amz-restore,如 S3 API 参考的HEAD 对象 API 操作部分所述。

对于已准备好下载的对象,ongoing-request(Glacier 操作是否仍处于挂起状态)设置为false

ongoing-request="false", expiry-date="Fri, 23 Dec 2012 00:00:00 GMT"

...否则,对于尚未准备好的对象,它设置为true恢复正在进行),没有提供到期日期:

ongoing-request="true"

请注意,head-objectSDK 中也提供了 的变体。在 Node.JS 中它是s3.headObject()……在 boto3 中,它是client.head_object()……等等。


除了轮询之外,还有一种使用S3 Event Notifications的主动“推送”方法。

配置s3:ObjectRestore:Completed通知将在每次恢复对象准备好时生成消息。您还可以选择使用s3:ObjectRestore:Post来捕获恢复对象的原始请求(在这种情况下,您已经发出的请求)。

如果您s3:ObjectRestore:Completed现在启用这些通知,您应该会收到每个对象的通知事件,因为它已准备好,只要您第一次设置通知时该对象尚未准备好。为此,您需要使用上面的轮询方法。

S3 事件通知生成的消息可以发布到 SNS 主题、发送到 SQS 队列或用作调用 Lambda 函数的负载。如果您熟悉这些技术中的任何一种,那么很明显其中一种技术对于为下游流程提供支持以执行必要的后续操作可能很有用。


推荐阅读