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

Object Storage Service:オブジェクトのタグ付けの設定

最終更新日:Feb 26, 2024

Object Storage Service (OSS) では、オブジェクトタグを設定してオブジェクトを分類できます。 ライフサイクルルールを設定し、タグに基づいてオブジェクトへのアクセスを制御できます。

背景情報

オブジェクトのタグ付けを設定するときは、次の項目に注意してください。

  • オブジェクトのアップロード時およびアップロード後に、オブジェクトにタグを追加できます。 オブジェクトの既存のタグのキーとして追加するタグに同じキーを指定すると、既存のタグが上書きされます。 オブジェクトにタグを追加する方法の詳細については、「PutObjectTagging」をご参照ください。

  • オブジェクトにタグを追加するには、PutObjectTagging操作を呼び出す権限が必要です。

    スクリプトを使用してカスタムポリシーを作成し、RAMユーザーに必要な権限を付与できます。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

  • オブジェクトの最後に変更された時刻は、オブジェクトのタグが変更されても更新されません。

  • オブジェクトは最大10個のタグを持つことができます。 オブジェクトに追加されるタグには、一意のキーが必要です。

  • タグキーの長さは最大128文字です。 タグ値の長さは最大256文字です。

  • タグキーとタグ値は大文字と小文字を区別します。

  • タグキーとタグ値には、英数字、スペース、および次の特殊文字を使用できます。

    + - = . _ : /

    説明

    HTTPヘッダーにタグを設定し、タグに文字が含まれている場合は、タグキーとタグ値に対してURLエンコードを実行する必要があります。

オブジェクトのタグ付けでは、キーと値のペアを使用してオブジェクトを識別します。 オブジェクトタグの詳細については、「オブジェクトタグ付け」をご参照ください。

使用上の注意

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

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

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

