Object Storage Service (OSS) は、ホットデータからコールドデータまでのさまざまなデータストレージシナリオをカバーするために、標準、低頻度アクセス (IA) 、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブのストレージクラスを提供します。 OSSでは、オブジェクトが作成されると、そのコンテンツを変更することはできません。 オブジェクトのストレージクラスを変換する場合は、Bucket.CopyObjectメソッドを使用してオブジェクトをコピーし、新しいオブジェクトを作成し、新しいオブジェクトのストレージクラスを変換する必要があります。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 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に変換する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
# Make sure that the storage class of the object is Standard or IA.
object_name = 'exampledir/exampleobject.txt'
# Convert the storage class of the object to Archive by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_ARCHIVE.
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# Convert the storage class of the object to Cold Archive by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE.
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE}
# Convert the storage class of the object to Deep Cold Archive by setting the x-oss-storage-class header to BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE
# headers = {'x-oss-storage-class': oss2.models.BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE}
# Convert the storage class of the object.
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)
オブジェクトのストレージクラスをArchiveからStandardまたはIAに変換する
次のサンプルコードは、オブジェクトのストレージクラスをArchiveからStandardまたはIAに変換する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
import time
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
# Make sure that the storage class of the object is Archive.
object_name = 'exampledir/exampleobject.txt'
# Obtain the object metadata.
meta = bucket.head_object(object_name)
# Restore the object. The amount of time required to restore an object varies based on the size of the object.
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:
break
# Convert the storage class of the object to Standard by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_STANDARD.
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# Convert the storage class of the object to IA by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_IA.
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}
# Convert the storage class of the object.
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)
オブジェクトのストレージクラスをCold ArchiveからStandardまたはIAに変換する
次のサンプルコードは、オブジェクトのストレージクラスをCold ArchiveからStandardまたはIAに変換する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
import time
from oss2.models import RESTORE_TIER_EXPEDITED, RestoreJobParameters
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt.
# Make sure that the storage class of the object is Cold Archive.
object_name = 'exampledir/exampleobject.txt'
# Obtain the object metadata.
meta = bucket.head_object(object_name)
# Restore the object.
if meta.resp.headers['x-oss-storage-class'] == oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE:
# Specify the restoration priority. RESTORE_TIER_EXPEDITED specifies that the object is restored within 1 hour.
job_parameters = RestoreJobParameters(RESTORE_TIER_EXPEDITED)
# Specify the duration for which the object can remain in the restored state. Unit: days.
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:
break
# Convert the storage class of the object to Standard by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_STANDARD.
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# Convert the storage class of the object to IA by setting the x-oss-storage-class header to oss2.BUCKET_STORAGE_CLASS_IA.
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}
# Convert the storage class of the object.
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)
関連ドキュメント
オブジェクトのストレージクラスを変換するために呼び出すことができるAPI操作の詳細については、「CopyObject」をご参照ください。