下载归档存储对象
更新时间: 2019-03-14 10:05
如果要下载归档存储对象,需要先将归档存储对象取回。取回归档存储对象的取回选项可支持两类,见下表:
选项 | 说明 | OBS Go SDK枚举常量 |
---|---|---|
快速取回 | 取回耗时1~5分钟。 | RestoreTierExpedited |
标准取回 | 取回耗时3~5小时。默认值。 | RestoreTierStandard |
您可以通过ObsClient.RestoreObject取回归档存储对象。以下代码展示了如何下载归档存储对象:
- // 引入依赖包
- import (
- "fmt"
- "obs"
- "time"
- )
- var ak = "*** Provide your Access Key ***"
- var sk = "*** Provide your Secret Key ***"
- var endpoint = "https://your-endpoint"
- // 创建ObsClient结构体
- var obsClient, _ = obs.New(ak, sk, endpoint)
- func main() {
- restoreObjectInput := &obs.RestoreObjectInput{}
- restoreObjectInput.Bucket = "bucketname"
- restoreObjectInput.Key = "objectkey"
- restoreObjectInput.Days = 1
- restoreObjectInput.Tier = obs.RestoreTierExpedited
- _, err := obsClient.RestoreObject(restoreObjectInput)
- if err != nil {
- panic(err)
- }
- // 等待对象取回
- time.Sleep(time.Duration(60*6) * time.Second)
- input := &obs.GetObjectInput{}
- input.Bucket = "bucketname"
- input.Key = "objectkey"
- // 下载对象
- output, err := obsClient.GetObject(input)
- if err == nil {
- defer output.Body.Close()
- fmt.Printf("ETag:%s\n", output.ETag)
- } else if obsError, ok := err.(obs.ObsError); ok {
- fmt.Printf("Code:%s\n", obsError.Code)
- fmt.Printf("Message:%s\n", obsError.Message)
- }
- }
说明:
- ObsClient.RestoreObject中指定的对象必须是归档存储类型,否则调用该接口会报错。
- 使用RestoreObjectInput.Days指定取回对象保存的时间,取值范围是1~30;使用RestoreObjectInput.Tier指定取回选项,表示取回对象所耗的时间。
父主题:下载对象