Object Storage Service (OSS) は、ホットデータからコールドデータまでのさまざまなデータストレージシナリオに対応するために、標準、低頻度アクセス (IA)、アーカイブ、コールドアーカイブ、ディープコールドアーカイブというストレージタイプを提供しています。OSS では、オブジェクトが作成されると、そのコンテンツを変更することはできません。オブジェクトのストレージタイプを変換するには、Bucket.CopyObject メソッドを使用してオブジェクトをコピーし、新しいオブジェクトを作成して、新しいオブジェクトのストレージタイプを変換する必要があります。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用しています。OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報を設定する方法の詳細については、「アクセス認証情報を設定する (Python SDK V1)」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化 (Python SDK V1)」をご参照ください。
オブジェクトのストレージタイプを変換するには、
oss:GetObject、oss:PutObject、およびoss:RestoreObjectの権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。
例
最小ストレージ期間が経過する前に、IA、アーカイブ、コールドアーカイブ、またはディープコールドアーカイブオブジェクトのストレージタイプを変換するか、オブジェクトを削除すると、最小ストレージ期間よりも短い期間保存されたオブジェクトのストレージ使用量に対して課金されます。詳細については、「最小ストレージ期間よりも短い期間保存されたオブジェクトの課金方法」をご参照ください。
オブジェクトのストレージタイプを標準または IA からアーカイブ、コールドアーカイブ、またはディープコールドアーカイブに変換する
次のサンプルコードは、オブジェクトのストレージタイプを標準または IA からアーカイブ、コールドアーカイブ、またはディープコールドアーカイブに変換する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、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"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
# オブジェクトのストレージタイプが標準または IA であることを確認してください。
object_name = 'exampledir/exampleobject.txt'
# x-oss-storage-class ヘッダーを oss2.BUCKET_STORAGE_CLASS_ARCHIVE に設定して、オブジェクトのストレージタイプをアーカイブに変換します。
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# x-oss-storage-class ヘッダーを oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE に設定して、オブジェクトのストレージタイプをコールドアーカイブに変換します。
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE}
# x-oss-storage-class ヘッダーを BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE に設定して、オブジェクトのストレージタイプをディープコールドアーカイブに変換します。
# headers = {'x-oss-storage-class': oss2.models.BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE}
# オブジェクトのストレージタイプを変換します。
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers) オブジェクトのストレージタイプをアーカイブから標準または IA に変換する
次のサンプルコードは、オブジェクトのストレージタイプをアーカイブから標準または IA に変換する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
import time
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、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"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
# オブジェクトのストレージタイプがアーカイブであることを確認してください。
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:
break
# x-oss-storage-class ヘッダーを oss2.BUCKET_STORAGE_CLASS_STANDARD に設定して、オブジェクトのストレージタイプを標準に変換します。
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# x-oss-storage-class ヘッダーを oss2.BUCKET_STORAGE_CLASS_IA に設定して、オブジェクトのストレージタイプを IA に変換します。
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}
# オブジェクトのストレージタイプを変換します。
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)オブジェクトのストレージタイプをコールドアーカイブから標準または IA に変換する
次のサンプルコードは、オブジェクトのストレージタイプをコールドアーカイブから標準または IA に変換する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
import time
from oss2.models import RESTORE_TIER_EXPEDITED, RestoreJobParameters
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、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"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトの完全なパスを指定します。完全なパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
# オブジェクトのストレージタイプがコールドアーカイブであることを確認してください。
object_name = 'exampledir/exampleobject.txt'
# オブジェクトのメタデータを取得します。
meta = bucket.head_object(object_name)
# オブジェクトを解凍します。
if meta.resp.headers['x-oss-storage-class'] == 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)
while True:
meta = bucket.head_object(object_name)
if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
time.sleep(5)
else:
break
# x-oss-storage-class ヘッダーを oss2.BUCKET_STORAGE_CLASS_STANDARD に設定して、オブジェクトのストレージタイプを標準に変換します。
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# x-oss-storage-class ヘッダーを oss2.BUCKET_STORAGE_CLASS_IA に設定して、オブジェクトのストレージタイプを IA に変換します。
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}
# オブジェクトのストレージタイプを変換します。
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)関連情報
オブジェクトのストレージタイプを変換するために呼び出すことができる API 操作の詳細については、「CopyObject」をご参照ください。