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

Object Storage Service:オブジェクトのタグ付けとライフサイクル管理 (Python SDK V1)

最終更新日:Nov 27, 2025

ライフサイクルルールは、プレフィックスまたはオブジェクトタグに基づいてオブジェクトに適用できます。また、ルールが有効になる条件として、プレフィックスとタグの両方を指定することもできます。

説明

タグ条件の場合、キーと値の両方が一致する必要があります。ルールにプレフィックスと複数のオブジェクトタグの両方が含まれている場合、そのルールはプレフィックスと指定されたすべてのタグに一致するオブジェクトにのみ適用されます。

注意事項

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

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

タグベースの一致ルールをライフサイクルルールに追加

次のコードは、タグベースの一致ルールをライフサイクルルールに追加する方法を示しています。

# -*- coding: utf-8 -*-
import oss2
import datetime
from oss2.models import (LifecycleExpiration, LifecycleRule,
                        BucketLifecycle, AbortMultipartUpload,
                        TaggingRule, Tagging, StorageTransition)
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"

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

# 最終更新日から 3 日後にオブジェクトの有効期限が切れるようにルールを設定します。
# ルール名と、照合するオブジェクトのプレフィックスを設定します。
rule1 = LifecycleRule('rule1', 'tests/',
                      # 有効期限ルールを有効にします。
                      status=LifecycleRule.ENABLED,
                      # 最終更新日から 3 日後にオブジェクトの有効期限が切れるように有効期限ルールを設定します。
                      expiration=LifecycleExpiration(days=3))

# 特定の日付より前に作成されたオブジェクトの有効期限が切れるようにルールを設定します。
# ルール名と、照合するオブジェクトのプレフィックスを設定します。
rule2 = LifecycleRule('rule2', 'logging-',
                      # 有効期限ルールを無効にします。
                      status=LifecycleRule.DISABLED,
                      # 特定の日付より前に作成されたオブジェクトの有効期限が切れるように有効期限ルールを設定します。
                      expiration=LifecycleExpiration(created_before_date=datetime.date(2018, 12, 12)))

# 作成から 3 日後にパーツの有効期限が切れるようにルールを設定します。
rule3 = LifecycleRule('rule3', 'tests1/',
                      status=LifecycleRule.ENABLED,
                      abort_multipart_upload=AbortMultipartUpload(days=3))

# 特定の日付より前に作成されたパーツの有効期限が切れるようにルールを設定します。
rule4 = LifecycleRule('rule4', 'logging1-',
                      status=LifecycleRule.DISABLED,
                      abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2018, 12, 12)))

# 照合するオブジェクトのタグを設定します。
tagging_rule = TaggingRule()
tagging_rule.add('key1', 'value1')
tagging_rule.add('key2', 'value2')
tagging = Tagging(tagging_rule)

# 最終更新日から 365 日後にオブジェクトをアーカイブストレージに変換するトランジションルールを設定します。
# rule5 では、照合するオブジェクトのタグが指定されています。このルールは、key1=value1 と key2=value2 の両方のタグを持つオブジェクトにのみ適用されます。
rule5 = LifecycleRule('rule5', 'logging2-',
                      status=LifecycleRule.ENABLED,
                      storage_transitions=[StorageTransition(days=365, storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)],
                      tagging = tagging)

lifecycle = BucketLifecycle([rule1, rule2, rule3, rule4, rule5])

bucket.put_bucket_lifecycle(lifecycle)

ライフサイクルルール内のタグ情報の表示

次のコードは、ライフサイクルルール内のタグ情報を表示する方法を示しています。

# -*- 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"

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

# ライフサイクルルールを表示します。
lifecycle = bucket.get_bucket_lifecycle()

for rule in lifecycle.rules:
    # パーツの有効期限ルールを表示します。
    if rule.abort_multipart_upload is not None:
        print('id={0}, prefix={1}, tagging={2}, status={3}, days={4}, created_before_date={5}'
                .format(rule.id, rule.prefix, rule.tagging, rule.status,
                    rule.abort_multipart_upload.days,
                    rule.abort_multipart_upload.created_before_date))

    # オブジェクトの有効期限ルールを表示します。
    if rule.expiration is not None:
        print('id={0}, prefix={1}, tagging={2}, status={3}, days={4}, created_before_date={5}'
                .format(rule.id, rule.prefix, rule.tagging, rule.status,
                    rule.expiration.days,
                    rule.expiration.created_before_date))
    # トランジションルールを表示します。
    if len(rule.storage_transitions) > 0: 
        storage_trans_info = ''
        for storage_rule in rule.storage_transitions:
            storage_trans_info += 'days={0}, created_before_date={1}, storage_class={2} **** '.format(
                storage_rule.days, storage_rule.created_before_date, storage_rule.storage_class)

        print('id={0}, prefix={1}, tagging={2}, status={3},, StorageTransition={4}'
                .format(rule.id, rule.prefix, rule.tagging, rule.status, storage_trans_info))

関連ドキュメント

  • ライフサイクルルールの完全なサンプルコードについては、GitHub の例をご参照ください。

  • ライフサイクルルールを設定する API 操作の詳細については、「PutBucketLifecycle」をご参照ください。

  • ライフサイクルルールを表示する API 操作の詳細については、「GetBucketLifecycle」をご参照ください。