オブジェクトをアップロードするときにオブジェクトにタグを追加する

  • シンプルアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する

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

    # -*-コーディング: utf-8 -*-
    
    oss2のインポート
    oss2.headersからOSS_OBJECT_TAGGINGをインポート
    oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
    
    # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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()
    ヘッダー [OSS_OBJECT_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)
    結果のキーに対してtag_set.tagging_rule:
        print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key])) 
  • マルチパートアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する

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

    # -*-コーディング: utf-8 -*-
    
    osのインポート
    oss2のインポート
    oss2インポートSizedFileAdapterから、determine_part_size
    oss2.modelsからPartInfoをインポート
    oss2.headersからOSS_OBJECT_TAGGINGをインポート
    oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
    
    # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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 (ファイル名)
    # 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()
    ヘッダー [OSS_OBJECT_TAGGING] =タグ付け
    
    # マルチパートアップロードタスクを開始します。 
    # init_multipart_upload操作を呼び出すときにヘッダーを指定して、アップロードするオブジェクトにタグを追加します。 
    upload_id = bucket.init_multipart_upload(object_name, headers=headers).upload_id
    parts = []
    
    # パーツをアップロードします。 
    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.com plete_multipart_upload(object_name, upload_id, parts)
    print('http response status: ', result.status)
    
    # オブジェクトに追加されたタグを表示します。 
    result = bucket.get_object_tagging(object_name)
    結果のキーに対して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() 
  • 追加アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する

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

    # -*-コーディング: utf-8 -*-
    
    oss2のインポート
    oss2.headersからOSS_OBJECT_TAGGINGをインポート
    oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
    
    # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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()
    ヘッダー [OSS_OBJECT_TAGGING] =タグ付け
    
    # オブジェクトを追加します。 タグがオブジェクトに追加されるように、append_object操作を呼び出すときにヘッダーを指定します。 
    # オブジェクトが初めて追加されたときに設定されたタグのみがオブジェクトに追加されます。 
    result = bucket.append_object(object_name, 0, '<yourContent>', headers=headers)
    
    # オブジェクトに追加されたタグを表示します。 
    result = bucket.get_object_tagging(object_name)
    結果のキーに対してtag_set.tagging_rule:
        print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key])) 
  • 再開可能アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する

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

    # -*-コーディング: utf-8 -*-
    
    oss2のインポート
    oss2.headersからOSS_OBJECT_TAGGINGをインポート
    oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
    
    # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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()
    ヘッダー [OSS_OBJECT_TAGGING] =タグ付け
    
    # オブジェクトの長さがmultipart_thresholdパラメーターの値以上の場合、マルチパートアップロードが使用されます。 multipart_thresholdパラメーターはオプションです。 multipart_thresholdのデフォルト値は10 MBです。 storeパラメーターを使用してディレクトリを指定しない場合は、チェックポイント情報を格納するために、HOMEディレクトリにpy-oss-uploadディレクトリを作成します。 
    # resumable_upload操作を呼び出すときにヘッダーを指定して、アップロードするオブジェクトにタグを追加します。 
    oss2.resumable_upload (バケット、object_name、local_file、headers=headers)
    
    result = bucket.get_object_tagging(object_name)
    結果のキーに対してtag_set.tagging_rule:
        print('object tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key])) 

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

既存のオブジェクトにタグがない場合、または追加されたオブジェクトのタグが要件を満たしていない場合は、既存のオブジェクトのタグを追加または変更できます。

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

# -*-コーディング: utf-8 -*-

oss2のインポート
oss2.modelsからインポートタグ付け、TaggingRule
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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=タグ付け (ルール)

# オブジェクトにタグを追加します。 
result = bucket.put_object_tagging(object_name, tagging)
# HTTPステータスコードを照会します。 
print('http response status:', result.status) 

指定したオブジェクトバージョンにタグを追加するか、オブジェクトバージョンのタグを変更する

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

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

説明

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

# -*-コーディング: utf-8 -*-

oss2のインポート
oss2.modelsからインポートタグ付け
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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=タグ付け ()
# オブジェクトタグのキーと値を指定します。 この例では、キーは所有者に設定され、値は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) 

オブジェクトをコピーするときにオブジェクトにタグを追加する

次のいずれかの方法を使用して、オブジェクトをコピーするときにオブジェクトのタグ付けを設定できます。

  • コピー: ソースオブジェクトのタグがコピー先オブジェクトにコピーされます。

  • 置換: ターゲットオブジェクトには、ソースオブジェクトのタグではなく、リクエストで指定されたタグがあります。

次の例では、シンプルコピーモードで1 GB未満、マルチパートコピーモードで1 GBを超えるオブジェクトにタグを追加する方法について説明します。

  • シンプルコピーモードでオブジェクトをコピーするときにオブジェクトにタグを追加する

    次のコードでは、オブジェクトをシンプルコピーモードでコピーするときに、1 GB未満のオブジェクトにタグを追加する方法の例を示します。

    # -*-コーディング: utf-8 -*-
    
    oss2のインポート
    oss2.headersからOSS_OBJECT_TAGGING、OSS_OBJECT_TAGGING_COPY_DIRECTIVEをインポート
    oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
    
    # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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)
    
    # OSS_OBJECT_TAGGING_COPY_DIRECTIVEをCOPYに設定するか、HTTPヘッダーのデフォルト値を保持して、ソースオブジェクトのタグが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に設定し、OSS_OBJECT_TAGGINGで指定されたタグがdest_object_name2オブジェクトに追加されるようにします。 
    headers[OSS_OBJECT_TAGGING_COPY_DIRECTIVE] = 'REPLACE'
    ヘッダー [OSS_OBJECT_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)
    結果のキーに対して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)
    結果のキーに対してtag_set.tagging_rule:
        print('dest1 object tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key]))
    
    # dest_object_name2オブジェクトに追加されたタグを表示します。 dest_object_name2オブジェクトに追加されるタグは、OSS_OBJECT_TAGGINGで指定されたタグです。 
    result = bucket.get_object_tagging(dest_object_name2)
    結果のキーに対してtag_set.tagging_rule:
        print('dest2 object tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key])) 
  • マルチパートコピーモードでオブジェクトをコピーするときにオブジェクトにタグを追加する

    次のコードでは、マルチパートコピーモードでオブジェクトをコピーするときに、1 GBを超えるオブジェクトにタグを追加する方法の例を示します。

    # -*-コーディング: utf-8 -*-
    
    osのインポート
    oss2のインポート
    oss2 import determine_part_sizeから
    oss2.modelsからPartInfoをインポート
    oss2.headersからOSS_OBJECT_TAGGINGをインポート
    oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
    
    # 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
    # バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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)
    プリント ('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()
    ヘッダー [OSS_OBJECT_TAGGING] =タグ付け
    
    # マルチパートアップロードタスクを開始します。 
    # init_multipart_upload操作を呼び出すときにヘッダーを指定して、ターゲットオブジェクトにタグを追加します。 
    upload_id = bucket.init_multipart_upload(dest_object_name, headers=headers).upload_id
    parts = []
    
    # パーツをアップロードします。 
    part_number = 1
    オフセット=0
    オフセット <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.com plete_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)
    結果のキーに対して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)
    結果のキーに対してtag_set.tagging_rule:
        print('dest tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key])) 

シンボリックリンクにタグを追加する

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

# -*-コーディング: utf-8 -*-

oss2のインポート
oss2.headersからOSS_OBJECT_TAGGINGをインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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()
ヘッダー [OSS_OBJECT_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)
結果のキーに対してtag_set.tagging_rule:
    print('tagging key: {}, value: {}'.format(key, result.tag_set.tagging_rule[key])) 

参考資料

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

  • オブジェクトのタグ付けを設定するために呼び出すことができるAPI操作の詳細については、「PutObjectTagging」をご参照ください。