监视从Glacier到标准存储的批量转换吗?

时间:2019-03-25 15:34:26

标签: amazon-web-services amazon-s3 amazon-glacier

我已经使用AWS CLI aws s3api restore-object命令开始了从S3 Glacier到Standard的批量存储还原操作,目的是以后下载文件并将其复制到其他备份位置。

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

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

1 个答案:

答案 0 :(得分:0)

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

在输出中找到Restore。该值来自x-amz-restore,如S3 API参考的HEAD Object API Action部分所述。

对于准备下载的对象,ongoing-request(是否仍在执行Glacier操作)设置为false

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

...否则,对于尚未准备好的对象,将其设置为true还原正在运行),没有提供有效期:

ongoing-request="true"

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


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

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

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

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