我已经使用AWS CLI aws s3api restore-object
命令开始了从S3 Glacier到Standard的批量存储还原操作,目的是以后下载文件并将其复制到其他备份位置。
我将还原请求天数设置为“ 1天”,以避免超出所需的费用(AWS会在还原后1天删除已还原的副本)。
但是,我很难理解我请求还原的数千个文件中的哪个文件-现在可以下载/复制了。界面中是否有一个AWS API或一个区域可以批量监视当前的Glacier还原?
答案 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函数的有效负载。如果您熟悉这些技术中的任何一种,那么显而易见的是,其中一种对提供下游流程以执行必要的后续操作很有用。