下载归档存储对象

更新时间: 2019-03-14 10:05

如果要下载归档存储对象,需要先将归档存储对象取回。取回归档存储对象的取回选项可支持两类,见下表:


选项

说明

OBS Go SDK枚举常量

快速取回

取回耗时1~5分钟。

RestoreTierExpedited

标准取回

取回耗时3~5小时。默认值。

RestoreTierStandard

您可以通过ObsClient.RestoreObject取回归档存储对象。以下代码展示了如何下载归档存储对象:

  1. // 引入依赖包
  2. import (
  3. "fmt"
  4. "obs"
  5. "time"
  6. )
  7.  
  8. var ak = "*** Provide your Access Key ***"
  9. var sk = "*** Provide your Secret Key ***"
  10. var endpoint = "https://your-endpoint"
  11.  
  12. // 创建ObsClient结构体
  13. var obsClient, _ = obs.New(ak, sk, endpoint)
  14.  
  15. func main() {
  16. restoreObjectInput := &obs.RestoreObjectInput{}
  17. restoreObjectInput.Bucket = "bucketname"
  18. restoreObjectInput.Key = "objectkey"
  19. restoreObjectInput.Days = 1
  20. restoreObjectInput.Tier = obs.RestoreTierExpedited
  21. _, err := obsClient.RestoreObject(restoreObjectInput)
  22. if err != nil {
  23. panic(err)
  24. }
  25.  
  26. // 等待对象取回
  27. time.Sleep(time.Duration(60*6) * time.Second)
  28.  
  29. input := &obs.GetObjectInput{}
  30. input.Bucket = "bucketname"
  31. input.Key = "objectkey"
  32. // 下载对象
  33. output, err := obsClient.GetObject(input)
  34. if err == nil {
  35. defer output.Body.Close()
  36. fmt.Printf("ETag:%s\n", output.ETag)
  37. } else if obsError, ok := err.(obs.ObsError); ok {
  38. fmt.Printf("Code:%s\n", obsError.Code)
  39. fmt.Printf("Message:%s\n", obsError.Message)
  40. }
  41. }

下载归档存储对象 - 图1 说明:

  • ObsClient.RestoreObject中指定的对象必须是归档存储类型,否则调用该接口会报错。
  • 使用RestoreObjectInput.Days指定取回对象保存的时间,取值范围是1~30;使用RestoreObjectInput.Tier指定取回选项,表示取回对象所耗的时间。

父主题:下载对象