バージョン管理が有効になっているバケットでは、オブジェクトの異なるバージョンのストレージタイプが異なる場合があります。デフォルトでは、RestoreObject 操作を呼び出してオブジェクトを復元すると、オブジェクトの現在のバージョンが復元されます。リクエストでバージョン ID を指定して、オブジェクトの特定のバージョンを復元できます。
注意事項
このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID
cn-hangzhouを使用しています。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報の構成方法の詳細については、「アクセス認証情報を構成する」をご参照ください。
oss:RestoreObject権限は、オブジェクトを復元するために必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
サンプルコード
次のコードは、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブオブジェクトを復元する方法の例を示しています。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// グローバル変数を定義します。
var (
region string // バケットが配置されているリージョン。
bucketName string // バケットの名前。
objectName string // オブジェクトの名前。
)
// コマンドラインパラメータを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "バケットが配置されているリージョン。")
flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
flag.StringVar(&objectName, "object", "", "オブジェクトの名前。")
}
func main() {
// コマンドラインパラメータを解析します。
flag.Parse()
// バケットの名前が指定されているかどうかを確認します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメータ、バケット名が必要です")
}
// リージョンが指定されているかどうかを確認します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメータ、リージョンが必要です")
}
// オブジェクトの名前が指定されているかどうかを確認します。
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメータ、オブジェクト名が必要です")
}
// デフォルトの構成を読み込み、認証情報プロバイダーとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSSClient インスタンスを作成します。
client := oss.NewClient(cfg)
// オブジェクトを復元するためのリクエストを作成します。
request := &oss.RestoreObjectRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前。
Key: oss.Ptr(objectName), // オブジェクトの名前。
VersionId: oss.Ptr("yourVersionId"), // 実際のバージョン ID を指定します。
RestoreRequest: &oss.RestoreRequest{
Days: 3, // 解凍状態の期間を 3 日に設定します。
},
}
// オブジェクトを復元するためのリクエストを送信します。
result, err := client.RestoreObject(context.TODO(), request)
if err != nil {
log.Fatalf("オブジェクトの復元に失敗しました %v", err)
}
// 結果を表示します。
log.Printf("オブジェクトの復元結果:%#v\n", result)
}
関連情報
オブジェクトの復元に使用される完全なサンプルコードについては、GitHub サンプルをご覧ください。
オブジェクトの復元に呼び出すことができる API 操作の詳細については、「RestoreObject」をご参照ください。
関連操作の詳細については、「オブジェクトの復元」をご参照ください。