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

Object Storage Service:ファイルの解凍 (Python SDK V1)

最終更新日:Nov 29, 2025

バージョン管理が有効なバケットでは、オブジェクトのバージョンごとに異なるストレージクラスを持つことができます。 RestoreObject 操作は、デフォルトでオブジェクトの現在のバージョンを解凍します。 バージョン ID を指定して、オブジェクトの特定のバージョンを解凍することもできます。

注意事項

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

  • このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。

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

サンプルコード

次のコードは、ファイルを解凍する方法の例を示しています。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン (cn-hangzhou など) を設定します。 このパラメーターは V4 署名に必要であることにご注意ください。
region = "cn-hangzhou"

# "yourBucketName" を実際のバケット名に置き換えます。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# versionId フィールドを params 辞書に追加します。
params = dict()
params['versionId'] = 'yourObjectVersionId'

# 'yourArchiveObjectName' をアーカイブオブジェクトの名前に置き換えます。 オブジェクトが存在しない場合は、put_object 操作を呼び出して作成します。
object_name = 'yourArchiveObjectName'

# 指定されたオブジェクトバージョンのメタデータを取得します。
meta = bucket.head_object(object_name, params=params)
# オブジェクトのストレージクラスがアーカイブであるかどうかを確認します。
if meta.resp.headers['x-oss-storage-class'] == oss2.BUCKET_STORAGE_CLASS_ARCHIVE:
    # 指定されたバージョンのオブジェクトを解凍します。
    result = bucket.restore_object(object_name, params=params)
    # 解凍されたオブジェクトのバージョン ID を表示します。
    print('restore object version id:', result.versionid)

  while True:
         meta = bucket.head_object(object_name, params=params)
         print('x-oss-restore:', meta.resp.headers['x-oss-restore'])
         # 解凍状態を確認します。
         if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
             time.sleep(5)
         else:
             break

参考資料

ファイルの解凍に使用される API 操作の詳細については、「RestoreObject」をご参照ください。