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

Object Storage Service:オブジェクトのストレージクラスの変換

最終更新日:Feb 26, 2024

Object Storage Service (OSS) は、ホットデータからコールドデータまでのさまざまなデータストレージシナリオをカバーするために、標準、低頻度アクセス (IA) 、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスを提供します。 このトピックでは、オブジェクトのストレージクラスを変換する方法について説明します。

使用上の注意

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

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

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

  • オブジェクトのストレージクラスを変換するには、oss:GetObjectoss:PutObject、およびoss:RestoreObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

重要

IA、Archive、Cold Archive、またはDeep Cold Archiveオブジェクトのストレージクラスを変換した場合、または最小保存期間が経過する前にオブジェクトを削除した場合、最小保存期間未満で保存されたオブジェクトのストレージ使用量に対して課金されます。 詳細については、「ストレージ期間が最小ストレージ期間未満のオブジェクトに対して課金される方法」をご参照ください。

オブジェクトのストレージクラスを標準またはIAからアーカイブ、コールドアーカイブ、またはディープコールドアーカイブに変換する

次のサンプルコードは、オブジェクトのストレージクラスをStandardまたはIAからArchive、Cold Archive、またはDeep Cold Archiveに変換する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
osのインポート
# 環境変数からアクセス資格情報を取得します。 コードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
# オブジェクトのストレージクラスがStandardまたはIAであることを確認します。 
object_name = 'exampledir/exampleobject.txt'

# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをアーカイブに変換します。 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをコールドアーカイブに変換します。 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE}
# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをDeep Cold Archiveに変換します。 
# headers = {'x-oss-storage-classs': oss2.BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE}
# オブジェクトのストレージクラスを変換します。 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers) 

オブジェクトのストレージクラスをArchiveからStandardまたはIAに変換する

次のサンプルコードは、オブジェクトのストレージクラスをArchiveからStandardまたはIAに変換する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
osのインポート
インポート時間
# 環境変数からアクセス資格情報を取得します。 コードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
# オブジェクトのストレージクラスがArchiveであることを確認します。 
object_name = 'exampledir/exampleobject.txt'

# オブジェクトのメタデータを照会します。 
meta = bucket.head_object(object_name)

# オブジェクトを復元します。 オブジェクトの復元に必要な時間は、オブジェクトのサイズによって異なります。 
if meta.resp.headers['x-oss-storage-class'] == oss2.BUCKET_STORAGE_CLASS_ARCHIVE:
    bucket.restore_object(object_name)
    while True:
        meta = bucket.head_object(object_name)
        if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
            time.sleep(5)
        else:
            休憩

# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをStandardに変換します。 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをIAに変換します。 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}

# オブジェクトのストレージクラスを変換します。 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers) 

オブジェクトのストレージクラスをCold ArchiveからStandardまたはIAに変換する

次のサンプルコードは、オブジェクトのストレージクラスをCold ArchiveからStandardまたはIAに変換する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
osのインポート
インポート時間
oss2.modelsからRESTORE_TIER_EXPEDITED、RestoreJobParametersをインポート

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

# この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 
# オブジェクトのストレージクラスがCold Archiveであることを確認します。 
object_name = 'exampledir/exampleobject.txt'

# オブジェクトのメタデータを照会します。 
meta = bucket.head_object(object_name)

# オブジェクトを復元します。 
meta.resp.headers['x-oss-storage-classs'] == oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE:
    # 復元の優先度を指定します。 RESTORE_TIER_EXPEDITEDは、オブジェクトが1時間以内に復元されることを指定します。 
    job_parameters = RestoreJobParameters(RESTORE_TIER_EXPEDITED)
    # オブジェクトが復元された状態を維持できる期間を指定します。 単位:日 
    restore_config = oss2.models.RestoreConfiguration(days=5, job_parameters=job_parameters)
    # bucket.restore_object(object_name, input=restore_config)
    bucket.restore_object(object_name)
    while True:
        meta = bucket.head_object(object_name)
        if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
            time.sleep(5)
        else:
            休憩
# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをStandardに変換します。 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# x-oss-storage-classヘッダーを指定して、オブジェクトのストレージクラスをIAに変換します。 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}

# オブジェクトのストレージクラスを変換します。 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers) 

参考資料

オブジェクトのストレージクラスを変換するために呼び出すことができるAPI操作の詳細については、「CopyObject」をご参照ください。