开发者社区 问答 正文

关于Object操作之如何实现 RestoreObject?


Restore Object


针对Archive类型的Object读取,需要使用Restore操作让服务端执行解冻任务。如果一个Object是Standard或者IA类型,不要调用该接口。归档Object在执行Restore前后的状态变换过程如下:    a. 一个Archive类型的Object初始时处于冷冻状态;    b. 提交一次Restore操作后,Object将处于解冻中,服务端执行解冻;    c. 待服务端执行完成解冻任务后,Object就能够进入解冻状态,此时用户可以读取Object;    d. 解冻状态默认持续1天,用户可以延长到最多7天,之后,Object又回到初始时的冷冻状态。
对一个处于冷冻状态的归档Object执行Restore操作,会产生数据取回费用;如果一个归档Object处于解冻中或者解冻完成状态时,再次提交Restore,则不会收取数据取回费用。

请求语法POST /ObjectName?restore HTTP/1.1
Host: archive-bucket.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue





细节分析

  1. 如果是针对该Object第一次调用restore接口,则返回202。
  2. 如果已经成功调用过restore接口,且服务端仍处于解冻中,再次调用时返回409, 错误码为:RestoreAlreadyInProgress; 服务端返回该错误,代表服务端正在执行restore操作,用户只需要等待作业完成,最长等待时间4小时。
  3. 如果已经成功调用过restore接口,且服务端解冻已经完成,再次调用时返回200,且会将object的可下载时间延长一天,最多延长7天。
  4. 如果object不存在,则返回404。
  5. 如果针对非Archive类型的Object提交restore,则返回400错,错误码为:OperationNotSupported。


示例


[backcolor=transparent]首次提交restore的请求示例 POST /oss.jpg?restore HTTP/1.1
Host: oss-archive-example.oss-cn-hangzhou.aliyuncs.com
Date: Sat, 15 Apr 2017 07:45:28 GMT
Authorization: OSS e1Unnbm1rgdnpI:y4eyu+4yje5ioRCr5PB=


[backcolor=transparent]返回示例 HTTP/1.1 202 Accepted
Date: Sat, 15 Apr 2017 07:45:28 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS
x-oss-request-id: 5374A2880232A65C23002D74


[backcolor=transparent]再次调用,且restore没有完成时: POST /oss.jpg?restore HTTP/1.1
Host: oss-archive-example.oss-cn-hangzhou.aliyuncs.com
Date: Sat, 15 Apr 2017 07:45:29 GMT
Authorization: OSS e1Unnbm1rgdnpI:21qtGJ+ykDVmdy4eyu+NIUs=


[backcolor=transparent]返回示例 HTTP/1.1 409 Conflict
Date: Sat, 15 Apr 2017 07:45:29 GMT
Content-Length: 556
Connection: keep-alive
Server: AliyunOSS
x-oss-request-id: 5374A2880232A65C23002D74
<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>RestoreAlreadyInProgress</Code>
  <Message>The restore operation is in progress.</Message>
  <RequestId>58EAF141461FB42C2B000008</RequestId>
  <HostId>10.101.200.203</HostId>
</Error>


[backcolor=transparent]再次调用,且restore已经完成时: POST /oss.jpg?restore HTTP/1.1
Host: oss-archive-example.oss-cn-hangzhou.aliyuncs.com
Date: Sat, 15 Apr 2017 07:45:29 GMT
Authorization: OSS e1Unnbm1rgdnpI:u6O6FMJnn+WuBwbByZxm1+y4eyu+NIUs=


[backcolor=transparent]返回示例 HTTP/1.1 200 Ok
Date: Sat, 15 Apr 2017 07:45:30 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSS
x-oss-request-id: 5374A2880232A65C23002D74

展开
收起
青衫无名 2017-10-20 11:41:53 3217 分享 版权
阿里云 AI 助理回答

您已经详细描述了阿里云对象存储服务(OSS)中针对Archive类型对象的Restore操作过程、请求语法、不同情况下的响应示例以及费用说明。为了帮助用户更好地理解和使用这一功能,我将总结关键点并提供一些额外的建议:

Restore操作概览

  • 适用对象类型:仅适用于Archive类型的Object。Standard和IA类型的Object无需此操作。
  • 状态转换
    1. 初始冷冻状态:Archive对象默认处于不可读取的冷冻状态。
    2. 解冻中:提交Restore请求后,Object进入解冻过程,由服务端执行解冻操作。
    3. 解冻完成:解冻成功后,Object可被读取,此状态默认持续1天,最长可延长至7天。
    4. 自动回冻:解冻期结束后,Object自动回到冷冻状态。

请求语法与响应

  • 请求方法:POST
  • URL格式/ObjectName?restore
  • Header:需包含Host, Date, Authorization等信息。
  • 响应
    • 首次调用且成功时,返回202 Accepted,表示请求已接受,解冻作业开始。
    • 如果解冻正在进行中再次调用,返回409 Conflict,错误码RestoreAlreadyInProgress
    • 解冻完成后再次调用,返回200 Ok,此时Object的可下载时间会延长一天(不超过7天限制)。
    • 对象不存在或非Archive类型Object调用时,分别返回404 Not Found400 Bad Request

费用注意

  • 首次Restore:对冷冻状态的Archive Object执行Restore会产生数据取回费用。
  • 重复调用:在Object已处于解冻中或已完成解冻状态下再次调用Restore接口不产生额外费用。

实践建议

  • 监控进度:通过OSS管理控制台或API查询Restore任务的状态,以便了解何时可以访问数据。
  • 成本控制:合理安排Restore的时间和频率,避免不必要的费用支出,特别是考虑到解冻后的自动回冻机制。
  • 编程实践:在编写自动化脚本或应用程序时,要处理好各种HTTP响应代码,确保逻辑正确处理不同的Restore状态。

如果您在实际操作中遇到具体问题,如配置、计费详情或API调用失败等,可以通过阿里云官方文档、开发者论坛或直接联系客服获取进一步的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答