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

Object Storage Service:オブジェクトタグの設定 (Python SDK V1)

最終更新日:Nov 27, 2025

OSS は、バケット内のオブジェクトを分類するためのオブジェクトタグ付けをサポートしています。同じタグを持つオブジェクトに対して、ライフサイクルルールやアクセス権限を設定できます。

注意事項

  • オブジェクトタグを設定する前に、この機能について理解しておいてください。詳細については、「オブジェクトタグ付け」をご参照ください。

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

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

  • オブジェクトタグを設定するには、oss:PutObjectTagging 権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。

オブジェクトのアップロード時のタグ追加

  • シンプルアップロード中のタグ追加

    次のコードは、シンプルアップロード中にオブジェクトにタグを追加する方法を示しています。

    # -*- coding: utf-8 -*-
    
    import oss2
    from oss2.headers import OSS_OBJECT_TAGGING
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    # バケット名を入力します。
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
    # オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
    object_name = 'exampledir/exampleobject.txt'
    
    # タギング文字列を設定します。
    tagging = "k1=v1&k2=v2&k3=v3"
    
    # タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
    k4 = "k4+-="
    v4 = "+-=._:/"
    tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)
    
    # HTTP ヘッダーにタグ情報を設定します。
    headers = dict()
    headers[OSS_OBJECT_TAGGING] = tagging
    
    # put_object 操作を呼び出すときにヘッダーを指定して、アップロードされたオブジェクトにタグを追加します。
    result = bucket.put_object(object_name, 'content', headers=headers)
    print('http response status: ', result.status)
    
    # オブジェクトタグを表示します。
    result = bucket.get_object_tagging(object_name)
    for key in result.tag_set.tagging_rule:
        print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
  • マルチパートアップロード中のタグ追加

    次のコードは、マルチパートアップロード中にオブジェクトにタグを追加する方法を示しています。

    # -*- coding: utf-8 -*-
    
    import os
    import oss2
    from oss2 import SizedFileAdapter, determine_part_size
    from oss2.models import PartInfo
    from oss2.headers import OSS_OBJECT_TAGGING
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    # バケット名を入力します。
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
    # オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
    object_name = 'exampledir/exampleobject.txt'
    # ローカルファイルの完全なパスを入力します。たとえば、D:\\localpath\\examplefile.txt と入力します。
    # パスなしで examplefile.txt などのファイル名のみを指定した場合、ファイルはサンプルプログラムが配置されているプロジェクトのローカルパスからアップロードされます。
    filename = 'D:\\localpath\\examplefile.txt'
    
    total_size = os.path.getsize(filename)
    # determine_part_size メソッドはパートサイズを決定します。
    part_size = determine_part_size(total_size, preferred_size=100 * 1024)
    
    # タギング文字列を設定します。
    tagging = "k1=v1&k2=v2&k3=v3"
    
    # タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
    k4 = "k4+-="
    v4 = "+-=._:/"
    tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)
    
    # HTTP ヘッダーにタグ情報を設定します。
    headers = dict()
    headers[OSS_OBJECT_TAGGING] = tagging
    
    # マルチパートアップロードを初期化します。
    # init_multipart_upload 操作を呼び出すときにヘッダーを指定して、アップロードされたオブジェクトにタグを追加します。
    upload_id = bucket.init_multipart_upload(object_name, headers=headers).upload_id
    parts = []
    
    # パートを 1 つずつアップロードします。
    with open(filename, 'rb') as fileobj:
        part_number = 1
        offset = 0
        while offset < total_size:
            num_to_upload = min(part_size, total_size - offset)
            # SizedFileAdapter(fileobj, size) メソッドは、新しいファイルオブジェクトを生成し、追加操作の開始位置を再計算します。
            result = bucket.upload_part(object_name, upload_id, part_number,
                                        SizedFileAdapter(fileobj, num_to_upload))
            parts.append(PartInfo(part_number, result.etag))
    
            offset += num_to_upload
            part_number += 1
    
    # マルチパートアップロードを完了します。
    result = bucket.complete_multipart_upload(object_name, upload_id, parts)
    print('http response status: ', result.status)
    
    # オブジェクトタグを表示します。
    result = bucket.get_object_tagging(object_name)
    for key in result.tag_set.tagging_rule:
        print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
    
    # マルチパートアップロードを検証します。
    with open(filename, 'rb') as fileobj:
        assert bucket.get_object(object_name).read() == fileobj.read()
  • 追加アップロード中のタグ追加

    次のコードは、追加アップロード中にオブジェクトにタグを追加する方法を示しています。

    # -*- coding: utf-8 -*-
    
    import oss2
    from oss2.headers import OSS_OBJECT_TAGGING
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    # バケット名を入力します。
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
    # オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
    object_name = 'exampledir/exampleobject.txt'
    
    # タギング文字列を設定します。
    tagging = "k1=v1&k2=v2&k3=v3"
    
    # タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
    k4 = "k4+-="
    v4 = "+-=._:/"
    tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)
    
    # HTTP ヘッダーにタグ情報を設定します。
    headers = dict()
    headers[OSS_OBJECT_TAGGING] = tagging
    
    # オブジェクトを追加します。append_object 操作を呼び出すときにヘッダーを指定して、オブジェクトにタグを追加します。
    # append_object の最初の呼び出しで設定されたタグのみが有効になります。後続の追加操作で追加されたタグは無視されます。
    result = bucket.append_object(object_name, 0, '<yourContent>', headers=headers)
    
    # オブジェクトタグを表示します。
    result = bucket.get_object_tagging(object_name)
    for key in result.tag_set.tagging_rule:
        print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
  • 再開可能なアップロード中のタグ追加

    次のコードは、再開可能なアップロード中にオブジェクトにタグを追加する方法を示しています。

    # -*- coding: utf-8 -*-
    
    import oss2
    from oss2.headers import OSS_OBJECT_TAGGING
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    # バケット名を入力します。
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
    # オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
    object_name = 'exampledir/exampleobject.txt'
    # ローカルファイルの完全なパスを入力します。ローカルパスを指定しない場合、ファイルはサンプルプログラムが配置されているプロジェクトのローカルパスからアップロードされます。
    local_file = 'D:\\localpath\\examplefile.txt'
    
    # タギング文字列を設定します。
    tagging = "k1=v1&k2=v2&k3=v3"
    
    # タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
    k4 = "k4+-="
    v4 = "+-=._:/"
    tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)
    
    # HTTP ヘッダーにタグ情報を設定します。
    headers = dict()
    headers[OSS_OBJECT_TAGGING] = tagging
    
    # ファイルサイズがオプションの multipart_threshold パラメーターの値以上の場合、マルチパートアップロードが使用されます。デフォルト値は 10 MB です。store パラメーターを使用してディレクトリを指定しない場合、HOME ディレクトリに .py-oss-upload ディレクトリが作成され、チェックポイント情報が保存されます。
    # resumable_upload 操作を呼び出すときにヘッダーを指定して、アップロードされたオブジェクトにタグを追加します。
    oss2.resumable_upload(bucket, object_name, local_file, headers=headers)
    
    result = bucket.get_object_tagging(object_name)
    for key in result.tag_set.tagging_rule:
        print('object tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))

既存オブジェクトのタグの追加または変更

オブジェクトのアップロード時にタグを追加しなかった場合、または既存のタグが要件を満たしていない場合は、オブジェクトのアップロード後にタグを追加または変更できます。

次のコードは、既存のオブジェクトのタグを追加または変更する方法を示しています。

# -*- coding: utf-8 -*-

import oss2
from oss2.models import Tagging, TaggingRule
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# バケット名を入力します。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
object_name = 'exampledir/exampleobject.txt'

# タギングルールを作成します。
rule = TaggingRule()
rule.add('key1', 'value1')
rule.add('key2', 'value2')

# タグを作成します。
tagging = Tagging(rule)

# タグを設定します。
result = bucket.put_object_tagging(object_name, tagging)
# HTTP ステータスコードを表示します。
print('http response status:', result.status)

特定のオブジェクトバージョンのタグの追加または変更

バージョン管理が有効になっているバケットでは、バージョン ID を指定することで、オブジェクトの特定のバージョンのタグを追加または変更できます。

次のコードは、特定のオブジェクトバージョンのタグを追加または変更する方法を示しています。

説明

バージョン ID の取得方法の詳細については、「オブジェクトのリスト (Python SDK V1)」をご参照ください。

# -*- coding: utf-8 -*-

import oss2
from oss2.models import Tagging
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# バケット名を入力します。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
object_name = 'exampledir/exampleobject.txt'
# オブジェクトのバージョン ID を入力します。たとえば、CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm**** です。
version_id = 'CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****'

tagging = Tagging()
# 各オブジェクトタグのキーと値を指定します。たとえば、キーを owner に、値を John に設定します。
tagging.tag_set.add('owner', 'John')
tagging.tag_set.add('type', 'document')

params = dict()
params['versionId'] = version_id

bucket.put_object_tagging(object_name, tagging, params=params)

オブジェクトのコピー時のオブジェクトタグ設定

オブジェクトをコピーするときに、コピー先オブジェクトのタグをどのように設定するかを指定できます。有効な値は次のとおりです。

  • Copy (デフォルト): コピー元オブジェクトからコピー先オブジェクトにタグをコピーします。

  • Replace: コピー元オブジェクトのタグを無視し、リクエストで指定されたタグをコピー先オブジェクトに適用します。

次の例は、オブジェクトをコピーするときのオブジェクトタグの設定方法を示しています。1 GB 未満のオブジェクトにはシンプルコピーが使用され、1 GB を超えるオブジェクトにはマルチパートコピーが使用されます。

  • シンプルコピー中のタグ設定

    次のコードは、1 GB 未満のオブジェクトをコピーするときのオブジェクトタグの設定方法を示しています。

    # -*- coding: utf-8 -*-
    
    import oss2
    from oss2.headers import OSS_OBJECT_TAGGING, OSS_OBJECT_TAGGING_COPY_DIRECTIVE
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    # バケット名を入力します。
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
    # コピー元オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、srcexampledir/exampleobject.txt と入力します。
    src_object_name = 'srcexampledir/exampleobject.txt'
    # コピー先オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、destexampledir1/exampleobject.txt と入力します。
    dest_object_name1 = 'destexampledir1/exampleobject.txt'
    # コピー先オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、destexampledir2/exampleobject.txt と入力します。
    dest_object_name2 = 'destexampledir2/exampleobject.txt'
    
    # タギング文字列を設定します。
    tagging = "k1=v1&k2=v2&k3=v3"
    
    # タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
    k4 = "k4+-="
    v4 = "+-=._:/"
    tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)
    
    # HTTP ヘッダーの OSS_OBJECT_TAGGING_COPY_DIRECTIVE パラメーターを COPY に設定するか、未指定のままにします。これにより、コピー先オブジェクト dest_object_name1 はコピー元オブジェクトと同じタグを持つようになります。
    headers=dict()
    headers[OSS_OBJECT_TAGGING_COPY_DIRECTIVE] = 'COPY'
    bucket.copy_object(bucket.bucket_name, src_object_name, dest_object_name1, headers=headers)
    
    # HTTP ヘッダーの OSS_OBJECT_TAGGING_COPY_DIRECTIVE パラメーターを REPLACE に設定します。これにより、コピー先オブジェクト dest_object_name2 のタグは headers[OSS_OBJECT_TAGGING] で指定されたタグに設定されます。
    headers[OSS_OBJECT_TAGGING_COPY_DIRECTIVE] = 'REPLACE'
    headers[OSS_OBJECT_TAGGING] = tagging
    bucket.copy_object(bucket.bucket_name, src_object_name, dest_object_name2, headers=headers)
    
    # src_object_name のタグを表示します。
    result = bucket.get_object_tagging(src_object_name)
    for key in result.tag_set.tagging_rule:
        print('src tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
    
    # dest_object_name1 のタグを表示します。dest_object_name1 のタグは src_object_name のタグと同じです。
    result = bucket.get_object_tagging(dest_object_name1)
    for key in result.tag_set.tagging_rule:
        print('dest1 object tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
    
    # dest_object_name2 のタグを表示します。dest_object_name2 のタグは headers[OSS_OBJECT_TAGGING] で指定されたタグです。
    result = bucket.get_object_tagging(dest_object_name2)
    for key in result.tag_set.tagging_rule:
        print('dest2 object tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
  • マルチパートコピー中のタグ設定

    次のコードは、1 GB を超えるオブジェクトをコピーするときのオブジェクトタグの設定方法を示しています。

    # -*- coding: utf-8 -*-
    
    import os
    import oss2
    from oss2 import determine_part_size
    from oss2.models import PartInfo
    from oss2.headers import OSS_OBJECT_TAGGING
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    # バケット名を入力します。
    bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
    # コピー元オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、srcexampledir/exampleobject.txt と入力します。
    src_object_name = 'srcexampledir/exampleobject.txt'
    # コピー先オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、destexampledir/exampleobject.txt と入力します。
    dest_object_name = 'destexampledir/exampleobject.txt'
    
    # コピー元オブジェクトのサイズを取得します。
    head_info = bucket.head_object(src_object_name)
    total_size = head_info.content_length
    print('src object size:', total_size)
    
    # determine_part_size メソッドはパートサイズを決定します。
    part_size = determine_part_size(total_size, preferred_size=100 * 1024)
    print('part_size:', part_size)
    
    # タギング文字列を設定します。
    tagging = "k1=v1&k2=v2&k3=v3"
    
    # タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
    k4 = "k4+-="
    v4 = "+-=._:/"
    tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)
    
    # HTTP ヘッダーにタグ情報を設定します。
    headers = dict()
    headers[OSS_OBJECT_TAGGING] = tagging
    
    # マルチパートアップロードを初期化します。
    # init_multipart_upload 操作を呼び出すときにヘッダーを指定して、コピー先オブジェクトにタグを追加します。
    upload_id = bucket.init_multipart_upload(dest_object_name, headers=headers).upload_id
    parts = []
    
    # パートを 1 つずつアップロードします。
    part_number = 1
    offset = 0
    while offset < total_size:
        num_to_upload = min(part_size, total_size - offset)
        end = offset + num_to_upload - 1;
        result = bucket.upload_part_copy(bucket.bucket_name, src_object_name, (offset, end), dest_object_name, upload_id, part_number)
        #パート情報を保存します。
        parts.append(PartInfo(part_number, result.etag))
    
        offset += num_to_upload
        part_number += 1
    
    # マルチパートアップロードを完了します。
    result = bucket.complete_multipart_upload(dest_object_name, upload_id, parts)
    
    # オブジェクトのメタデータを取得します。
    head_info = bucket.head_object(dest_object_name)
    
    # コピー先オブジェクトのサイズを表示します。
    dest_object_size = head_info.content_length
    print('dest object size:', dest_object_size)
    
    # サイズをコピー元オブジェクトと比較します。
    assert dest_object_size == total_size
    
    # コピー元オブジェクトのタグを表示します。
    result = bucket.get_object_tagging(src_object_name)
    for key in result.tag_set.tagging_rule:
        print('src tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
    
    # コピー先オブジェクトのタグを表示します。
    result = bucket.get_object_tagging(dest_object_name)
    for key in result.tag_set.tagging_rule:
        print('dest tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))                   

シンボリックリンクのタグ設定

次のコードは、シンボリックリンクにタグを設定する方法を示しています。

# -*- coding: utf-8 -*-

import oss2
from oss2.headers import OSS_OBJECT_TAGGING
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# バケット名を入力します。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')
# オブジェクトの完全なパスを入力します。完全なパスにバケット名を含めることはできません。たとえば、exampledir/exampleobject.txt と入力します。
object_name = 'exampledir/exampleobject.txt'
# シンボリックリンクの完全なパスを入力します。たとえば、shortcut/myobject.txt と入力します。
symlink_name = 'shortcut/myobject.txt'

# タギング文字列を設定します。
tagging = "k1=v1&k2=v2&k3=v3"

# タグに特殊文字が含まれている場合は、タグのキーと値を URL エンコードします。
k4 = "k4+-="
v4 = "+-=._:/"
tagging += "&" + oss2.urlquote(k4) + "=" + oss2.urlquote(v4)

# HTTP ヘッダーにタグ情報を設定します。
headers = dict()
headers[OSS_OBJECT_TAGGING] = tagging

# シンボリックリンクを作成します。
# put_symlink 操作を呼び出すときにヘッダーを指定して、シンボリックリンクにタグを追加します。
result = bucket.put_symlink(object_name, symlink_name, headers=headers)
print('http response status: ', result.status)

# シンボリックリンクのタグを表示します。
result = bucket.get_object_tagging(symlink_name)
for key in result.tag_set.tagging_rule:
    print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))

関連ドキュメント

  • オブジェクトタグ設定の完全なサンプルコードについては、GitHub の例をご参照ください。

  • オブジェクトタグを設定する API 操作の詳細については、「PutObjectTagging」をご参照ください。