【发布时间】:2018-11-01 15:17:09
【问题描述】:
我是 AWS 新手,我需要为 s3 存储桶中的现有对象设置存储类.. 可以找到使用 java SDK 的方法
【问题讨论】:
标签: amazon-s3 aws-sdk aws-java-sdk
我是 AWS 新手,我需要为 s3 存储桶中的现有对象设置存储类.. 可以找到使用 java SDK 的方法
【问题讨论】:
标签: amazon-s3 aws-sdk aws-java-sdk
changeObjectStorageClass 看起来很简单:
AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();
PutObjectRequest request = new PutObjectRequest(bucketName,
fileObjKeyName, new File(fileName));
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("binary/octet-stream");
request.setMetadata(metadata);
s3Client.putObject(request);
s3Client.changeObjectStorageClass(bucketName, fileObjKeyName,
StorageClass.ReducedRedundancy );
唯一奇怪的部分是您需要在AmazonS3Client 的实例上使用changeObjectStorageClass - 接口上的版本AmazonS3 已弃用。
【讨论】:
在任何情况下都不需要使用不推荐使用的方法。 在我的情况下需要更新现有对象:
AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new ProfileCredentialsProvider())
.build();
CopyObjectRequest copyRequest = new CopyObjectRequest(sourceBucketName, sourceKey, destinationBucketName, destinationKey)
.withStorageClass(StorageClass.ReducedRedundancy);
s3Client.copyObject(copyRequest);
【讨论】: