バージョン管理は、バケット内のすべてのオブジェクトに適用されます。 バージョン管理を有効にすると、誤って上書きまたは削除されたオブジェクトを以前のバージョンに復元できます。
前提条件
開始する前に、以下を確認してください:
OSS バケット
バージョン管理状態を設定するための
oss:PutBucketVersioning権限バージョン管理状態を取得するための
oss:GetBucketVersioning権限
権限の付与の詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
注意事項
このトピックの例では、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、対応する内部エンドポイントを使用します。リージョンとエンドポイントの完全な一覧については、「OSS のリージョンとエンドポイント」をご参照ください。
例に示されているアクセス認証情報は、環境変数から読み取られます。詳細については、「アクセス認証情報の設定」をご参照ください。
この例では OSS エンドポイントを使用して OSSClient インスタンスを作成しますが、カスタムドメイン名またはセキュリティトークンサービス (STS) を使用してインスタンスを作成するには、「一般的なシナリオの設定例」をご参照ください。
バケットのバージョン管理状態の設定
次の例では、バケットのバージョン管理状態を有効に設定します。 バージョン管理を一時停止するには、BucketVersioningConfiguration.ENABLED を BucketVersioningConfiguration.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();
}
}
}
}