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

Object Storage Service:バージョン管理 (Java SDK V1)

最終更新日:Mar 21, 2026

バージョン管理は、バケット内のすべてのオブジェクトに適用されます。 バージョン管理を有効にすると、誤って上書きまたは削除されたオブジェクトを以前のバージョンに復元できます。

前提条件

開始する前に、以下を確認してください:

  • OSS バケット

  • バージョン管理状態を設定するための oss:PutBucketVersioning 権限

  • バージョン管理状態を取得するための oss:GetBucketVersioning 権限

権限の付与の詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。

注意事項

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

  • 例に示されているアクセス認証情報は、環境変数から読み取られます。詳細については、「アクセス認証情報の設定」をご参照ください。

  • この例では OSS エンドポイントを使用して OSSClient インスタンスを作成しますが、カスタムドメイン名またはセキュリティトークンサービス (STS) を使用してインスタンスを作成するには、「一般的なシナリオの設定例」をご参照ください。

バケットのバージョン管理状態の設定

次の例では、バケットのバージョン管理状態を有効に設定します。 バージョン管理を一時停止するには、BucketVersioningConfiguration.ENABLEDBucketVersioningConfiguration.SUSPENDED に置き換えます。

重要

バージョン管理状態を変更する前に、データレプリケーションタスクが実行されておらず、バケットに保持ポリシーが設定されていないことを確認してください。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;

public class Demo {
    public static void main(String[] args) throws Exception {
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        EnvironmentVariableCredentialsProvider credentialsProvider =
                CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        String bucketName = "examplebucket";
        String region = "cn-hangzhou";

        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            BucketVersioningConfiguration configuration = new BucketVersioningConfiguration();
            configuration.setStatus(BucketVersioningConfiguration.ENABLED);
            SetBucketVersioningRequest request = new SetBucketVersioningRequest(bucketName, configuration);
            ossClient.setBucketVersioning(request);
        } catch (OSSException oe) {
            System.out.println("OSS エラー — リクエストは OSS に到達しましたが、拒否されました。");
            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("クライアントエラー — OSS と通信できませんでした (例:ネットワークの問題)。");
            System.out.println("Error message: " + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

バケットのバージョン管理状態の取得

次の例では、バケットのバージョン管理状態を取得します。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;

public class Demo {
    public static void main(String[] args) throws Exception {
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        EnvironmentVariableCredentialsProvider credentialsProvider =
                CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        String bucketName = "examplebucket";
        String region = "cn-hangzhou";

        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            BucketVersioningConfiguration versionConfiguration = ossClient.getBucketVersioning(bucketName);
            System.out.println("Bucket versioning status: " + versionConfiguration.getStatus());
        } catch (OSSException oe) {
            System.out.println("OSS エラー — リクエストは OSS に到達しましたが、拒否されました。");
            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("クライアントエラー — OSS と通信できませんでした (例:ネットワークの問題)。");
            System.out.println("Error message: " + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

次のステップ