Object Storage Service (OSS) は、ホットデータからコールドデータまでのさまざまなデータストレージシナリオをカバーするために、標準、低頻度アクセス (IA) 、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスを提供します。 このトピックでは、オブジェクトのストレージクラスを変換する方法について説明します。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトのストレージクラスを変換するには、
oss:GetObject
、oss: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」をご参照ください。