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

Object Storage Service:オブジェクトの解凍 (Go SDK V2)

最終更新日:Nov 09, 2025

アーカイブ、コールドアーカイブ、ディープコールドアーカイブのオブジェクトは、読み取る前に解凍する必要があります。オブジェクトが解凍されると、一時的なレプリカが作成されます。このレプリカは元のオブジェクトと並行して存在し、解凍期間が終了すると自動的に削除されます。このトピックでは、OSS Go SDK を使用してアーカイブ、コールドアーカイブ、ディープコールドアーカイブのオブジェクトを解凍する方法について説明します。

注意

  • RestoreObject メソッドは、アーカイブ、コールドアーカイブ、ディープコールドアーカイブのオブジェクトのみをサポートします。

  • このトピックのサンプルコードでは、中国 (杭州) リージョン ID cn-hangzhou を例として使用します。デフォルトでは、パブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS がサポートするリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。

  • このトピックでは、環境変数からアクセス資格情報を読み取る方法の例を示します。アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • オブジェクトを解凍するには、oss:RestoreObject 権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。

メソッド定義

func (c *Client) RestoreObject(ctx context.Context, request *RestoreObjectRequest, optFns ...func(*Options)) (*RestoreObjectResult, error)

リクエストパラメーター

パラメーター

タイプ

説明

ctx

context.Context

リクエストコンテキスト。リクエストの合計タイムアウトを設定するために使用できます。

request

*RestoreObjectRequest

操作のリクエストパラメーター。詳細については、「RestoreObjectRequest」をご参照ください。

optFns

...func(*Options)

(オプション) 操作レベルの構成パラメーター。詳細については、「Options」をご参照ください。

次の表に、RestoreObjectRequest の共通パラメーターを示します。

パラメーター

タイプ

説明

bucket

*string

バケット名。

key

*string

オブジェクト名。

versionId

*string

解凍するオブジェクトのバージョン番号。このパラメーターを設定しない場合、デフォルトでオブジェクトの最新バージョンが指定されます。

restoreRequest

*RestoreRequest

解凍リクエストパラメーター。

次の表に、RestoreRequest のパラメーターを示します。

パラメーター

タイプ

説明

days

int32

解凍状態の期間。詳細については、「オブジェクトの解凍」をご参照ください。

tier

*string

オブジェクトの解凍にかかる時間。詳細については、「オブジェクトの解凍」をご参照ください。

戻り値

戻り値

タイプ

説明

result

*RestoreObjectResult

操作の戻り値。`err` が nil の場合に有効です。詳細については、「RestoreObjectResult」をご参照ください。

err

error

リクエストのステータス。リクエストが失敗した場合、`err` は nil ではありません。

サンプルコード

次のコードを使用して、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブのオブジェクトを解凍します。

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", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objectName, "object", "", "The name of the object.")
}

func main() {
	// コマンドラインパラメーターを解析します。
	flag.Parse()

	// バケット名が空かどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// リージョンが空かどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// オブジェクト名が空かどうかを確認します。
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}

	// デフォルト設定をロードし、資格情報プロバイダーとリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// オブジェクトを解凍するリクエストを作成します。
	request := &oss.RestoreObjectRequest{
		Bucket: oss.Ptr(bucketName), // バケット名。
		Key:    oss.Ptr(objectName), // オブジェクト名。
		RestoreRequest: &oss.RestoreRequest{
			Days: 3, // 解凍状態の期間を 3 日に設定します。
		},
	}

	// オブジェクトを解凍するリクエストを送信します。
	result, err := client.RestoreObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to restore object %v", err)
	}

	// 解凍操作の結果を出力します。
	log.Printf("restore object result:%#v\n", result)
}

シナリオ

CleanRestoredObject メソッドを使用してオブジェクトレプリカを削除する

コールドアーカイブまたはディープコールドアーカイブのオブジェクトが解凍されると、アクセス用のレプリカが作成されます。解凍状態が期限切れになるまで、このレプリカの一時ストレージに対して課金されます。解凍状態を早期に終了し、レプリカのストレージ料金の発生を停止したい場合は、CleanRestoredObject 操作を呼び出すことができます。操作が完了すると、オブジェクトは凍結状態に戻り、直接読み取ることはできません。

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 // OSS バケットが配置されているリージョン。
	bucketName string // バケット名。
	objectName string // オブジェクト名。
)

// init 関数は、コマンドラインフラグパーサーを初期化し、各パラメーターのデフォルト値とヘルプメッセージを設定します。
func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located. Required.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket. Required.")
	flag.StringVar(&objectName, "object", "", "The name of the object. Required.")
}

func main() {
	// コマンドラインパラメーターを解析します。
	flag.Parse()

	// 必須パラメーターのリージョンが空かどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// 必須パラメーターのバケット名が空かどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// 必須パラメーターのオブジェクト名が空かどうかを確認します。
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}

	// デフォルト設定をロードし、資格情報プロバイダー (環境変数から読み取り) と指定されたリージョンを設定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// 解凍されたオブジェクトのレプリカを削除するリクエストを作成します。
	request := &oss.CleanRestoredObjectRequest{
		Bucket: oss.Ptr(bucketName), // バケット名を設定します。
		Key:    oss.Ptr(objectName), // オブジェクト名を設定します。
	}

	// 解凍されたオブジェクトのレプリカを削除するリクエストを送信します。
	result, err := client.CleanRestoredObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("failed to clean restored object %v", err)
	}

	// 結果を出力します。
	log.Printf("clean restored object result:%#v\n", result)
}

リファレンス (Go SDK V2)

  • オブジェクトを解凍するための完全なサンプルコードについては、「GitHub の例」をご参照ください。

  • オブジェクトを解凍するための API 操作の詳細については、「RestoreObject」をご参照ください。

  • 詳細については、「オブジェクトの解凍」をご参照ください。