アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスに格納されたオブジェクトは、読み取り前に解凍する必要があります。オブジェクトを解凍すると、元のアーカイブ済みオブジェクトと並行して存在する一時的なレプリカが作成されます。解凍期間が終了すると、このレプリカは自動的に削除されます。本トピックでは、Object Storage Service (OSS) Go SDK を使用して、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスからオブジェクトを解凍する方法について説明します。
注意事項
RestoreObject メソッドは、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブのストレージクラスに格納されたオブジェクトに対してのみ呼び出すことができます。
本トピックのコード例では、リージョン ID
cn-hangzhouの中国 (杭州) リージョンを使用しています。デフォルトではパブリックエンドポイントが使用されます。同一リージョン内の他の Alibaba Cloud サービスから 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 | 解凍対象のオブジェクトのバージョン ID。このパラメーターを指定しない場合、OSS は最新バージョンのオブジェクトを解凍します。 |
restoreRequest | *RestoreRequest | 解凍リクエストパラメーター。 |
以下の表に、RestoreRequest のパラメーターを示します。
パラメーター | 型 | 説明 |
days | int32 | オブジェクトが解凍状態で保持される日数。詳細については、「オブジェクトの解凍」をご参照ください。 |
jobParameters | *JobParameters | 解凍優先度を指定するパラメーター。Tier フィールドは、オブジェクトの解凍に必要な時間を指定します。詳細については、「オブジェクトの解凍」をご参照ください。 |
レスポンスパラメーター
パラメーター | 型 | 説明 |
result | *RestoreObjectResult | API の戻り値。この値は |
err | error | リクエストが失敗した場合、非 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 // OSS リージョン。
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)
// 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("オブジェクトの解凍に失敗しました:%v", err)
}
// 結果を出力します。
log.Printf("オブジェクトの解凍結果:%#v\n", result)
}
ユースケース
参照
オブジェクトを復元するための完全なサンプルコードについては、「GitHub」をご参照ください。
オブジェクトを復元するためのAPI オペレーションの詳細については、「RestoreObject」をご参照ください。
オブジェクトの復元方法の詳細については、「オブジェクトの復元」をご参照ください。