すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSS SDK for Go 2.0 を使用したオブジェクトの復元

最終更新日:Aug 13, 2025

バージョン管理が有効になっているバケットでは、オブジェクトの異なるバージョンのストレージタイプが異なる場合があります。デフォルトでは、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(&region, "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」をご参照ください。

  • 関連操作の詳細については、「オブジェクトの復元」をご参照ください。