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

Object Storage Service:オブジェクトにタグを追加する

最終更新日:Jun 29, 2025

CloudBox の Object Storage Service (OSS) では、CloudBox バケットの OSS 内のオブジェクトを分類するために、オブジェクトにタグを設定できます。 タグに基づいて、CloudBox バケットの OSS 内のオブジェクトのライフサイクルルールと RAM ポリシーを設定できます。

タグ付けルール

オブジェクトには、キーと値のペアでタグが付けられます。 新しいオブジェクトのアップロード時、またはバケット内に保存されている既存のオブジェクトのどちらにもタグを追加できます。 

  • 1 つのオブジェクトに、一意のキーを持つ最大 10 個のタグを追加できます。

  • キーの最大長は 128 文字、値の最大長は 256 文字です。 どちらも大文字と小文字が区別されます。

  • タグの有効な文字セットには、大文字と小文字、数字、スペース、および次の記号が含まれます。

    + - = . _ : /

    HTTP ヘッダーを介してタグを設定する場合、特にタグに特殊文字または英数字以外の文字が含まれている場合は、タグキーとタグ値の両方を URL エンコードする必要があります。 

使用上の注意

  • CloudBox バケットの OSS の所有者と、oss-cloudbox:PutObjectTagging 権限を持つユーザーのみが、バケット内のオブジェクトのタグを読み取り、タグを書き込むことができます。

  • シンプルアップロード、マルチパートアップロード、追加アップロード、コピー操作を実行するときに、オブジェクトにタグを追加できます。 アップロードされたオブジェクトにタグを追加することもできます。

  • オブジェクトのタグを編集しても、最終更新タイムスタンプには影響しません。

シナリオ

  • タグに基づいてライフサイクルルールを設定する

    ストレージリソースを効率的に管理し、コストを最適化するために、定期的に生成され、長期保存を必要としないオブジェクトに特定のタグを適用し、ライフサイクルルールを設定して、これらのタグ付きオブジェクトを定義済みの間隔で自動的に削除できます。

    たとえば、次のライフサイクルルールを設定して、プレフィックスが dir1 で、タグが key1:value1 のオブジェクトを、これらのオブジェクトが最後に更新されてから 30 日後に削除できます。

    <LifecycleConfiguration>
     <Rule>
      <ID>rule1</ID>
      <Prefix>dir1</Prefix>
      <Tag><Key>key1</Key><Value>value1</Value></Tag>
      <Status>Enabled</Status>
      <Expiration>
        <Days>30</Days>
      </Expiration>
     </Rule>
    </LifecycleConfiguration>
  • 特定のタグを持つオブジェクトにアクセスするための RAM ユーザーの承認

    RAM ポリシーを設定して、examplebucket という名前の CloudBox バケットの OSS 内で、タグが status:ok および key1:value1 であるオブジェクトにアクセスするための権限を RAM ユーザーに付与できます。 クラウドボックスの ID は cb-f8z7yvzgwfkl9q0h**** です。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "oss-cloudbox:GetObject"
                ],
                "Resource": [
                    "acs:oss-cloudbox:*:174649585760****:cloudbox/cb-f8z7yvzgwfkl9q0h****/bucket/examplebucket/*"
                ],
                "Condition": {
                    "StringEquals": {
                        "oss-cloudbox:ExistingObjectTag/status":"ok",
                        "oss-cloudbox:ExistingObjectTag/key1":"value1"
                    }
                }
            }
        ]
    }

手順

OSS SDK の使用

シンプルアップロードを実行してオブジェクトをアップロードするときに、オブジェクトのタグを設定するには、Java 用 OSS SDK のみを使用できます。 Java 用 OSS SDK のバージョンは 3.15.0 以降である必要があります。 次のサンプルコードは、シンプルアップロードを実行してローカルファイルを CloudBox バケットの OSS にアップロードするときに、Java 用 OSS SDK を使用してオブジェクトのタグを設定する方法の例を示しています。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;
import java.io.ByteArrayInputStream;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;

public class Demo {
    public static void main(String[] args) throws Exception {
        // CloudBox バケットの OSS のデータエンドポイントを指定します。
        String endpoint = "https://cb-f8z7yvzgwfkl9q0h****.cn-hangzhou.oss-cloudbox.aliyuncs.com";
        // 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // CloudBox バケットの OSS の名前を指定します。 例: examplebucket。
        String bucketName = "examplebucket";
        // CloudBox バケットの OSS が配置されているリージョンを指定します。
        String region = "cn-hangzhou";
        // クラウドボックスの ID を指定します。
        String cloudBoxId = "cb-f8z7yvzgwfkl9q0h****";
        // オブジェクトの完全なパスを指定します。 完全なパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。
        String objectName = "exampledir/exampleobject.txt";

        // OSSClient インスタンスを作成します。
        // OSSClient が不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
        conf.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(new DefaultCredentialProvider(credentialsProvider.getCredentials()))
                .clientConfiguration(conf)
                .region(region)
                .cloudBoxId(cloudBoxId)
                .build();

        try {
            Map<String, String> tags = new HashMap<String, String>();
            // オブジェクトタグのキーと値を指定します。 たとえば、キーを owner に、値を John に設定します。
            tags.put("owner", "John");
            tags.put("type", "document");

            // HTTP ヘッダーにタグを指定します。
            ObjectMetadata metadata = new ObjectMetadata();
            metadata.setObjectTagging(tags);

            // アップロードするオブジェクトのコンテンツを指定します。
            String content = "yourContent";
            ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()), metadata);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

ossutil の使用

ossutil を使用して、オブジェクトのタグを設定できます。 詳細については、「put-object-tagging」をご参照ください。

OSS API の使用

ビジネスで高度なカスタマイズが必要な場合は、RESTful API を直接呼び出すことができます。 API を直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutObjectTagging」をご参照ください。