通过java sdk更改AWS S3对象上的存储类

时间:2018-05-22 18:58:29

标签: amazon-s3 aws-sdk aws-java-sdk

我是AWS的新手,我需要为s3存储桶中的现有对象设置存储类..可以找到使用java SDK执行此操作的方法

2 个答案:

答案 0 :(得分:2)

在任何情况下都不需要使用弃用的方法。 在我的情况下需要更新现有对象:

   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);

答案 1 :(得分:0)

使用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 );

唯一奇怪的是,您需要在changeObjectStorageClass的实例上使用AmazonS3Client - 不推荐使用接口AmazonS3上的版本。