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 函数的负载。如果您熟悉这些技术中的任何一种,那么其中一种技术对于为下游流程提供支持以执行必要的后续操作可能非常有用。